Preparación para actualizar el archivo de zona horaria - Amazon Relational Database Service

Preparación para actualizar el archivo de zona horaria

Una actualización de archivos de zona horaria tiene dos fases separadas: preparación y actualización. Si bien no es necesario, recomendamos encarecidamente que realice el paso de preparación. En este paso, descubrirá qué datos se verán afectados al ejecutar el procedimiento PL/SQL DBMS_DST.FIND_AFFECTED_TABLES. Para obtener más información sobre la ventana de preparación, consulte Actualización del archivo de zona horaria y la marca de hora con datos de zona horaria en la Documentación de la base de datos de Oracle.

Para preparar la actualización del archivo de zona horaria
  1. Conecte el cliente SQL a la base de datos de Oracle utilizando el cliente SQL.

  2. Determine la versión actual del archivo de zona horaria utilizada.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Determine la última versión del archivo de zona horaria disponible en su instancia de base de datos.

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Determine el tamaño total de las tablas que tienen columnas de 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. Determine los nombres y tamaños de los segmentos que tienen columnas de 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. Ejecute el paso de preparación.

    • El procedimiento DBMS_DST.CREATE_AFFECTED_TABLE crea una tabla para almacenar cualquier dato afectado. Se pasa el nombre de esta tabla al procedimiento DBMS_DST.FIND_AFFECTED_TABLES. Para obtener más información, consulte el Procedimiento CREATE_AFFECTED_TABLE en la Documentación de la base de datos de Oracle.

    • Este procedimiento CREATE_ERROR_TABLE crea una tabla para registrar errores. Para obtener más información, consulte el Procedimiento CREATE_ERROR_TABLE en la Documentación de la base de datos de Oracle.

    En el siguiente ejemplo se crean los datos afectados y las tablas de errores, y se buscan todas las tablas afectadas.

    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 las tablas afectadas y de error.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;