ALTER DATABASE
Cambia los atributos de una base de datos.
Privilegios necesarios
Para utilizar ALTER DATABASE, se requiere uno de los siguientes privilegios.
Superusuario
Usuarios con el privilegio ALTER DATABASE
Propietario de la base de datos
Sintaxis
ALTER DATABASE database_name { RENAME TO new_name | OWNER TO new_owner | CONNECTION LIMIT { limit | UNLIMITED } | COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } | ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT } | INTEGRATION {{SET REFRESH_INTERVAL <interval>} | REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}} }
Parámetros
- database_name
-
Nombre de la base de datos que se modificará. Por lo general, modifica una base de datos a la que no está actualmente conectado. De todos modos, los cambios entran en vigor únicamente en sesiones posteriores. Puede cambiar el propietario de la base de datos actual, pero no puede cambiar su nombre:
alter database tickit rename to newtickit; ERROR: current database may not be renamed
- RENAME TO
-
Cambia el nombre de la base de datos especificada. Para obtener más información acerca de los nombres válidos, consulte Nombres e identificadores. No puede cambiar el nombre de las bases de datos dev, padb_harvest, template0, template1 o sys:internal, ni puede cambiar el nombre de la base de datos actual. Solo el propietario de la base de datos o un superuser puede cambiar el nombre de una base de datos; los propietarios que no son superusuarios deben tener también el privilegio CREATEDB.
- new_name
-
Nuevo nombre de la base de datos.
- OWNER TO
-
Cambia el propietario de la base de datos especificada. Puede cambiar el propietario de la base de datos actual o alguna otra base de datos. Solo un superusuario puede cambiar el propietario.
- new_owner
-
Nuevo propietario de la base de datos. El nuevo propietario debe ser un usuario de la base de datos existente con privilegios de escritura. Para obtener más información acerca de los privilegios del usuario, consulte GRANT.
- CONNECTION LIMIT { limit | UNLIMITED }
-
La cantidad máxima de conexiones a la base de datos que los usuarios pueden tener abiertas al mismo tiempo. Este límite no se aplica a los superusuarios. Use la palabra clave UNLIMITED para permitir la cantidad máxima de conexiones simultáneas. También puede aplicarse un límite de la cantidad de conexiones de cada usuario. Para obtener más información, consulte CREAR USUARIO. El valor predeterminado es UNLIMITED. Para ver las conexiones actuales, consulte la vista del sistema STV_SESSIONS.
nota
Si se aplican los límites de conexión tanto para usuarios como para bases de datos, debe haber una ranura de conexión sin utilizar disponible dentro de ambos límites cuando un usuario intenta conectarse.
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
Se trata de una cláusula que especifica si la búsqueda o la comparación de cadenas distinguen o no entre letras mayúsculas y minúsculas.
Puede modificar la distinción entre mayúsculas y minúsculas de la base de datos actual, que está vacía.
Debe contar con el privilegio sobre la base de datos actual para cambiar la distinción entre letras mayúsculas y minúsculas. Los superusuarios o propietarios de bases de datos con el privilegio CREATE DATABASE también pueden cambiar la capacidad de distinguir entre mayúsculas y minúsculas de las base de datos.
- ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }
-
Una cláusula que especifica el nivel de aislamiento utilizado cuando las consultas se ejecutan en una base de datos.
Aislamiento SERIALIZABLE: proporciona serialización completa para transacciones simultáneas. Para obtener más información, consulte Aislamiento serializable.
Aislamiento SNAPSHOT: proporciona un nivel de aislamiento con protección contra conflictos de actualización y eliminación.
Para obtener más información acerca de los niveles de aislamiento, consulte CREATE DATABASE.
Tenga en cuenta los siguientes aspectos al modificar el nivel de aislamiento de una base de datos:
Debe contar con el privilegio de superusuario o CREATE DATABASE en la base de datos actual para cambiar el nivel de aislamiento de la base de datos.
No puede modificar el nivel de aislamiento de la base de datos de
dev
.No puede modificar el nivel de aislamiento dentro de un bloque de transacción.
El comando alter isolation level produce un error si otros usuarios están conectados a la base de datos.
El comando alter isolation level puede modificar la configuración del nivel de aislamiento de la sesión actual.
- INTEGRATION REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}
Una cláusula que especifica si Amazon Redshift actualizará todas las tablas o las que contengan errores en el esquema o la tabla especificados. La actualización hará que las tablas del esquema o tabla especificados se repliquen completamente desde la base de datos de origen.
Para obtener información, consulte Uso de integraciones sin ETL en la Guía de administración de Amazon Redshift. Para obtener más información acerca de los estados de integración, consulte SVV_INTEGRATION_TABLE_STATE y SVV_INTEGRATION.
- INTEGRATION {SET REFRESH_INTERVAL <interval>}
-
La cláusula SET REFRESH_INTERVAL establece el intervalo de tiempo aproximado, en segundos, para actualizar los datos del origen sin ETL a la base de datos de destino. El
interval
se puede establecer de 0 a 432 000 segundos (5 días) para las integraciones sin ETL cuyo tipo de origen sea Aurora MySQL, Aurora PostgreSQL o RDS para MySQL. Para las integraciones sin ETL de Amazon DynamoDB, se puede configurar elinterval
entre 900 y 432 000 segundos (15 minutos y 5 días).Para obtener más información sobre la creación de bases de datos con integraciones sin ETL, consulte Creación de bases de datos de destino en Amazon Redshift en la Guía de administración de Amazon Redshift.
Notas de uso
Los comandos ALTER DATABASE se aplican en sesiones posteriores, no en sesiones actuales. Debe volver a conectarse a la base de datos modificada para ver el efecto del cambio.
Ejemplos
En el siguiente ejemplo, se cambia el nombre de una base de datos denominada TICKIT_SANDBOX a TICKIT_TEST:
alter database tickit_sandbox rename to tickit_test;
En el siguiente ejemplo, se cambia el propietario de la base de datos TICKIT (la base de datos actual) a DWUSER:
alter database tickit owner to dwuser;
En el siguiente ejemplo, se cambia la distinción entre letras mayúsculas y minúsculas de la base de datos sampledb:
ALTER DATABASE sampledb COLLATE CASE_INSENSITIVE;
En el siguiente ejemplo se modifica una base de datos denominada sampledb
con nivel de aislamiento SNAPSHOT.
ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
En el siguiente ejemplo se actualizan las tablas schema1.sample_table1
y schema2.sample_table2
de la base de datos sample_integration_db
de la integración sin ETL.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLE schema1.sample_table1, schema2.sample_table2;
En el siguiente ejemplo se actualizan todas las tablas sincronizadas y con errores de la integración sin ETL.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH ALL tables;
El siguiente ejemplo establece el intervalo de actualización para las integraciones sin ETL en 600 segundos.
ALTER DATABASE sample_integration_db INTEGRATION SET REFRESH_INTERVAL 600;
En el siguiente ejemplo se actualizan todas las tablas incluidas en el ErrorState
del esquema sample_schema
.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;