Skip to end of metadata
Go to start of metadata

Using DBMS_DST package to upgrade the timezone file version during or pre Oracle 11gR2 Upgrade


If you see a warning stating that your current timezone file version is lower then 11, you need to upgrade it to version 11.

Oracle 11g provides a built-in package DBMS_DST that can be used to evaluate the current timezone data before the timezone file version upgrade and does the upgrade of timezone file version as well.

The DBMS_DST package helps performing these tasks by creating a prepare window and upgrade window.

DBMS_DST prepare window

Use this window to validate the current timezone data that you have.

Show the primary and secondary timezone file version and the upgrade state of the timezone file:

$ sqlplus / as sysdba
SQL> startup
SQL> set serveroutput on
SQL> EXEC DBMS_DST.BEGIN_PREPARE(11);
A prepare window has been successfully started.
PL/SQL procedure successfully completed.
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
    FROM DATABASE_PROPERTIES
    WHERE PROPERTY_NAME LIKE 'DST_%'
    ORDER BY PROPERTY_NAME;
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         4
DST_SECONDARY_TT_VERSION       11
DST_UPGRADE_STATE              PREPARE

Open upgrade mode window

SQL> EXEC DBMS_DST.END_PREPARE;
A prepare window has been successfully ended.
PL/SQL procedure successfully completed.

DBMS_DST upgrade

Now is time to upgrade the database timezone file version to 11. 

SQL> startup upgrade
SQL> EXEC DBMS_DST.BEGIN_UPGRADE(11);
PL/SQL procedure successfully completed.
SQL> shutdown immediate
SQL> startup
SQL> set serveroutput on
VAR numfail number
BEGIN
DBMS_DST.UPGRADE_DATABASE(:numfail,
   parallel                  => TRUE,
   log_errors                => TRUE,
   log_errors_table          => 'SYS.DST$ERROR_TABLE',
   log_triggers_table        => 'SYS.DST$TRIGGER_TABLE',
   error_on_overlap_time     => TRUE,
   error_on_nonexisting_time => TRUE);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
END;
/
Failures: 0
PL/SQL procedure successfully completed.
SQL> BEGIN
 DBMS_DST.END_UPGRADE(:numfail);
END;
/
PL/SQL procedure successfully completed.

Check for success

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         11
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

The timezone file version is upgraded.