During the preparation for a 12.2 upgrade, I found that the preupgrade-tool reported about an incomplete DST upgrade, where DST_UPGRADE_STATE was set to "DATAPUMP(1)".
The preupgrade tool reported:
$ORACLE_HOME/jdk/bin/java -jar /tmp/preupgradetool/preupgrade.jar TERMINAL TEXT
Report generated by Oracle Database Pre-Upgrade Information Tool Version
12.2.0.1.0
Upgrade-To version: 12.2.0.1.0
=======================================
Status of the database prior to upgrade
=======================================
Complete any pending DST update operation before starting the database
upgrade.
There is an unfinished DST update operation in the database. It's
current state is: DATAPUMP(1)
There must not be any Daylight Savings Time (DST) update operations
pending in the database before starting the upgrade process.
Refer to My Oracle Support Note 1509653.1 for more information.
Then, running the preupgrade_fixups.sql:
Fixup
Check Name Status Further DBA Action
---------- ------ ------------------
purge_recyclebin Passed None
pending_dst_session Failed Manual fixup required.
invalid_objects_exist Failed None
dictionary_stats Passed None
Result:
SYS@proddb01 SQL> r
1 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 DATAPUMP(1)
According to https://blog.oracle-ninja.com/2013/09/17/stuck-timezone-upgrades-and-smart-scans the solution would be, as sysdba:
1. ALTER SESSION SET EVENTS '30090 TRACE NAME CONTEXT FOREVER, LEVEL 32';
2. exec dbms_dst.unload_secondary;
I tried this, with the following result:
SYSproddb01 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 18
DST_SECONDARY_TT_VERSION 0
DST_UPGRADE_STATE NONE
I also executed
ALTER SESSION SET EVENTS '30090 TRACE NAME CONTEXT FOREVER, OFF';
just to be on the safe side.
Finally, run preupgrade_fixups.sql again:
Check Name Status Further DBA Action
---------- ------ ------------------
purge_recyclebin Passed None
pending_dst_session Passed None
invalid_objects_exist Failed None
dictionary_stats Passed None
PL/SQL-prosedyren ble fullført.
And the test is passed, and you are ready to upgrade