ALTER DATABASE
Altera os atributos de um banco de dados.
Privilégios obrigatórios
Para usar ALTER DATABASE, um dos privilégios a seguir é necessário.
Superusuário
Usuários com o privilégio ALTER DATABASE.
Proprietário do banco de dados
Sintaxe
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
-
Nome do banco de dados a ser alterado. Normalmente, você deve alterar um banco de dados ao qual não estiver conectado. De qualquer maneira, as alterações somente entram em vigor nas próximas sessões. É possível alterar o proprietário do banco de dados atual, mas não é possível renomeá-lo:
alter database tickit rename to newtickit; ERROR: current database may not be renamed
- RENAME TO
-
Renomeia o banco de dados especificado. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores. Você não pode renomear os bancos de dados dev, padb_harvest, template0, template1 ou sys:internal, além do banco de dados atual. Somente o proprietário do banco de dados ou um superuser pode renomear o banco de dados. Proprietários que não forem superusuários também devem ter o privilégio CREATEDB.
- new_name
-
Novo nome do banco de dados.
- OWNER TO
-
Altera o proprietário do banco de dados especificado. É possível alterar o proprietário do banco de dados atual ou de outro banco de dados. Somente um superusuário pode alterar o proprietário.
- novo_proprietário
-
Novo proprietário do banco de dados. O novo proprietário deve ser um usuário existente de bancos de dados com privilégios de gravação. Para obter mais informações sobre privilégios do usuário, consulte GRANT.
- CONNECTION LIMIT { limite | UNLIMITED }
-
Número máximo de conexões de banco de dados que os usuários podem abrir simultaneamente. Não há aplicação de limite para superusuários. Use a palavra-chave UNLIMITED para permitir o número máximo de conexões simultâneas. Um limite no número de conexões para cada usuário também pode ser aplicável. Para obter mais informações, consulte CRIAR USUÁRIO. O valor padrão é UNLIMITED. Para visualizar as conexões atuais, consulte a exibição STV_SESSIONS do sistema.
nota
Se limites de usuário e de conexão de banco de dados forem aplicáveis, um slot de conexão não utilizado que esteja dentro de ambos os limites deve estar disponível quando um usuário tenta se conectar.
- COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }
-
Uma cláusula que especifica se a pesquisa ou comparação de string diferencia maiúsculas e minúsculas ou não.
É possível alterar a distinção entre maiúsculas e minúsculas do banco de dados atual, que está vazio.
Você deve ter o privilégio do banco de dados atual para alterar a distinção entre maiúsculas e minúsculas. Os superusuários ou proprietários de bancos de dados com o privilégio CREATE DATABASE também podem alterar a distinção.
- ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }
-
Uma cláusula que especifica o nível de isolamento usado quando são executadas consultas em um banco de dados.
Isolamento SERIALIZABLE: fornece serialização total para transações simultâneas. Para obter mais informações, consulte Isolamento serializável.
Isolamento SNAPSHOT: fornece um nível de isolamento com proteção contra conflitos de atualização e exclusão.
Para obter mais informações sobre níveis de isolamento, consulte CREATE DATABASE.
Considere os seguintes itens ao alterar o nível de isolamento de um banco de dados:
Você deve ter o privilégio de superusuário ou CREATE DATABASE para o banco de dados atual a fim de alterar o nível de isolamento do banco de dados.
Você não pode alterar o nível de isolamento do banco de dados
dev
.Você não pode alterar o nível de isolamento em um bloco de transação.
O comando para alterar o nível de isolamento falhará se outros usuários estiverem conectados ao banco de dados.
O comando para alterar o nível de isolamento pode alterar as configurações de nível de isolamento da sessão atual.
- INTEGRATION REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}
Uma cláusula que especifica se o Amazon Redshift vai atualizar todas as tabelas ou as tabelas com erros na tabela ou no esquema especificado. A atualização vai acionar as tabelas na tabela ou no esquema especificado para serem totalmente replicadas pelo banco de dados de origem.
Para obter mais informações, consulte Working with zero-ETL integrations no Guia de gerenciamento do Amazon Redshift. Para obter mais informações sobre estados de integração, consulte SVV_INTEGRATION_TABLE_STATE e SVV_INTEGRATION.
- INTEGRATION {SET REFRESH_INTERVAL <interval>}
-
A cláusula SET REFRESH_INTERVAL define o intervalo de tempo aproximado, em segundos, para atualizar os dados da origem de ETL zero para o banco de dados de destino. O valor pode ser definido de 0 a 432.000 segundos (5 dias) para integrações ETL zero cujo tipo de fonte é o Aurora MySQL, o Aurora PostgreSQL ou o RDS para MySQL.
Consulte mais informações sobre a criação de bancos de dados com integrações ETL zero em Criar bancos de dados de destino no Amazon Redshift no Guia de gerenciamento do Amazon Redshift.
Observações de uso
Comandos ALTER DATABASE são aplicáveis a sessões subsequentes, e não às atuais. Você precisa se reconectar ao banco de dados alterado para visualizar as alterações implementadas.
Exemplos
O exemplo a seguir renomeia o banco de dados denominado TICKIT_SANDBOX para TICKIT_TEST:
alter database tickit_sandbox rename to tickit_test;
O exemplo a seguir altera o proprietário do banco de dados TICKIT (o banco de dados atual) para DWUSER:
alter database tickit owner to dwuser;
O seguinte exemplo altera a distinção entre maiúsculas de minúsculas do banco de dados sampledb:
ALTER DATABASE sampledb COLLATE CASE_INSENSITIVE;
O exemplo a seguir altera um banco de dados chamado sampledb
com o nível de isolamento SNAPSHOT.
ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
O exemplo a seguir atualiza as tabelas schema1.sample_table1
e schema2.sample_table2
no banco de dados sample_integration_db
na integração ETL zero.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLES schema1.sample_table1, schema2.sample_table2;
O exemplo a seguir atualiza todas as tabelas sincronizadas e com falha na integração ETL zero.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH ALL tables;
O exemplo a seguir define o intervalo de atualização para integrações ETL zero como 600 segundos.
ALTER DATABASE sample_integration_db INTEGRATION SET REFRESH_INTERVAL 600;
O exemplo a seguir atualiza todas as tabelas presentes em ErrorState
no esquema sample_schema
.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;