Aggiornamento automatico dei file di fuso orario Oracle - Amazon Relational Database Service

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

Aggiornamento automatico dei file di fuso orario Oracle

Con l'TIMEZONE_FILE_AUTOUPGRADEopzione, puoi aggiornare il file del fuso orario corrente alla versione più recente sulla tua istanza DB RDS for Oracle.

Panoramica dei file di fuso orario di Oracle

Un file di fuso orario di Oracle Database include le seguenti informazioni:

  • Differenza rispetto all'ora UTC (Coordinated Universal Time)

  • Tempi di transizione per l'ora legale

  • Abbreviazioni per ora standard e ora legale

Oracle Database fornisce più versioni dei file di fuso orario. Quando si crea un database Oracle in un ambiente On-Premise, si sceglie la versione del file di fuso orario. Per ulteriori informazioni, consulta Choosing a Time Zone File (Scelta di un file di fuso orario) in Oracle Database Globalization Support Guide (Guida al supporto per la globalizzazione di Oracle Database).

Se le regole per l'ora legale cambiano, Oracle pubblica nuovi file di fuso orario e Oracle rilascia questi nuovi file di fuso orario indipendentemente dalla pianificazione degli aggiornamenti trimestrali (Release Updates) e delle Release Update Revisions (RUR). I file del fuso orario si trovano sull'host del database nella directory $ORACLE_HOME/oracore/zoneinfo/. I nomi dei file di fuso orario utilizzano il formato DStVversione, come in DSTv35.

In che modo il file di fuso orario influisce sul trasferimento dei dati

In Oracle Database, il tipo di dati TIMESTAMP WITH TIME ZONE memorizza i dati di timestamp e fuso orario. Dati con il tipo di dati TIMESTAMP WITH TIME ZONE utilizzano le regole nella versione del file di fuso orario associato. Pertanto, TIMESTAMP WITH TIME ZONE i dati esistenti vengono modificati quando si aggiorna il file del fuso orario.

Possono verificarsi problemi quando si trasferiscono i dati tra database che utilizzano versioni diverse del file del fuso orario. Ad esempio, se si importano dati da un database di origine con una versione del file con fuso orario superiore a quella del database di destinazione, il database genera l'ORA-39405errore. In precedenza si ovviava all'errore utilizzando una delle seguenti tecniche:

  • Crea un'istanza database RDS per Oracle con il file di fuso orario desiderato, esporta i dati dal database di origine e quindi importali nel nuovo database.

  • Utilizza AWS DMS o la replica logica per migrare i dati.

Aggiornamenti automatici con l'opzione TIMEZONE_FILE_AUTOUPGRADE

Quando il gruppo di opzioni collegato all'istanza DB di RDS for Oracle include l'TIMEZONE_FILE_AUTOUPGRADEopzione, RDS aggiorna automaticamente i file del fuso orario. Garantendo che i database Oracle utilizzino la stessa versione del file con fuso orario, si evitano procedure manuali dispendiose in termini di tempo quando si spostano i dati tra ambienti diversi. L'opzione TIMEZONE_FILE_AUTOUPGRADE supporta sia i database container (CDB) che quelli non CDB.

Quando aggiungi l'opzione TIMEZONE_FILE_AUTOUPGRADE al gruppo di opzioni, puoi scegliere se aggiungerla immediatamente o durante la finestra di manutenzione. Dopo che l'istanza DB ha applicato la nuova opzione, RDS verifica se è possibile installare un file di versione DStv più recente. L'impostazione di DSTvversione di destinazione dipende da quanto segue:

  • La versione secondaria del motore attualmente in esecuzione sulla tua istanza database

  • La versione secondaria del motore a cui desideri aggiornare la tua istanza database

Ad esempio, la versione corrente del file del fuso orario potrebbe essere DStv33. Quando RDS applica l'aggiornamento al gruppo di opzioni, potrebbe determinare che DStv34 è attualmente disponibile nel file system dell'istanza DB. RDS aggiornerà quindi automaticamente il file del fuso orario a DStv34.

Per trovare le versioni dell'ora legale disponibili negli aggiornamenti di rilascio RDS supportati, consulta le patch nelle Note di rilascio per Amazon Relational Database Service (Amazon RDS) per Oracle. Ad esempio, la versione 19.0.0.0.ru-2022-10.rur-2022-10.r1 elenca la patch 34533061: RDBMS - DSTV39 UPDATE - TZDATA2022C.

Strategie per aggiornare il file del fuso orario

L'aggiornamento del motore DB e l'aggiunta dell'TIMEZONE_FILE_AUTOUPGRADEopzione a un gruppo di opzioni sono operazioni separate. L'aggiunta dell'TIMEZONE_FILE_AUTOUPGRADEopzione avvia l'aggiornamento del file del fuso orario se ne è disponibile uno più recente. I seguenti comandi vengono eseguiti (vengono visualizzate solo le opzioni pertinenti) immediatamente o nella finestra di manutenzione successiva:

  • Aggiorna il tuo motore DB solo utilizzando il seguente comando CLI RDS:

    modify-db-instance --engine-version name ...
  • Aggiungi l'TIMEZONE_FILE_AUTOUPGRADEopzione solo utilizzando il seguente comando CLI:

    add-option-to-option-group --option-group-name name --options OptionName=TIMEZONE_FILE_AUTOUPGRADE ...
  • Aggiorna il tuo motore DB e aggiungi un nuovo gruppo di opzioni all'istanza utilizzando il seguente comando CLI:

    modify-db-instance --engine-version name --option-group-name name ...

La strategia di aggiornamento dipende dal fatto che si desideri aggiornare il database e il file del fuso orario insieme o eseguire solo una di queste operazioni. Tieni presente che se aggiorni il tuo gruppo di opzioni e poi aggiorni il motore DB in operazioni API separate, è possibile che sia attualmente in corso un aggiornamento del file del fuso orario durante l'aggiornamento del motore DB.

Per gli esempi in questa sezione si assume quanto riportato di seguito:

  • Non hai ancora aggiunto nulla TIMEZONE_FILE_AUTOUPGRADE al gruppo di opzioni attualmente associato alla tua istanza DB.

  • L'istanza database utilizza il database versione 19.0.0.0.ru-2019-07.rur-2019-07.r1 e il file di fuso orario DSTv33.

  • Il file di sistema dell'istanza database include il file DSTv34.

  • L'aggiornamento di rilascio 19.0.0.0.ru-2022-10.rur-2022-10.r1 include DSTv35.

Per aggiornare il file di fuso orario, è possibile utilizzare le seguenti strategie.

Aggiornamento del file di fuso orario senza aggiornare il motore

In questo scenario, il database utilizza DSTv33, ma è disponibile DSTv34 nel file system dell'istanza database. Vuoi aggiornare il file del fuso orario utilizzato dalla tua istanza database da DSTv33 a DSTv34, ma non vuoi aggiornare il motore a una nuova versione secondaria, che include DSTv35.

In un add-option-to-option-group comando, aggiungi TIMEZONE_FILE_AUTOUPGRADE al gruppo di opzioni utilizzato dall'istanza DB. Specifica se vuoi aggiungere l'opzione immediatamente o durante la finestra di manutenzione. Dopo aver applicato l'TIMEZONE_FILE_AUTOUPGRADEopzione, RDS effettua le seguenti operazioni:

  1. Verifica la presenza di una nuova versione dell'ora legale.

  2. Determina che DStv34 è disponibile nel file system.

  3. Aggiorna immediatamente il file del fuso orario.

Aggiornamento della versione del file del fuso e del motore di database

In questo scenario, il database utilizza DSTv33, ma è disponibile DSTv34 nel file system dell'istanza database. Desideri aggiornare il motore di database alla versione secondaria 19.0.0.0.ru-2022-10.rur-2022-10.r1, che include DSTv35, e il file del fuso orario a DSTv35 durante l'aggiornamento del motore. Pertanto, il tuo obiettivo è saltare DSTv34 e aggiornare i file del fuso orario direttamente a DSTv35.

Per aggiornare contemporaneamente il motore e il file del fuso orario, esegui modify-db-instance con le --engine-version opzioni --option-group-name and. È possibile eseguire il comando immediatamente o rimandarlo alla finestra di manutenzione. In --option-group-name, specifica un gruppo di opzioni che includa l'TIMEZONE_FILE_AUTOUPGRADEopzione. Per esempio:

aws rds modify-db-instance --db-instance-identifier my-instance \ --engine-version new-version \ ----option-group-name og-with-timezone-file-autoupgrade \ --apply-immediately

RDS inizia ad aggiornare il motore alla versione 19.0.0.0.ru-2022-10.rur-2022-10.r1. Dopo aver applicato l'TIMEZONE_FILE_AUTOUPGRADEopzione, RDS verifica la presenza di una nuova versione DST, verifica che DStv35 sia disponibile in 19.0.0.0.ru-2022-10.rur-2022-10.r1 e avvia immediatamente l'aggiornamento a DStv35.

Per aggiornare immediatamente il motore e quindi aggiornare il file del fuso orario, esegui le operazioni in sequenza:

  1. Aggiorna il tuo motore DB solo utilizzando il seguente comando CLI:

    aws rds modify-db-instance \ --db-instance-identifier my-instance \ --engine-version new-version \ --apply-immediately
  2. Aggiungi l'TIMEZONE_FILE_AUTOUPGRADEopzione al gruppo di opzioni collegato alla tua istanza utilizzando il seguente comando CLI:

    aws rds add-option-to-option-group \ --option-group-name og-in-use-by-your-instance \ --options OptionName=TIMEZONE_FILE_AUTOUPGRADE \ --apply-immediately

Aggiornamento della versione del motore di database senza aggiornare il file del fuso orario

In questo scenario, il database utilizza DSTv33, ma è disponibile DSTv34 nel file system dell'istanza database. Vuoi aggiornare il motore di database alla versione 19.0.0.0.ru-2022-10.rur-2022-10.r1, che include DSTv35, ma mantenere DSTv33 per il file del fuso orario. Puoi scegliere questa strategia per i seguenti motivi:

  • I tuoi dati non utilizzano il tipo di dati TIMESTAMP WITH TIME ZONE.

  • I tuoi dati utilizzano il tipo di dati TIMESTAMP WITH TIME ZONE, ma i dati non sono interessati dalle modifiche del fuso orario.

  • Si desidera posticipare l'aggiornamento del file di fuso orario perché non è possibile tollerare il tempo di inattività aggiuntivo.

La strategia dipende da quale delle seguenti condizioni sono vere:

  • L'istanza database non è associata a un gruppo di opzioni che include TIMEZONE_FILE_AUTOUPGRADE. Nel modify-db-instance comando, non specificate un nuovo gruppo di opzioni in modo che RDS non aggiorni il file del fuso orario.

  • L'istanza DB è attualmente associata a un gruppo di opzioni che includeTIMEZONE_FILE_AUTOUPGRADE. Con un solo modify-db-instance comando, associa l'istanza DB a un gruppo di opzioni che non include TIMEZONE_FILE_AUTOUPGRADE e aggiorna il motore di database a 19.0.0.0.ru-2022-10.rur-2022-10.r1.

Tempo di inattività durante l'aggiornamento del file di fuso orario

Quando RDS aggiorna il file di fuso orario, i dati che utilizzano TIMESTAMP WITH TIME ZONE potrebbero cambiare e in questo caso, è opportuno tenere in considerazione il tempo di inattività.

avvertimento

Se aggiungi l'opzione TIMEZONE_FILE_AUTOUPGRADE, l'aggiornamento del motore potrebbe avere tempi di inattività prolungati. L'aggiornamento dei dati del fuso orario per un database di grandi dimensioni potrebbe richiedere ore o addirittura giorni.

La durata dell'aggiornamento del file di fuso orario dipende da fattori come i seguenti:

  • La quantità di dati TIMESTAMP WITH TIME ZONE nel database

  • La configurazione dell'istanza database

  • La classe dell’istanza database

  • La configurazione dell’archivio

  • La configurazione del database

  • Le impostazioni dei parametri di database

Possono verificarsi ulteriori tempi di inattività quando si eseguono le seguenti operazioni:

  • Aggiungere l'opzione al gruppo di opzioni quando l'istanza database utilizza un file di fuso orario non aggiornato

  • Aggiornare il modulo di gestione di database Oracle quando la nuova versione del motore contiene una nuova versione del file di fuso orario

Nota

Durante l'aggiornamento del file di fuso orario, RDS per Oracle chiama PURGE DBA_RECYCLEBIN.

Preparazione all'aggiornamento del file di fuso orario

L'aggiornamento di un file di fuso orario prevede due fasi distinte: preparazione e aggiornamento. Anche se non richiesto, è fortemente consigliabile eseguire la fase di preparazione. In questo passaggio, è possibile scoprire quali dati saranno interessati dall'esecuzione della procedura PL/SQL DBMS_DST.FIND_AFFECTED_TABLES. Per ulteriori informazioni sulla finestra di preparazione, consulta Aggiornamento del file di fuso orario e del timestamp con dati di fuso orario nella documentazione di Oracle Database.

Per preparare l'aggiornamento del file di fuso orario
  1. Connettersi al database Oracle usando un client SQL.

  2. Determinare la versione corrente del file di fuso orario utilizzata.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Determinare la versione più recente del file di fuso orario disponibile nell'istanza database.

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Determinare la dimensione totale delle tabelle con colonne di tipo TIMESTAMP WITH LOCAL TIME ZONE o TIMESTAMP WITH TIME ZONE.

    SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
  5. Determinare i nomi e le dimensioni dei segmenti con colonne di tipo TIMESTAMP WITH LOCAL TIME ZONE o TIMESTAMP WITH TIME ZONE.

    SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE') GROUP BY OWNER, SEGMENT_NAME;
  6. Eseguire la fase di preparazione.

    • La procedura DBMS_DST.CREATE_AFFECTED_TABLE crea una tabella per l'archiviazione dei dati interessati. Passare il nome di questa tabella alla procedura DBMS_DST.FIND_AFFECTED_TABLES. Per ulteriori informazioni, consulta Procedura CREATE_AFFECTED_TABLE nella documentazione del database Oracle.

    • La procedura CREATE_ERROR_TABLE crea una tabella per registrare gli errori. Per ulteriori informazioni, consulta Procedura CREATE_ERROR_TABLE nella documentazione del database Oracle.

    Nell'esempio seguente vengono create le tabelle dei dati e degli errori interessati e vengono trovate tutte le tabelle interessate.

    EXEC DBMS_DST.CREATE_ERROR_TABLE('my_error_table') EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table') EXEC DBMS_DST.BEGIN_PREPARE(new_version); EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table', TRUE, 'my_error_table'); EXEC DBMS_DST.END_PREPARE; SELECT * FROM my_affected_table; SELECT * FROM my_error_table;
  7. Eseguire una query sulle tabelle interessate e di errore.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;

Aggiunta dell'opzione di aggiornamento automatico del file di fuso orario

Quando aggiungi l'opzione, il gruppo di opzioni si trova in una delle seguenti condizioni:

  • Un gruppo di opzioni esistente è attualmente collegato ad almeno un'istanza database. Quando aggiungi l'opzione, tutte le istanze database che utilizzano il gruppo di opzioni si riavviano automaticamente. Questo riavvio causa una breve interruzione.

  • Un gruppo di opzioni esistente non è collegato a un'istanza database. Dovrai aggiungere l'opzione e quindi associare il gruppo di opzioni esistente alle istanze database esistenti o a una nuova istanza database.

  • Crei un nuovo gruppo di opzioni e aggiungi l'opzione. Dovrai associare il nuovo gruppo di opzioni alle istanze database esistenti o a una nuova istanza database.

Console

Per aggiungere l'opzione del file di fuso orario a un'istanza di database
  1. Accedi AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nel pannello di navigazione scegliere Option groups (Gruppi di opzioni).

  3. Determinare il gruppo di opzioni che si desidera usare. È possibile creare un nuovo gruppo di opzioni oppure usare un gruppo di opzioni esistente. Se si desidera usare un gruppo di opzioni esistente, puoi passare alla fase successiva. In caso contrario, creare un gruppo di opzioni database personalizzato con le seguenti impostazioni:

    1. Per Engine (Motore), scegli la versione Oracle Database per l'istanza database.

    2. In Major engine version (Versione principale del motore), scegliere la versione dell'istanza database.

    Per ulteriori informazioni, consulta Creazione di un gruppo di opzioni.

  4. Selezionare il gruppo di opzioni che si vuole modificare, quindi scegliere Add Option (Aggiungi opzione).

  5. Nella finestra Add option (Aggiungi opzione) eseguire queste operazioni:

    1. Scegli TIMEZONE_FILE_AUTOUPGRADE.

    2. Per abilitare l'opzione in tutte le istanze database associate non appena viene aggiunta, per Apply Immediately (Applica immediatamente) scegliere Yes (Sì). Se si sceglie No (impostazione predefinita), l'opzione viene abilitata per ogni istanza database associata durante la finestra di manutenzione successiva.

  6. Dopo aver selezionato le impostazioni desiderate, selezionare Add Option (Aggiungi opzione).

AWS CLI

L'esempio seguente utilizza il comando AWS CLI add-option-to-option-group per aggiungere l'opzione a un gruppo di opzioni chiamato. TIMEZONE_FILE_AUTOUPGRADE myoptiongroup

Per, oLinux: macOS Unix

aws rds add-option-to-option-group \ --option-group-name "myoptiongroup" \ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" \ --apply-immediately

Per Windows:

aws rds add-option-to-option-group ^ --option-group-name "myoptiongroup" ^ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" ^ --apply-immediately

Controllo dei dati dopo l'aggiornamento del file di fuso orario

Si consiglia di controllare i dati dopo aver aggiornato il file del fuso orario. Durante la fase di preparazione, RDS per Oracle crea automaticamente le tabelle riportate di seguito:

  • rdsadmin.rds_dst_affected_tables – Elenca le tabelle che contengono dati interessati dall'aggiornamento

  • rdsadmin.rds_dst_error_table – Elenca gli errori generati durante l'aggiornamento

Queste tabelle sono indipendenti da tutte le tabelle create nella finestra di preparazione. Per visualizzare i risultati dell'aggiornamento, eseguire una query sulle tabelle come indicato di seguito.

SELECT * FROM rdsadmin.rds_dst_affected_tables; SELECT * FROM rdsadmin.rds_dst_error_table;

Per ulteriori informazioni sullo schema per i dati interessati e le tabelle di errore, consulta Procedura FIND_AFFECTED_TABLE nella documentazione Oracle.