Preparação para atualizar o arquivo de fuso horário - Amazon Relational Database Service

Preparação para atualizar o arquivo de fuso horário

Uma atualização de arquivo de fuso horário tem duas fases separadas: preparar e atualizar. Embora não seja necessário, recomendamos enfaticamente que você execute a etapa de preparação. Nessa etapa, você descobre quais dados serão afetados pela execução do procedimento DBMS_DST.FIND_AFFECTED_TABLES de PL/SQL. Para ter mais informações sobre a janela de preparação, consulte Upgrading the Time Zone File and Timestamp with Time Zone Data (Atualização do arquivo de fuso horário e o carimbo de data/hora com os dados de fuso horário) na documentação do Oracle Database.

Para preparar a atualização do arquivo de fuso horário
  1. Conecte ao banco de dados Oracle usando um cliente SQL.

  2. Determine a versão atual do arquivo de fuso horário usada.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Determine a versão mais recente do arquivo de fuso horário disponível na instância de banco de dados

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Determine o tamanho total das tabelas que têm colunas do tipo TIMESTAMP WITH LOCAL TIME ZONE ou 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. Determine os nomes e tamanhos dos segmentos que têm colunas do tipo TIMESTAMP WITH LOCAL TIME ZONE ou 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. Execute a etapa de preparação.

    • O procedimento DBMS_DST.CREATE_AFFECTED_TABLE cria uma tabela para armazenar quaisquer dados afetados. Passe o nome desta tabela ao procedimento DBMS_DST.FIND_AFFECTED_TABLES. Para ter mais informações, consulte CREATE_AFFECTED_TABLE Procedure (Procedimento CREATE_AFECTED_TABLE) na documentação do Oracle Database.

    • O procedimento CREATE_ERROR_TABLE cria uma tabela para registrar erros. Para ter mais informações, consulte CREATE_ERROR_TABLE Procedure (Procedimento ERROR_TABLE) na documentação do Oracle Database.

    O exemplo a seguir cria os dados afetados e as tabelas de erro e localiza todas as tabelas de afetados.

    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. Consulte as tabelas de afetados e de erro.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;