30 Ekim 2016’da yaz saati değişikliği nedeniyle Oracle’ın metalinkte yayınladığı DST patch’leri uygulamıştık. 30 Ekim saat 04:00 sonrası eğer saat tekrar 03:00’e dönmüyorsa, güncellemeniz başarılı olacaktı, nitekim böyle de oldu ancak DST patch’lerini geçmemize gerek yok dediğimiz bazı Oracle db’lerimizin alert.log’larında saat farklılıklarını gördüğümüzden db’leri stop-start ettikten sonra düzelmişti. Eğer ilerde tekrar yaz saati değişikliği söz konusu olursa sizlere faydası olabilir düşüncesiyle paylaşıyorum.

OJVM DSTV28 UPDATE OCT 2016 – TZDATA2016G (Patch) -> p24701882_112040_Generic.zip

DST ->
DBMS_DST_scriptsV1.9.zip
p24701840_112040_AIX64-5L.zip
p24701840_112040_Linux-x86-64.zip

ALTER session SET time_zone='Europe/Istanbul';

SELECT to_timestamp_tz('30-10-2016 02:00:00','DD-MM-YYYY HH24:MI:SS')
 + NUMTODSINTERVAL(level*5, 'MINUTE') dt
 FROM dual
 CONNECT BY level <= 40;

— aşağıdaki gibi olMAMAsı lazım:
30/10/16 03:40:00,000000000 +03:00
30/10/16 03:45:00,000000000 +03:00
30/10/16 03:50:00,000000000 +03:00
30/10/16 03:55:00,000000000 +03:00
30/10/16 03:00:00,000000000 +02:00
30/10/16 03:05:00,000000000 +02:00
30/10/16 03:10:00,000000000 +02:00
30/10/16 03:15:00,000000000 +02:00
30/10/16 03:20:00,000000000 +02:00
30/10/16 03:25:00,000000000 +02:00
30/10/16 03:30:00,000000000 +02:00

— aşağıdaki gibi olması lazım:
30/10/16 03:45:00,000000000 +03:00
30/10/16 03:50:00,000000000 +03:00
30/10/16 03:55:00,000000000 +03:00
30/10/16 04:00:00,000000000 +03:00
30/10/16 04:05:00,000000000 +03:00

— Sisteminizde yama geçişi sonrası timezone versiyonu 28’e yükselmiş olmalı:

SELECT VERSION FROM V$TIMEZONE_FILE;

select * from v$timezone_file;
 -- 2190090.1

zdump -v Europe/Istanbul | grep 2016

-- 412160.1

Example for 11.2.0.4 – the DST patch want to apply is not available for 11.2.0.4:
** Download the 11.2.0.1, 11.2.0.2 or 11.2.0.3 DST Patch for your platform.
** Unzip the RDBMS DST patch
** Copy the 2 *.dat files and the readme_xx.txt from the unzipped patch -patchnr-/files/oracore/zoneinfo directory to the 11.2.0.4 $ORACLE_HOME/oracore/zoneinfo directory
Note: unlike what the readme may say, in 11.2 and up there is no need to shut down or stop the database or other processes seen you are simply adding new files, not replacing used ones.
** Copy the 2 dat files from the patch patchnr-/files/oracore/zoneinfo/big directory to the server $ORACLE_HOME/oracore/zoneinfo/big directory
** Copy the 2 dat files from the patch patchnr-/files/oracore/zoneinfo/little directory to the server $ORACLE_HOME/oracore/zoneinfo/little directory
** Update all databases using this 11.2.0.4 home by:

 testdbserver01@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo
 testdbserver01@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo/big
 testdbserver01@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo/little

testdbserver02@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo
 testdbserver02@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo/big
 testdbserver02@oracle  cp *.dat $ORACLE_HOME/oracore/zoneinfo/little
 testdbserver01@oracle  ls -la
 total 136
 drwxr-xr-x 2 oracle dba 256 Jan 08 2015 .
 drwxr-xr-x 4 oracle dba 256 Oct 14 15:01 ..
 -rw-r--r-- 1 oracle dba 6294 Jan 08 2015 countstarTSTZ.sql
 -rw-r--r-- 1 oracle dba 6909 Jan 08 2015 countstatsTSTZ.sql
 -rw-r--r-- 1 oracle dba 19502 Aug 22 2014 upg_tzv_apply.sql
 -rw-r--r-- 1 oracle dba 31010 Aug 22 2014 upg_tzv_check.sql
 testdbserver01@oracle

SQL> @upg_tzv_check.sql;
 INFO: Starting with RDBMS DST update preparation.
 INFO: NO actual RDBMS DST update will be done by this script.
 INFO: If an ERROR occurs the script will EXIT sqlplus.
 INFO: Doing checks for known issues ...
 INFO: Database version is 11.2.0.3 .
 INFO: Database RDBMS DST version is DSTv14 .
 INFO: No known issues detected.
 INFO: Now detecting new RDBMS DST version.
 A prepare window has been successfully started.
 INFO: Newest RDBMS DST version detected is DSTv28 .
 INFO: Next step is checking all TSTZ data.
 INFO: It might take a while before any further output is seen ...
 A prepare window has been successfully ended.
 INFO: A newer RDBMS DST version than the one currently used is found.
 INFO: Note that NO DST update was yet done.
 INFO: Now run upg_tzv_apply.sql to do the actual RDBMS DST update.
 INFO: Note that the upg_tzv_apply.sql script will
 INFO: restart the database 2 times WITHOUT any confirmation or prompt.
 WARNING: This RAC database is not started in single instance mode.
 WARNING: Set cluster_database = false and start as single instance
 WARNING: BEFORE running upg_tzv_apply(_cbd).sql !
 WARNING: This is REQUIRED !
 SQL> @upg_tzv_apply.sql;
 INFO: If an ERROR occurs the script will EXIT sqlplus.
 INFO: The database RDBMS DST version will be updated to DSTv28 .
 ERROR: This RAC database is not started in single instance mode !
 ERROR: Set cluster_database = false and start as single instance
 ERROR: and then re-run upg_tzv_apply.sql .
 ERROR: This is required by the startup UPGRADE needed to do the DST update.
 DECLARE
 *
 ERROR at line 1:
 ORA-20219: Stopping script - see previous message .....
 ORA-06512: at line 77
 5) Can the RDBMS DST version be updated without downtime? Or in a "rolling" fashion on RAC?
 Short answer: no.
 Detailed answer:

* ( if needed) For the apply of an RDBMS DST patch itself using Opatch or manually -> no downtime needed even if the readme of the patch may state otherwise.
 * For the run of upg_tzv_check.sql -> no downtime needed.
 * For the first part of upg_tzv_apply.sql after the "INFO: Restarting the database in UPGRADE mode to start the DST upgrade." message -> downtime needed and a RAC database need to be in single instance mode (cluster_database = false) , as required by the "startup UPGRADE" . upg_tzv_apply.sql will refuse to run if the database is started with cluster_database = true.
 * For the second part of upg_tzv_apply.sql after the "INFO: Upgrading all non-SYS TSTZ data." message -> the DBMS_DST.UPGRADE_DATABASE used by upg_tzv_apply.sql will take exclusive locks on the non-SYS tables when they are actually upgraded, so this might provoke issues (deadlocks have been observed) and we strongly suggest to NOT start any applications who use the tables processed until the complete DST update is done. Other applications may already be restarted if needed.
 
-- 1.node:

SQL> alter system set cluster_database = false scope=spfile sid='*';

System altered.

SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup
 ORA-01102: cannot mount database in EXCLUSIVE mode
 SQL> startup
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 603980016 bytes
 Database Buffers 1795162112 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL>
 testdbserver02@oracle  . oraenv
 ORACLE_SID = [TSTDB2] ? TSTDB2
 ORACLE_HOME = [/oracle] ? /oracle/app/oracle/product/11.2.0/dbhome_1
 The Oracle base remains unchanged with value /oracle/app/oracle
 testdbserver02@oracle  sqlplus / as sysdba
 SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 14 15:19:07 2016
 Copyright (c) 1982, 2011, Oracle. All rights reserved.
 Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
 Data Mining and Real Application Testing options
 SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL>
 
-- 1.node:

SQL> @upg_tzv_check.sql;
 INFO: Starting with RDBMS DST update preparation.
 INFO: NO actual RDBMS DST update will be done by this script.
 INFO: If an ERROR occurs the script will EXIT sqlplus.
 INFO: Doing checks for known issues ...
 INFO: Database version is 11.2.0.3 .
 INFO: Database RDBMS DST version is DSTv14 .
 INFO: No known issues detected.
 INFO: Now detecting new RDBMS DST version.
 A prepare window has been successfully started.
 INFO: Newest RDBMS DST version detected is DSTv28 .
 INFO: Next step is checking all TSTZ data.
 INFO: It might take a while before any further output is seen ...
 A prepare window has been successfully ended.
 INFO: A newer RDBMS DST version than the one currently used is found.
 INFO: Note that NO DST update was yet done.
 INFO: Now run upg_tzv_apply.sql to do the actual RDBMS DST update.
 INFO: Note that the upg_tzv_apply.sql script will
 INFO: restart the database 2 times WITHOUT any confirmation or prompt.
 SQL> @upg_tzv_apply.sql;
 INFO: If an ERROR occurs the script will EXIT sqlplus.
 INFO: The database RDBMS DST version will be updated to DSTv28 .
 WARNING: This script will restart the database 2 times
 WARNING: WITHOUT asking ANY confirmation.
 WARNING: Hit control-c NOW if this is not intended.
 INFO: Restarting the database in UPGRADE mode to start the DST upgrade.
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 603980016 bytes
 Database Buffers 1795162112 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 INFO: Starting the RDBMS DST upgrade.
 INFO: Upgrading all SYS owned TSTZ data.
 INFO: It might take time before any further output is seen ...
 An upgrade window has been successfully started.
 INFO: Restarting the database in NORMAL mode to upgrade non-SYS TSTZ data.
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 603980016 bytes
 Database Buffers 1795162112 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 INFO: Upgrading all non-SYS TSTZ data.
 INFO: It might take time before any further output is seen ...
 INFO: Do NOT start any application yet that uses TSTZ data!
 INFO: Next is a list of all upgraded tables:
 Table list: "SYSMAN"."MGMT_PROV_SUITE_INST_MEMBERS"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_STAGING_DIRS"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_RPM_REP"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_OPERATION"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_NET_CONFIG"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_IP_RANGE"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_DEFAULT_IMAGE"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_CLUSTER_NODES"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_BOOTSERVER"
 Number of failures: 0
 Table list: "SYSMAN"."MGMT_PROV_ASSIGNMENT"
 Number of failures: 0
 Table list: "SYSMAN"."AQ$_MGMT_NOTIFY_QTABLE_S"
 Number of failures: 0
 Table list: "SYSMAN"."AQ$_MGMT_NOTIFY_QTABLE_L"
 Number of failures: 0
 Table list: "SYSMAN"."AQ$_MGMT_LOADER_QTABLE_S"
 Number of failures: 0
 Table list: "SYSMAN"."AQ$_MGMT_LOADER_QTABLE_L"
 Number of failures: 0
 INFO: Total failures during update of TSTZ data: 0 .
 An upgrade window has been successfully ended.
 INFO: Your new Server RDBMS DST version is DSTv28 .
 INFO: The RDBMS DST update is successfully finished.
 INFO: Make sure to exit this sqlplus session.
 INFO: Do not use it for timezone related selects.
 SQL>

 --1.node:

SQL> alter system set cluster_database = true scope=spfile sid='*';

System altered.

SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL>

 --2.node:

testdbserver02@oracle  sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 14 15:28:31 2016

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 620757232 bytes
 Database Buffers 1778384896 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL>

 -- 1.node:

SQL> startup
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 603980016 bytes
 Database Buffers 1795162112 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL>
 SQL> SELECT VERSION FROM V$TIMEZONE_FILE;

VERSION
 ----------
 28

SQL> SELECT to_timestamp_tz('30-10-2016 02:00:00','DD-MM-YYYY HH24:MI:SS')
 2 + NUMTODSINTERVAL(level*30, 'MINUTE') dt
 3 FROM dual
 4 CONNECT BY level <= 10; DT --------------------------------------------------------------------------- 30-OCT-16 02.30.00.000000000 AM +03:00 30-OCT-16 03.00.00.000000000 AM +03:00 30-OCT-16 03.30.00.000000000 AM +03:00 30-OCT-16 04.00.00.000000000 AM +03:00 30-OCT-16 04.30.00.000000000 AM +03:00 30-OCT-16 05.00.00.000000000 AM +03:00 30-OCT-16 05.30.00.000000000 AM +03:00 30-OCT-16 06.00.00.000000000 AM +03:00 30-OCT-16 06.30.00.000000000 AM +03:00 30-OCT-16 07.00.00.000000000 AM +03:00 10 rows selected. SQL>

testdbserver01@root </> date
 Fri Oct 14 17:26:17 +03 2016
 testdbserver01@root </> date 10300359
 Sun Oct 30 03:59:33 +03 2016
 testdbserver01@root </> date
 Sun Oct 30 03:59:51 +03 2016
 testdbserver01@root </> date
 Sun Oct 30 03:59:58 +03 2016
 testdbserver01@root </> date
 Sun Oct 30 04:00:01 +03 2016
 testdbserver01@root </> date
 Sun Oct 30 04:00:03 +03 2016
 testdbserver01@root </> date 10141728
 Fri Oct 14 17:28:33 +03 2016
 testdbserver01@root </>

################## OJVM patch ####################

— Applying the DSTv28 update for the Oracle Database (Doc ID 2190090.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=40360176028216&id=2190090.1&_adf.ctrl-state=17d9edp4b8_50#aref_section321
— 7) The OJVM DSTv28 patch 24701882
— readme: https://updates.oracle.com/Orion/Services/download?type=readme&aru=20697858

select owner, status, count(*) from all_objects
 where object_type like '%JAVA%' group by owner, status;
select * from all_objects where object_type like '%JAVA%' and owner not in ('SYS','EXFSYS','ORDSYS','MDSYS');
 testdbserver01@oracle  unzip p24701882_112030_Generic.zip
 testdbserver01@oracle  ./post -apply
 ksh: ./post: 0403-006 Execute permission denied.
 testdbserver01@oracle  ls
 post
 testdbserver01@oracle  ls -al
 total 8
 drwxr-xr-x 2 oracle dba 256 Oct 21 21:36 .
 drwxr-xr-x 3 oracle dba 256 Oct 21 21:36 ..
 -rw-r--r-- 1 oracle dba 3575 Oct 21 21:36 post
 testdbserver01@oracle  chmod +x post
 testdbserver01@oracle  ls -al
 total 8
 drwxr-xr-x 2 oracle dba 256 Oct 21 21:36 .
 drwxr-xr-x 3 oracle dba 256 Oct 21 21:36 ..
 -rwxr-xr-x 1 oracle dba 3575 Oct 21 21:36 post
 testdbserver01@oracle  ./post -apply
 testdbserver01@oracle  opatch apply
 Oracle Interim Patch Installer version 11.2.0.3.5
 Copyright (c) 2013, Oracle Corporation. All rights reserved.
 Oracle Home : /oracle/app/oracle/product/11.2.0/dbhome_1
 Central Inventory : /oracle/app/oraInventory
 from : /oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
 OPatch version : 11.2.0.3.5
 OUI version : 11.2.0.3.0
 Log file location : /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/24701882_Oct_27_2016_18_27_41/apply2016-10-27_18-27-41PM_1.log

Applying interim patch '24701882' to OH '/oracle/app/oracle/product/11.2.0/dbhome_1'
 Verifying environment and performing prerequisite checks...
 All checks passed.
 Provide your email address to be informed of security issues, install and
 initiate Oracle Configuration Manager. Easier for you if you use your My
 Oracle Support Email address/User Name.
 Visit http://www.oracle.com/support/policies.html for details.
 Email address/User Name:

You have not provided an email address for notification of security issues.
 Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: y
 Backing up files...

Patching component oracle.javavm.server, 11.2.0.3.0...

Verifying the update...

Patching in all-node mode.

Updating nodes 'testdbserver02'
 Apply-related files are:
 FP = "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_files.txt"
 DP = "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_dirs.txt"
 MP = "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/make_cmds.txt"
 RC = "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/remote_cmds.txt"

Instantiating the file "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_files.txt.instantiated" by replacing $ORACLE_HOME in "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_files.txt" with actual path.
 Propagating files to remote nodes...
 Instantiating the file "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_dirs.txt.instantiated" by replacing $ORACLE_HOME in "/oracle/app/oracle/product/11.2.0/dbhome_1/.patch_storage/24701882_Oct_21_2016_11_36_11/rac/copy_dirs.txt" with actual path.
 Propagating directories to remote nodes...
 Patch 24701882 successfully applied
 Log file location: /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/24701882_Oct_27_2016_18_27_41/apply2016-10-27_18-27-41PM_1.log

OPatch succeeded.
 testdbserver01@oracle 
 testdbserver01@oracle 
 testdbserver01@oracle  cd ORACLE_HOME/javavm/admin/fixTZa
 ksh: ORACLE_HOME/javavm/admin/fixTZa: not found.
 testdbserver01@oracle  cd $ORACLE_HOME/javavm/admin/fixTZa
 ksh: /oracle/app/oracle/product/11.2.0/dbhome_1/javavm/admin/fixTZa: not found.
 testdbserver01@oracle  cd $ORACLE_HOME/javavm/admin/
 testdbserver01@oracle  ls -la
 total 181592
 drwxr-xr-x 2 oracle dba 256 Oct 27 18:28 .
 drwxr-xr-x 8 oracle dba 256 Aug 21 2015 ..
 -rw-r--r-- 1 oracle dba 92185501 Aug 26 2011 classes.bin
 -rw-r--r-- 1 oracle dba 373518 Oct 21 21:36 fixTZa.sql
 -rw-r--r-- 1 oracle dba 4406 Oct 21 21:36 fixTZb.sql
 -rw-r--r-- 1 oracle dba 395767 Aug 26 2011 libjtcjt.so
 testdbserver01@oracle  sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Oct 27 18:30:06 2016

Copyright (c) 1982, 2011, Oracle. All rights reserved.
 Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
 Data Mining and Real Application Testing options

SQL> @fixTZa.sql;

Session altered.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 Java created.

No errors.

Java altered.

No errors.

Package created.

No errors.

Package body created.

No errors.

PL/SQL procedure successfully completed.
 Call completed.

Testing various timezone DST attributes
 FAILED for America/Metlakatla 1451638800000 -32400000 0
 ...
 FAILED for Pacific/Fakaofo 1451559600000 46800000 0
 ##
 Bug is in fact present, so this patch is needed
 ##
 (Perhaps) modifying ild_ub1$ for rehotloading of sun/util/calendar/ZoneInfoFile
 obj# = 45647
 nbytes %d = 64512, 1st read = 64512, 2nd read = -1
 96 397776 385632 12144 joxbtflag>>8 = 3
 ===

PL/SQL procedure successfully completed.

########################################################
 Bug is in fact present, so this patch is needed
 Proceed by restarting the database and running script
 fixTZb
 ########################################################

PL/SQL procedure successfully completed.

SQL> ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;

System altered.

SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup migrate
 ORA-01102: cannot mount database in EXCLUSIVE mode
 
--2.node'da;

testdbserver02@oracle  . oraenv
 ORACLE_SID = [TSTDB2] ? TSTDB2
 ORACLE_HOME = [/oracle] ? /oracle/app/oracle/product/11.2.0/dbhome_1
 The Oracle base remains unchanged with value /oracle/app/oracle
 testdbserver02@oracle  sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Oct 27 19:00:59 2016

Copyright (c) 1982, 2011, Oracle. All rights reserved.
 Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
 Data Mining and Real Application Testing options

SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 
--1.node'da

SQL> startup migrate
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 637534448 bytes
 Database Buffers 1761607680 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL> @fixTZb.sql;

Session altered.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 PL/SQL procedure successfully completed.
 Call completed.

Testing various timezone DST attributes
 ########################################################
 Bug is no longer present. Patch succeeded.
 ########################################################

PL/SQL procedure successfully completed.

drop java source fixTZ
 drop package fixTZ

PL/SQL procedure successfully completed.

SQL> ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;

System altered.

SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 637534448 bytes
 Database Buffers 1761607680 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL>

--2.node'da:

SQL> startup
 ORACLE instance started.

Total System Global Area 2421825536 bytes
 Fixed Size 2223888 bytes
 Variable Size 620757232 bytes
 Database Buffers 1778384896 bytes
 Redo Buffers 20459520 bytes
 Database mounted.
 Database opened.
 SQL>

Referans:  Applying the DSTv28 update for the Oracle Database (Doc ID 2190090.1)