Amazon Redshift non supporterà più l'uso delle UDF Python dopo il 30 giugno 2026. Inizieremo ad applicarlo per fasi. Per ulteriori informazioni sulla fine del ciclo di vita e sulle opzioni di migrazione di Python, consulta il post del
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
ALTER DATABASE
Cambia gli attributi di un database.
Privilegi richiesti
Per utilizzare ALTER DATABASE, è richiesto uno dei seguenti privilegi.
-
Superuser
-
Utenti con il privilegio ALTER DATABASE
-
Proprietario del database
Sintassi
ALTER DATABASE database_name { RENAME TO new_name | OWNER TO new_owner | [ CONNECTION LIMIT { limit | UNLIMITED } ] [ COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI } ] [ ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE } ] | INTEGRATION { REFRESH { { ALL | INERROR } TABLES [ IN SCHEMA schema [, ...] ] | TABLE schema.table [, ...] } | SET [ QUERY_ALL_STATES [=] { TRUE | FALSE } ] [ ACCEPTINVCHARS [=] { TRUE | FALSE } ] [ REFRESH_INTERVAL <interval> ] [ TRUNCATECOLUMNS [=] { TRUE | FALSE } ] [ HISTORY_MODE [=] {TRUE | FALSE} [ FOR { {ALL} TABLES [IN SCHEMA schema [, ...] ] | TABLE schema.table [, ...] } ] ] } }
Parameters
- database_name
-
Nome del database da modificare. In genere, si modifica un database a cui non si è attualmente connessi; in ogni caso, le modifiche hanno effetto solo nelle sessioni successive. Puoi modificare il proprietario del database corrente, ma non è possibile rinominarlo:
alter database tickit rename to newtickit; ERROR: current database may not be renamed - RENAME TO
-
Rinomina il database specificato. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori. Non puoi rinominare i database dev, padb_harvest, template0, template1 o sys:internal e non puoi rinominare il database corrente. Solo il proprietario del database o un superuser può rinominare un database; i proprietari che non sono utenti con privilegi avanzati devono inoltre avere il privilegio CREATEDB.
- new_name
-
Nuovo nome del database.
- OWNER TO
-
Cambia il proprietario del database specificato. Puoi modificare il proprietario del database corrente o di un altro database. Solo un utente con privilegi avanzati può cambiare il proprietario.
- new_owner
-
Nuovo proprietario del database. Il nuovo proprietario deve essere un utente di database esistente con privilegi di scrittura. Per ulteriori informazioni sui privilegi degli utenti, consultare GRANT.
- CONNECTION LIMIT { limit | UNLIMITED }
-
Numero massimo di connessioni di database che gli utenti possono aprire contemporaneamente. Il limite non viene applicato per gli utenti con privilegi avanzati. Utilizza la parola chiave UNLIMITED per consentire il numero massimo di connessioni simultanee. È possibile che venga applicato anche un limite al numero di connessioni per ciascun utente. Per ulteriori informazioni, consultare CREA UTENTE. Il valore predefinito è UNLIMITED. Per visualizzare le connessioni correnti, eseguire una query sulla vista di sistema STV_SESSIONS.
Nota
Se si applicano entrambi i limiti di connessione utente e database, deve essere disponibile uno slot di connessione inutilizzato che rientra in entrambi i limiti quando un utente tenta di connettersi.
- COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI }
-
Una clausola che specifica se la ricerca o il confronto tra stringhe fa distinzione tra maiuscole e minuscole o meno.
Puoi modificare la distinzione tra maiuscole e minuscole del database corrente anche se è vuoto.
Per modificare la distinzione tra maiuscole e minuscole, devi disporre dell’autorizzazione ALTER per il database corrente. Gli utenti con privilegi avanzati o i proprietari di database con l’autorizzazione CREATE DATABASE possono anche modificare la distinzione tra maiuscole e minuscole per i database.
CASE_SENSITIVE e CS sono intercambiabili e producono gli stessi risultati. Allo stesso modo CASE_INSENSITIVE e CI sono intercambiabili e producono gli stessi risultati.
Per controllare le regole di confronto correnti di un database, usa la DB_COLLATION funzione.
- ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE }
-
Una clausola che specifica il livello di isolamento utilizzato quando vengono eseguite query su un database. Per ulteriori informazioni sui livello di isolamento, consulta Livelli di isolamento in Amazon Redshift.
-
Isolamento SNAPSHOT: fornisce un livello di isolamento con protezione contro i conflitti di aggiornamento ed eliminazione.
-
Isolamento SERIALIZABLE: fornisce la serializzabilità completa per le transazioni simultanee.
Considerare quanto segue durante la modifica del livello di isolamento di un database:
-
Per modificare il livello di isolamento del database, è necessario disporre del privilegio utente con privilegi avanzati o del privilegio CREATE DATABASE per il database corrente.
-
Non è possibile modificare il livello di isolamento del database
dev. -
Non è possibile modificare il livello di isolamento all'interno di un blocco di transazioni.
-
Il comando alter isolation level non riesce se altri utenti sono connessi al database.
-
Il comando alter isolation level può modificare le impostazioni del livello di isolamento della sessione corrente.
-
- INTEGRATION
-
Modifica un database di integrazione Zero-ETL.
- REFRESH {{ ALL | INERROR } TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]}
-
Una clausola che specifica se Amazon Redshift aggiorna tutte le tabelle o le tabelle con errori nello schema o nella tabella specificati. L'aggiornamento attiverà la replica completa delle tabelle nello schema o nella tabella specificati dal database di origine.
Per ulteriori informazioni, consulta Zero-ETL le integrazioni nella Amazon Redshift Management Guide. Per ulteriori informazioni sugli stati di integrazione, consulta SVV_INTEGRATION_TABLE_STATE e SVV_INTEGRATION.
- QUERY_ALL_STATES [=] { TRUE | FALSE }
-
La clausola QUERY_ALL_STATES imposta se è possibile eseguire query sulle tabelle di integrazione Zero-ETL in tutti gli stati (
Synced,Failed,ResyncRequiredeResyncInitiated). Per impostazione predefinita puoi eseguire query su una tabella di integrazione Zero-ETL solo nello statoSynced. - ACCEPTINVCHARS [=] { TRUE | FALSE }
-
La clausola ACCEPTINVCHARS imposta se le tabelle di integrazione Zero-ETL continuano con l’importazione quando per il tipo di dati VARCHAR vengono rilevati caratteri non validi. Quando vengono rilevati caratteri non validi, il carattere non valido viene sostituito con un carattere
?predefinito. - REFRESH_INTERVAL <interval>
-
La clausola REFRESH_INTERVAL imposta l'intervallo di tempo approssimativo, in secondi, che Amazon Redshift attende dopo il completamento di un ciclo di aggiornamento per iniziare quello successivo. Ogni ciclo aggiorna i dati dalla fonte di integrazione Zero-ETL al database di destinazione, applicando tutte le modifiche accumulate dalla fine del ciclo precedente. Un valore pari a 0 avvia il ciclo successivo non appena termina quello precedente (replica quasi in tempo reale). Un valore più elevato si allontana ulteriormente dai cicli, riducendo il sovraccarico di aggiornamento a scapito dell'aggiornamento immediato dei dati. Amazon Redshift attende tra un ciclo e l'altro solo quando l'inserimento è stato raggiunto; quando le modifiche si accumulano più velocemente di quanto possano essere applicate, i cicli vengono eseguiti senza attese.
intervalPuò essere impostato su 0-432.000 secondi (5 giorni) per le integrazioni zero-ETL il cui tipo di origine è Aurora MySQL, Aurora PostgreSQL o i motori RDS supportati e il valore predefinito è 0. Per le integrazioni Amazon DynamoDB Zero-ETL,intervalpuò essere impostato su 900—432.000 secondi (15 minuti—5 giorni) e il valore predefinito è 900 secondi (15 minuti); 0 non è supportato.Nota
Per le integrazioni ad alta intensità di scrittura diverse da DynamoDB che generano un volume elevato di modifiche, imposta REFRESH_INTERVAL su un valore piccolo diverso da zero (ad esempio, 60-120 secondi). Il raggruppamento di più modifiche in ogni ciclo riduce il sovraccarico di calcolo complessivo della replica.
Per ulteriori informazioni sulla creazione di database con integrazioni Zero-ETL, consulta Creazione di database di destinazione in Amazon Redshift nella Guida alla gestione di Amazon Redshift.
- TRUNCATECOLUMNS [=] {TRUE | FALSE}
-
La clausola TRUNCATECOLUMNS imposta se le tabelle di integrazione Zero-ETL continuano con l’importazione quando i valori per gli attributi della colonna VARCHAR o della colonna SUPER superano il limite. Quando è
TRUE, i valori vengono troncati per adattarsi alla colonna e i valori degli attributi JSON in overflow vengono troncati per adattarsi alla colonna SUPER. - HISTORY_MODE [=] {TRUE | FALSE} [ FOR { {ALL} TABLES [IN SCHEMA schema [, ...]] | TABLE schema.table [, ...]} ]
-
Una clausola che specifica se Amazon Redshift imposterà la modalità cronologia per tutte le tabelle o le tabelle nello schema specificato che partecipano all’integrazione Zero-ETL. Questa opzione è applicabile solo ai database creati per l’integrazione Zero-ETL.
La clausola HISTORY_MODE può essere impostata su
TRUEoFALSE. Il valore predefinito èFALSE. L’attivazione e la disattivazione della modalità cronologia sono applicabili solo alle tabelle che si trovano nello statoSynced. Per informazioni su HISTORY_MODE, consulta Modalità cronologia nella Guida alla gestione di Amazon Redshift.
Note per l'utilizzo
I comandi di ALTER DATABASE si applicano alle sessioni successive e non alle sessioni correnti. Devi riconnetterti al database modificato per vedere l'effetto della modifica.
Esempi
L'esempio seguente rinomina un database denominato TICKIT_SANDBOX in TICKIT_TEST:
alter database tickit_sandbox rename to tickit_test;
L'esempio seguente modifica il proprietario del database TICKIT (il database corrente) in DWUSER:
alter database tickit owner to dwuser;
L'esempio seguente modifica la distinzione tra maiuscole e minuscole del database sampledb:
ALTER DATABASE sampledb COLLATE CASE_INSENSITIVE;
Nell'esempio seguente viene modificato un database denominato sampledb con livello di isolamento SNAPSHOT.
ALTER DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
L'esempio seguente aggiorna le tabelle schema1.sample_table1 e schema2.sample_table2 del database sample_integration_db nell'integrazione Zero-ETL.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH TABLE schema1.sample_table1, schema2.sample_table2;
L'esempio seguente aggiorna tutte le tabelle sincronizzate e non riuscite nell'integrazione Zero-ETL.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH ALL tables;
L’esempio seguente imposta l’intervallo di aggiornamento per le integrazioni Zero-ETL su 600 secondi.
ALTER DATABASE sample_integration_db INTEGRATION SET REFRESH_INTERVAL 600;
L’esempio seguente aggiorna tutte le tabelle con ErrorState presenti nello schema sample_schema.
ALTER DATABASE sample_integration_db INTEGRATION REFRESH INERROR TABLES in SCHEMA sample_schema;
L’esempio seguente attiva la modalità cronologia per la tabella myschema.table1.
ALTER DATABASE sample_integration_db INTEGRATION SET HISTORY_MODE = true FOR TABLE myschema.table1
L’esempio seguente attiva la modalità cronologia per tutte le tabelle in myschema.
ALTER DATABASE sample_integration_db INTEGRATION SET HISTORY_MODE = true for ALL TABLES IN SCHEMA myschema