oracle support doc 1358166.1 for detailed information on
timezone upgrade. It’s recommended to go through this document to understand
the affects of below commands and any deviation from below steps if slight
change in versions involved in this upgrade.
Download oracle Time zone patch  p13417321_112040_Linux-x86-64
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1,
30) value
  2  FROM DATABASE_PROPERTIES
  3  WHERE PROPERTY_NAME LIKE 'DST_%'
  4  ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------
------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE          
   NONE
SQL> purge dba_recyclebin;
DBA Recyclebin purged.
SQL> alter session set
"_with_subquery"=materialize;
Session altered.
SQL> alter session set "_simple_view_merging"=TRUE;
Session altered.
SQL>  EXEC
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('upg_tzv');
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_DST.BEGIN_PREPARE(18);
PL/SQL procedure successfully completed.
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1,
30) value 
  2  FROM DATABASE_PROPERTIES
  3  WHERE PROPERTY_NAME LIKE 'DST_%'
  4  ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       18
DST_UPGRADE_STATE          
   PREPARE
SQL> TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;
Table truncated.
SQL> TRUNCATE TABLE sys.dst$affected_tables;
Table truncated.
SQL> TRUNCATE TABLE sys.dst$error_table;
Table truncated.
SQL> set serveroutput on
SQL>  BEGIN
  2  DBMS_DST.FIND_AFFECTED_TABLES
  3  (affected_tables =>
'sys.dst$affected_tables',
  4  log_errors => TRUE,
  5  log_errors_table =>
'sys.dst$error_table');
  6  END;
  7  /
PL/SQL procedure successfully completed.
SQL> SELECT * FROM sys.dst$affected_tables;
no rows selected
SQL>  SELECT * FROM sys.dst$error_table;
no rows selected
SQL> SELECT * FROM sys.dst$error_table where
ERROR_NUMBER= '1883';
no rows selected
SQL> SELECT * FROM sys.dst$error_table where
ERROR_NUMBER= '1878';
no rows selected
SQL> SELECT * FROM sys.dst$error_table where
ERROR_NUMBER not in ('1878','1883');
no rows selected
SQL> EXEC DBMS_DST.END_PREPARE;
A prepare window has been successfully ended.
PL/SQL procedure successfully completed.
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1,
30) value
  2   FROM DATABASE_PROPERTIES
  3   WHERE PROPERTY_NAME LIKE 'DST_%'
  4   ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------
------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE          
   NONE
SQL> select name from v$database;
NAME
---------
SID
SQL>  shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size            
     2260088 bytes
Variable Size            
444597128 bytes
Database Buffers        
 608174080 bytes
Redo Buffers            
  13905920 bytes
Database mounted.
Database opened.
SQL> set serveroutput on
SQL>  set timing on
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1,
30) value
  2  FROM DATABASE_PROPERTIES
  3  WHERE PROPERTY_NAME LIKE 'DST_%'
  4  ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------
------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE          
   NONE
Elapsed: 00:00:00.02
SQL> purge dba_recyclebin;
DBA Recyclebin purged.
Elapsed: 00:00:00.01
SQL>  TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;
Table truncated.
Elapsed: 00:00:00.02
SQL> TRUNCATE TABLE sys.dst$affected_tables;
Table truncated.
Elapsed: 00:00:00.01
SQL> TRUNCATE TABLE sys.dst$error_table;
Table truncated.
Elapsed: 00:00:00.02
SQL>  alter session set
"_with_subquery"=materialize;
Session altered.
Elapsed: 00:00:00.00
SQL> alter session set
"_simple_view_merging"=TRUE;
Session altered.
Elapsed: 00:00:00.00
SQL>  EXEC
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('upg_tzv');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01
SQL>  EXEC DBMS_DST.BEGIN_UPGRADE(18);
An upgrade window has been successfully started.
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.61
SQL> SELECT * FROM sys.dst$error_table;
no rows selected
Elapsed: 00:00:00.00
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1,
30) value
  2  FROM DATABASE_PROPERTIES
  3  WHERE PROPERTY_NAME LIKE 'DST_%'
  4  ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------
------------------------------
DST_PRIMARY_TT_VERSION         18
DST_SECONDARY_TT_VERSION       14
DST_UPGRADE_STATE          
   UPGRADE
Elapsed: 00:00:00.01
SQL> select OWNER, TABLE_NAME, UPGRADE_IN_PROGRESS
from ALL_TSTZ_TABLES where UPGRADE_IN_PROGRESS='YES';
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
APPLSYS              
         AQ$_FND_CP_GSM_IPC_AQTBL_S     YES
APPLSYS              
         AQ$_FND_CP_GSM_IPC_AQTBL_L     YES
APPLSYS              
         AQ$_FND_CP_TM_AQTBL_S      
   YES
APPLSYS              
         AQ$_FND_CP_TM_RET_AQTBL_S    
 YES
APPLSYS              
         AQ$_FND_CP_TM_AQTBL_L      
   YES
APPLSYS              
         AQ$_FND_CP_TM_RET_AQTBL_L    
 YES
APPLSYS              
         AQ$_FND_CP_GSM_OPP_AQTBL_S     YES
APPLSYS              
         AQ$_FND_CP_GSM_OPP_AQTBL_L     YES
ASO              
             AQ$_ASO_ORDER_FEEDBACK_T_S
    YES
OKC              
             AQ$_OKC_AQ_EV_TAB_S  
         YES
AR              
              AQ$_AR_REV_REC_QT_S  
         YES
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
XNP              
             AQ$_XNP_OUT_MSG_QTAB_S  
      YES
CS              
              AQ$_CS_SERVICE_REQUEST_IQT_S
  YES
CS              
              AQ$_CS_SERVICE_REQUEST_OQT_S
  YES
APPLSYS              
         AQ$_WF_DEFERRED_TABLE_M_S    
 YES
APPLSYS              
         AQ$_WF_DEFERRED_S        
     YES
APPLSYS              
         AQ$_WF_REPLAY_IN_S      
      YES
APPLSYS              
         AQ$_WF_ERROR_S        
        YES
APPLSYS              
         AQ$_WF_OUT_S        
          YES
APPLSYS              
         AQ$_WF_REPLAY_OUT_S      
     YES
APPLSYS              
         AQ$_WF_IN_S        
           YES
APPLSYS              
         AQ$_WF_JMS_IN_S        
       YES
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
APPLSYS              
         AQ$_WF_JMS_OUT_S        
      YES
APPLSYS              
         AQ$_WF_NOTIFICATION_IN_S      
YES
APPLSYS              
         AQ$_WF_JAVA_DEFERRED_S      
  YES
APPLSYS              
         AQ$_WF_WS_JMS_IN_S      
      YES
APPLSYS              
         AQ$_WF_WS_JMS_OUT_S      
     YES
APPLSYS              
         AQ$_WF_JAVA_ERROR_S      
     YES
APPLSYS              
         AQ$_WF_JMS_JMS_OUT_S        
  YES
APPLSYS              
         AQ$_WF_WS_SAMPLE_S      
      YES
APPLSYS              
         AQ$_WF_CONTROL_S        
      YES
APPLSYS              
         AQ$_WF_CONTROL_L        
      YES
APPLSYS              
         AQ$_WF_NOTIFICATION_OUT_S    
 YES
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
APPLSYS              
         AQ$_WF_NOTIFICATION_OUT_L    
 YES
ASO              
             AQ$_ASO_ORDER_FEEDBACK_T_L
    YES
XNP              
             AQ$_XNP_OUT_MSG_QTAB_L  
      YES
APPLSYS              
         AQ$_WF_OUT_L        
          YES
APPLSYS              
         AQ$_WF_ERROR_L        
        YES
APPLSYS              
         AQ$_WF_REPLAY_IN_L      
      YES
APPLSYS              
         AQ$_WF_DEFERRED_L        
     YES
APPLSYS              
         AQ$_WF_DEFERRED_TABLE_M_L    
 YES
CS              
              AQ$_CS_SERVICE_REQUEST_OQT_L
  YES
CS              
              AQ$_CS_SERVICE_REQUEST_IQT_L
  YES
APPLSYS              
         AQ$_WF_NOTIFICATION_IN_L      
YES
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
APPLSYS              
         AQ$_WF_JMS_OUT_L        
      YES
APPLSYS              
         AQ$_WF_JMS_IN_L        
       YES
APPLSYS              
         AQ$_WF_IN_L        
           YES
APPLSYS              
         AQ$_WF_REPLAY_OUT_L      
     YES
APPLSYS              
         AQ$_WF_WS_SAMPLE_L      
      YES
APPLSYS              
         AQ$_WF_JMS_JMS_OUT_L      
    YES
APPLSYS              
         AQ$_WF_JAVA_ERROR_L      
     YES
APPLSYS              
         AQ$_WF_WS_JMS_OUT_L      
     YES
APPLSYS              
         AQ$_WF_JAVA_DEFERRED_L      
  YES
APPLSYS              
         AQ$_WF_WS_JMS_IN_L      
      YES
AR              
              AQ$_AR_REV_REC_QT_L  
         YES
OWNER              
           TABLE_NAME        
            UPG
------------------------------
------------------------------ ---
OKC              
             AQ$_OKC_AQ_EV_TAB_L  
         YES
56 rows selected.
Elapsed: 00:00:00.46
SQL>; shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>;  startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size            
     2260088 bytes
Variable Size            
444597128 bytes
Database Buffers        
 608174080 bytes
Redo Buffers            
  13905920 bytes
Database mounted.
Database opened.
SQL> alter session set
"_with_subquery"=materialize;
Session altered.
Elapsed: 00:00:00.02
SQL> alter session set
"_simple_view_merging"=TRUE;
Session altered.
Elapsed: 00:00:00.00
SQL>; EXEC
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('upg_tzv');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01
SQL>;  VAR numfail number
SQL>;  BEGIN
  2    
 DBMS_DST.UPGRADE_DATABASE(:numfail,
  3      parallel => TRUE,
  4      log_errors => TRUE,
  5      log_errors_table =>
'SYS.DST$ERROR_TABLE',
  6      log_triggers_table =>
'SYS.DST$TRIGGER_TABLE',
  7      error_on_overlap_time =>
FALSE,
  8      error_on_nonexisting_time
=> FALSE);
  9    
 DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
 10     END;
 11  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.91
SQL> SELECT * FROM sys.dst$error_table;
no rows selected
Elapsed: 00:00:00.00
SQL>; VAR fail number
SQL>; BEGIN
  2  DBMS_DST.END_UPGRADE(:fail);
  3  DBMS_OUTPUT.PUT_LINE('Failures:'|| :fail);
  4  END;
  5  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.45
SQL> SELECT PROPERTY_NAME,
SUBSTR(property_value, 1, 30) value
  2  FROM DATABASE_PROPERTIES
  3  WHERE PROPERTY_NAME LIKE 'DST_%'
  4  ORDER BY PROPERTY_NAME;
PROPERTY_NAME            
     VALUE
------------------------------
------------------------------
DST_PRIMARY_TT_VERSION         18
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE          
   NONE
Elapsed: 00:00:00.00
SQL> SELECT * FROM v$timezone_file;
FILENAME              
 VERSION
-------------------- ----------
timezlrg_18.dat            
 18
Elapsed: 00:00:00.00
SQL>