How to Upgrade Timezone ( DST ) Manually During Oracle 12c Upgrade

Hi,

I will explain How to Upgrade Timezone ( DST ) Manually During Oracle 12c  Upgrade.

 

If you want to learn how to Upgrade database from Oracle 11g to Oracle 12.2, you can read the following article.

Manual Upgrade Oracle Database From 11.2.0.4 to 12.2.0.1 without DBUA

 

 

Our Timezone version was 14 before Oracle 12.2 upgrade as follows.

SQL> select TZ_VERSION from registry$database;

TZ_VERSION
----------
14

 

Once Oracle 12.2 upgrade is completed, I have also upgraded Timezone to 28 with the following steps.

 

Step-1: Shutdown database and startup database in upgrade mode as follows.

SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

SQL>
SQL> startup upgrade;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area 2.7488E+11 bytes
Fixed Size 29906208 bytes
Variable Size 2.6307E+10 bytes
Database Buffers 2.4803E+11 bytes
Redo Buffers 506961920 bytes
Database mounted.
Database opened.
SQL>



 

Step-2: Purge Recycle bin and set the following Oracle hidden  parameters.

SQL> purge dba_recyclebin;

DBA Recyclebin purged.

SQL>

SQL> alter session set "_simple_view_merging"=TRUE;

Session altered.

SQL> alter session set "_with_subquery"=materialize;

Session altered.

SQL>

 

Step-3: Run the prepare step.

exec DBMS_DST.BEGIN_PREPARE(26);

 

Step-4: Truncate the following tables.

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.

 

Step-5: Query the tables if they keep any data or not.

SQL> select * from sys.dst$affected_tables;
no rows selected

SQL> select * from sys.dst$error_table;
no rows selected

SQL>
SQL>

 

Step-6: Run the timezone upgrade scripts as follows.

SQL> EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO('upg_tzv');

PL/SQL procedure successfully completed.

SQL>

SQL> exec DBMS_DST.BEGIN_UPGRADE(26);

PL/SQL procedure successfully completed.




SQL> SELECT * FROM sys.dst$error_table;

no rows selected

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME; 2 3 4

PROPERTY_NAME VALUE
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
DST_PRIMARY_TT_VERSION 26
DST_SECONDARY_TT_VERSION 14
DST_UPGRADE_STATE UPGRADE




SQL>
SQL> alter session set "_with_subquery"=materialize;
alter session set "_simple_view_merging"=TRUE;
Session altered.

SQL>

Session altered.

SQL>

 

Step-7: Now Upgrade database timezone as follows.

SQL> 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 => FALSE,
error_on_nonexisting_time => FALSE);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
SQL> END;
/ 2 3 4 5 6 7 8 9 10 11

PL/SQL procedure successfully completed.

SQL>
SQL>

SQL>
SQL> SELECT * FROM sys.dst$error_table;

no rows selected

 

Step-8: Now end timezone upgrade as follows.

SQL> VAR fail number
BEGIN
DBMS_DST.END_UPGRADE(:fail);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :fail);
END;SQL> 2 3 4
5 /

PL/SQL procedure successfully completed.

 

 

 

Step-9: Check timezone file and parameters as follows.

 

SQL> SELECT * FROM v$timezone_file;

FILENAME VERSION CON_ID
-------------------- ---------- ----------
timezlrg_26.dat 26 0

SQL>
SQL>

SQL>
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME; 2 3 4

PROPERTY_NAME VALUE
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
DST_PRIMARY_TT_VERSION 26
DST_SECONDARY_TT_VERSION 0
DST_UPGRADE_STATE NONE

SQL>

SQL>
SQL> SELECT VERSION FROM v$timezone_file;

VERSION
----------
26

 

Step-10: Check timezone version from database, it is not updated. You need to update it as follows.

 

SQL> select TZ_VERSION from registry$database;

TZ_VERSION
----------
14

SQL> update registry$database
set TZ_VERSION = (select version
FROM v$timezone_file);
commit; 2 3
1 row updated.

SQL>

Commit complete.

SQL>

 

Step-11: Now check it, Timezone version has been 26.

SQL> select TZ_VERSION from registry$database;

TZ_VERSION
----------
26

 

 

Do you want to learn Oracle Database for Beginners, then read the following articles.

https://ittutorial.org/oracle-database-19c-tutorials-for-beginners/

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *