ALTER DATABASE - Amazon Redshift

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 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.

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 sample_table1 y sample_table2 de la base de datos sample_integration_db de la integración sin ETL.

ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLES sample_table1, 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;

En el siguiente ejemplo se actualizan todas las tablas incluidas en el ErrorState en el esquema sample_schema.

ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;