[Oracle] sql 파일을 활용한 19c Single Non-CDB Timezone 버전 업그레이드 가이드(42 -> 44)

728x90

2026.03.07 - [📁 Database/Oracle] - [Oracle] Non-CDB에서 Timezone 업그레이드 방법(DSTv43 -> 44)

전체 과정을 해당 포스팅과 비교하면 이해도가 높아짐

Non-CDB에서 Timezone 업그레이드 방법

  • OS : Red Hat Enterprise Linux 9.7
  • DB : Single DB 19.21(DSTv42)
  • Timezone Upgrade : 42 -> 44

현재 DB 엔진이 가지고 있는 최신 Timezone 버전

SELECT DBMS_DST.get_latest_timezone_version
FROM   dual;

GET_LATEST_TIMEZONE_VERSION
---------------------------
                         42

1) Timezone DSTv44 패치

37537949 Timezone DST 44 패치 다운로드
OS에 맞는 패치 다운로드
-> Oracle 공식 문서

참고) 최신 timezone 파일 가져오기

아래 오라클 문서에서 데이터베이스에 사용할 최신 timezone 파일을 찾을 수 있음

Updated DST Transitions and New Time Zones in Oracle RDBMS and OJVM Time Zone File Patches (Doc ID 412160.1)

37537949 패치파일 압축 해제

$ unzip -q p37537949_190000_Linux-x86-64.zip

DB, Listener Down

$ lsnrctl stop
SQL> shutdown immediate

37537949 패치 적용

$ cd 37537949/
$ opatch apply -local

(참고)패치 로그

Oracle Interim Patch Installer version 12.2.0.1.49
Copyright (c) 2026, Oracle Corporation.  All rights reserved.


Oracle Home       : /ORA19/app/oracle/product/19c
Central Inventory : /ORA19/app/oraInventory
   from           : /ORA19/app/oracle/product/19c/oraInst.loc
OPatch version    : 12.2.0.1.49
OUI version       : 12.2.0.7.0
Log file location : /ORA19/app/oracle/product/19c/cfgtoollogs/opatch/opatch2026-03-07_23-36-06PM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   37537949

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Backing up files...
Applying interim patch '37537949' to OH '/ORA19/app/oracle/product/19c'

Patching component oracle.oracore.rsf, 19.0.0.0.0...
Patch 37537949 successfully applied.
Log file location: /ORA19/app/oracle/product/19c/cfgtoollogs/opatch/opatch2026-03-07_23-36-06PM_1.log

OPatch succeeded.

패치 적용 확인

$ opatch lspatches
37537949;RDBMS - DSTV44 UPDATE - TZDATA2025A
35643107;Database Release Update : 19.21.0.0.231017 (35643107)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

DB, Listener Up

SQL> startup
$ lsnrctl start

2) 현재 Timezone 버전 조회

Timezone 파일 확인

SELECT * FROM v$timezone_file;

FILENAME                VERSION     CON_ID
-------------------- ---------- ----------
timezlrg_42.dat              42          0

registry$database 뷰를 이용해서도 조회 가능

SELECT tz_version FROM registry$database;

TZ_VERSION
----------
        42

PROPERTY_NAME에 따른 PROPERTY_VALUE 기억해두기

COL property_name FORMAT A30
COL property_value FORMAT A20

SELECT property_name, property_value
FROM   database_properties
WHERE  property_name LIKE 'DST_%'
ORDER BY property_name;

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ --------------------
DST_PRIMARY_TT_VERSION         42
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

DB 엔진이 가지고 있는 가장 최신의 timezone file 버전을 보여줌
37537949 패치를 적용했으므로 DB 엔진은 44 버전을 최신 버전으로 가지고 있음

SELECT DBMS_DST.get_latest_timezone_version
FROM   dual;

GET_LATEST_TIMEZONE_VERSION
---------------------------
                         44

3) 업그레이드 준비

utltz_countstats.sql: TIMESTAMP WITH TIME ZONE(TSTZ) 데이터가 포함된 모든 테이블의 num_rows에 대한 옵티마이저 통계를 표시
이 스크립트는 데이터베이스 옵티마이저 통계를 기반으로 하므로 통계가 최신 상태여야 함
만약 최신 상태가 아니라면 utltz_countstar.sql 스크립트를 실행해 통계를 최신 상태로 만든 후
utltz_countstats.sql 실행

@?/rdbms/admin/utltz_countstar.sql

Session altered.

.
Estimating amount of TSTZ data using COUNT(*).
This might take some time ...
.
For SYS tables first ...
Note: empty tables are not listed.
Owner.TableName.ColumnName - COUNT(*) of that column
SYS.AQ$_ALERT_QT_S.CREATION_TIME - 4
SYS.AQ$_ALERT_QT_S.DELETION_TIME - 4
SYS.AQ$_ALERT_QT_S.MODIFICATION_TIME - 4
SYS.AQ$_AQ$_MEM_MC_S.CREATION_TIME - 3
SYS.AQ$_AQ$_MEM_MC_S.DELETION_TIME - 3
SYS.AQ$_AQ$_MEM_MC_S.MODIFICATION_TIME - 3
SYS.AQ$_AQ_PROP_TABLE_S.CREATION_TIME - 1
SYS.AQ$_AQ_PROP_TABLE_S.DELETION_TIME - 1
SYS.AQ$_AQ_PROP_TABLE_S.MODIFICATION_TIME - 1
SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.CREATION_TIME - 1
SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.DELETION_TIME - 1
SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.MODIFICATION_TIME - 1
SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.CREATION_TIME - 1
SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.DELETION_TIME - 1
SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.MODIFICATION_TIME - 1
SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.CREATION_TIME - 3
SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.DELETION_TIME - 3
SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.MODIFICATION_TIME - 3
SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.CREATION_TIME - 1
SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.DELETION_TIME - 1
SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.MODIFICATION_TIME - 1
SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.CREATION_TIME - 1
SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.DELETION_TIME - 1
SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.MODIFICATION_TIME - 1
SYS.AQ$_SUBSCRIBER_TABLE.CREATION_TIME - 1
SYS.AQ$_SUBSCRIBER_TABLE.DELETION_TIME - 1
SYS.AQ$_SUBSCRIBER_TABLE.MODIFICATION_TIME - 1
SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.CREATION_TIME - 4
SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.DELETION_TIME - 4
SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.MODIFICATION_TIME - 4
SYS.ATSK$_SCHEDULE_CONTROL.MRCT_TASK_TIME_TZ - 1
SYS.KET$_AUTOTASK_STATUS.ABA_START_TIME - 1
SYS.KET$_AUTOTASK_STATUS.ABA_STATE_TIME - 1
SYS.KET$_AUTOTASK_STATUS.MW_RECORD_TIME - 1
SYS.KET$_AUTOTASK_STATUS.MW_START_TIME - 1
SYS.KET$_AUTOTASK_STATUS.RECONCILE_TIME - 1
SYS.KET$_CLIENT_CONFIG.FIELD_2 - 7
SYS.KET$_CLIENT_CONFIG.LAST_CHANGE - 7
SYS.OPTSTAT_HIST_CONTROL$.SPARE6 - 45
SYS.OPTSTAT_HIST_CONTROL$.SVAL2 - 45
SYS.OPTSTAT_SNAPSHOT$.TIMESTAMP - 641
SYS.OPTSTAT_USER_PREFS$.CHGTIME - 72
SYS.RADM_FPTM$.TSWTZ_COL - 1
SYS.REG$.NTFN_GROUPING_START_TIME - 2
SYS.REG$.REG_TIME - 2
SYS.SCHEDULER$_EVENT_LOG.LOG_DATE - 29
SYS.SCHEDULER$_GLOBAL_ATTRIBUTE.ATTR_TSTAMP - 11
SYS.SCHEDULER$_JOB.END_DATE - 22
SYS.SCHEDULER$_JOB.LAST_ENABLED_TIME - 22
SYS.SCHEDULER$_JOB.LAST_END_DATE - 22
SYS.SCHEDULER$_JOB.LAST_START_DATE - 22
SYS.SCHEDULER$_JOB.NEXT_RUN_DATE - 22
SYS.SCHEDULER$_JOB.START_DATE - 22
SYS.SCHEDULER$_SCHEDULE.END_DATE - 4
SYS.SCHEDULER$_SCHEDULE.REFERENCE_DATE - 4
SYS.SCHEDULER$_WINDOW.ACTUAL_START_DATE - 9
SYS.SCHEDULER$_WINDOW.END_DATE - 9
SYS.SCHEDULER$_WINDOW.LAST_START_DATE - 9
SYS.SCHEDULER$_WINDOW.MANUAL_OPEN_TIME - 9
SYS.SCHEDULER$_WINDOW.NEXT_START_DATE - 9
SYS.SCHEDULER$_WINDOW.START_DATE - 9
SYS.WRI$_ALERT_HISTORY.CREATION_TIME - 7
SYS.WRI$_ALERT_HISTORY.TIME_SUGGESTED - 7
SYS.WRI$_OPTSTAT_AUX_HISTORY.SAVTIME - 18
SYS.WRI$_OPTSTAT_AUX_HISTORY.SPARE6 - 18
SYS.WRI$_OPTSTAT_HISTGRM_HISTORY.SAVTIME - 17951
SYS.WRI$_OPTSTAT_HISTGRM_HISTORY.SPARE6 - 17951
SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY.SAVTIME - 28948
SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY.SPARE6 - 28948
SYS.WRI$_OPTSTAT_IND_HISTORY.SAVTIME - 2238
SYS.WRI$_OPTSTAT_IND_HISTORY.SPARE6 - 2238
SYS.WRI$_OPTSTAT_OPR.END_TIME - 122
SYS.WRI$_OPTSTAT_OPR.SPARE6 - 122
SYS.WRI$_OPTSTAT_OPR.START_TIME - 122
SYS.WRI$_OPTSTAT_OPR_TASKS.END_TIME - 6236
SYS.WRI$_OPTSTAT_OPR_TASKS.SPARE6 - 6236
SYS.WRI$_OPTSTAT_OPR_TASKS.START_TIME - 6236
SYS.WRI$_OPTSTAT_TAB_HISTORY.SAVTIME - 2376
SYS.WRI$_OPTSTAT_TAB_HISTORY.SPARE6 - 2376
SYS.WRM$_DATABASE_INSTANCE.STARTUP_TIME_TZ - 3
SYS.XS$PRIN.END_DATE - 15
SYS.XS$PRIN.START_DATE - 15
Total count * of SYS TSTZ columns is : 123305
There are in total 169 SYS TSTZ columns.
.
For non-SYS tables ...
Note: empty tables are not listed.
Owner.TableName.ColumnName - COUNT(*) of that column
GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.CREATION_TIME - 1
GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.DELETION_TIME - 1
GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.MODIFICATION_TIME - 1
WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.CREATION_TIME - 1
WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.DELETION_TIME - 1
WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.MODIFICATION_TIME - 1
WMSYS.WM$WORKSPACES_TABLE$.CREATETIME - 1
WMSYS.WM$WORKSPACES_TABLE$.LAST_CHANGE - 1
Total count * of non-SYS TSTZ columns is :  8
There are in total 17 non-SYS TSTZ columns.
Total Minutes elapsed : 0

Session altered.
@?/rdbms/admin/utltz_countstats.sql

Session altered.

.
Amount of TSTZ data using num_rows stats info in DBA_TABLES.
.
For SYS tables first ...
Note: empty tables are not listed.
Stat date  - Owner.TableName.ColumnName - num_rows
07/03/2026 - SYS.AQ$_ALERT_QT_S.CREATION_TIME - 3
07/03/2026 - SYS.AQ$_ALERT_QT_S.DELETION_TIME - 3
07/03/2026 - SYS.AQ$_ALERT_QT_S.MODIFICATION_TIME - 3
07/03/2026 - SYS.AQ$_AQ$_MEM_MC_S.CREATION_TIME - 3
07/03/2026 - SYS.AQ$_AQ$_MEM_MC_S.DELETION_TIME - 3
07/03/2026 - SYS.AQ$_AQ$_MEM_MC_S.MODIFICATION_TIME - 3
07/03/2026 - SYS.AQ$_AQ_PROP_TABLE_S.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_AQ_PROP_TABLE_S.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_AQ_PROP_TABLE_S.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_ORA$PREPLUGIN_BACKUP_QTB_S.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_PDB_MON_EVENT_QTABLE$_S.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.CREATION_TIME - 3
07/03/2026 - SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.DELETION_TIME - 3
07/03/2026 - SYS.AQ$_SCHEDULER$_EVENT_QTAB_S.MODIFICATION_TIME - 3
07/03/2026 - SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER$_REMDB_JOBQTAB_S.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_SCHEDULER_FILEWATCHER_QT_S.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_SUBSCRIBER_TABLE.CREATION_TIME - 1
07/03/2026 - SYS.AQ$_SUBSCRIBER_TABLE.DELETION_TIME - 1
07/03/2026 - SYS.AQ$_SUBSCRIBER_TABLE.MODIFICATION_TIME - 1
07/03/2026 - SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.CREATION_TIME - 4
07/03/2026 - SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.DELETION_TIME - 4
07/03/2026 - SYS.AQ$_SYS$SERVICE_METRICS_TAB_S.MODIFICATION_TIME - 4
07/03/2026 - SYS.KET$_AUTOTASK_STATUS.ABA_START_TIME - 1
07/03/2026 - SYS.KET$_AUTOTASK_STATUS.ABA_STATE_TIME - 1
07/03/2026 - SYS.KET$_AUTOTASK_STATUS.MW_RECORD_TIME - 1
07/03/2026 - SYS.KET$_AUTOTASK_STATUS.MW_START_TIME - 1
07/03/2026 - SYS.KET$_AUTOTASK_STATUS.RECONCILE_TIME - 1
07/03/2026 - SYS.KET$_CLIENT_CONFIG.FIELD_2 - 7
07/03/2026 - SYS.KET$_CLIENT_CONFIG.LAST_CHANGE - 7
07/03/2026 - SYS.OPTSTAT_HIST_CONTROL$.SPARE6 - 45
07/03/2026 - SYS.OPTSTAT_HIST_CONTROL$.SVAL2 - 45
07/03/2026 - SYS.OPTSTAT_SNAPSHOT$.TIMESTAMP - 579
07/03/2026 - SYS.OPTSTAT_USER_PREFS$.CHGTIME - 72
07/03/2026 - SYS.RADM_FPTM$.TSWTZ_COL - 1
07/03/2026 - SYS.REG$.NTFN_GROUPING_START_TIME - 2
07/03/2026 - SYS.REG$.REG_TIME - 2
07/03/2026 - SYS.SCHEDULER$_EVENT_LOG.LOG_DATE - 29
07/03/2026 - SYS.SCHEDULER$_GLOBAL_ATTRIBUTE.ATTR_TSTAMP - 11
07/03/2026 - SYS.SCHEDULER$_JOB.END_DATE - 21
07/03/2026 - SYS.SCHEDULER$_JOB.LAST_ENABLED_TIME - 21
07/03/2026 - SYS.SCHEDULER$_JOB.LAST_END_DATE - 21
07/03/2026 - SYS.SCHEDULER$_JOB.LAST_START_DATE - 21
07/03/2026 - SYS.SCHEDULER$_JOB.NEXT_RUN_DATE - 21
07/03/2026 - SYS.SCHEDULER$_JOB.START_DATE - 21
07/03/2026 - SYS.SCHEDULER$_SCHEDULE.END_DATE - 4
07/03/2026 - SYS.SCHEDULER$_SCHEDULE.REFERENCE_DATE - 4
07/03/2026 - SYS.SCHEDULER$_WINDOW.ACTUAL_START_DATE - 9
07/03/2026 - SYS.SCHEDULER$_WINDOW.END_DATE - 9
07/03/2026 - SYS.SCHEDULER$_WINDOW.LAST_START_DATE - 9
07/03/2026 - SYS.SCHEDULER$_WINDOW.MANUAL_OPEN_TIME - 9
07/03/2026 - SYS.SCHEDULER$_WINDOW.NEXT_START_DATE - 9
07/03/2026 - SYS.SCHEDULER$_WINDOW.START_DATE - 9
07/03/2026 - SYS.WRI$_ALERT_HISTORY.CREATION_TIME - 1
07/03/2026 - SYS.WRI$_ALERT_HISTORY.TIME_SUGGESTED - 1
07/03/2026 - SYS.WRI$_OPTSTAT_HISTGRM_HISTORY.SAVTIME - 17798
07/03/2026 - SYS.WRI$_OPTSTAT_HISTGRM_HISTORY.SPARE6 - 17798
07/03/2026 - SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY.SAVTIME - 27618
07/03/2026 - SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY.SPARE6 - 27618
07/03/2026 - SYS.WRI$_OPTSTAT_IND_HISTORY.SAVTIME - 2236
07/03/2026 - SYS.WRI$_OPTSTAT_IND_HISTORY.SPARE6 - 2236
07/03/2026 - SYS.WRI$_OPTSTAT_OPR.END_TIME - 93
07/03/2026 - SYS.WRI$_OPTSTAT_OPR.SPARE6 - 93
07/03/2026 - SYS.WRI$_OPTSTAT_OPR.START_TIME - 93
07/03/2026 - SYS.WRI$_OPTSTAT_OPR_TASKS.END_TIME - 6184
07/03/2026 - SYS.WRI$_OPTSTAT_OPR_TASKS.SPARE6 - 6184
07/03/2026 - SYS.WRI$_OPTSTAT_OPR_TASKS.START_TIME - 6184
07/03/2026 - SYS.WRI$_OPTSTAT_TAB_HISTORY.SAVTIME - 2257
07/03/2026 - SYS.WRI$_OPTSTAT_TAB_HISTORY.SPARE6 - 2257
07/03/2026 - SYS.WRM$_DATABASE_INSTANCE.STARTUP_TIME_TZ - 1
07/03/2026 - SYS.XS$PRIN.END_DATE - 15
07/03/2026 - SYS.XS$PRIN.START_DATE - 15
Total numrows of SYS TSTZ columns is : 119732
There are in total 169 SYS TSTZ columns.
.
For non-SYS tables ...
Note: empty tables are not listed.
Stat date  - Owner.Tablename.Columnname - num_rows
07/03/2026 - GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.CREATION_TIME - 1
07/03/2026 - GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.DELETION_TIME - 1
07/03/2026 - GSMADMIN_INTERNAL.AQ$_CHANGE_LOG_QUEUE_TABLE_S.MODIFICATION_TIME -
1
07/03/2026 - WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.CREATION_TIME - 1
07/03/2026 - WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.DELETION_TIME - 1
07/03/2026 - WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_S.MODIFICATION_TIME - 1
07/03/2026 - WMSYS.WM$WORKSPACES_TABLE$.CREATETIME - 1
07/03/2026 - WMSYS.WM$WORKSPACES_TABLE$.LAST_CHANGE - 1
Total numrows of non-SYS TSTZ columns is : 8
There are in total 17 non-SYS TSTZ columns.
Total Minutes elapsed : 0

Session altered.

Prepare Begin-End
여기에 Prepare 과정이 Begin부터 End까지 포함
현재 DST 버전과 최신 DST 버전이 찍힘

@?/rdbms/admin/utltz_upg_check.sql

Session altered.

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 19.0.0.0 .
INFO: Database RDBMS DST version is DSTv42 .
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 DSTv44 .
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 utltz_upg_apply.sql to do the actual RDBMS DST update.
INFO: Note that the utltz_upg_apply.sql script will
INFO: restart the database 2 times WITHOUT any confirmation or prompt.

Session altered.

 

참고) 만약 RAC 환경이라면

RAC 데이터베이스를 Single 인스턴스로 변경해야 함(cluster_database를 FALSE로 설정)
그렇지 않으면 utltz_upg_check.sql을 실행할 때 아래와 같은 경고가 표시

...
WARNING: This RAC database is not started in single instance mode.
WARNING: Set cluster_database = false and start as single instance
WARNING: BEFORE running utltz_upg_apply.sql!
WARNING: This is REQUIRED!
...

RAC 데이터베이스 -> Single 인스턴스로 변경 방법(cluster_database를 FALSE로 설정)

1) #2 종료
2) #1 로 접속 후 cluster_database 파라미터 false로 변경
3) #1 재시작

[oracle@blt01~]$ srvctl stop instance -d bltdb -i bltdb2 -f        

[oracle@~]$ ~]$ bltdb1
SYS@bltdb1> alter system set cluster_database=false scope=spfile;

System altered.

SYS@bltdb1> shutdown immediate
SYS@bltdb1> startup

4) Timezone 업그레이드(Time Zone File 업그레이드) : non-CDB

timezone 업그레이드 과정 중에는 어떤 애플리케이션도 데이터베이스에서 timezone 데이터를 조회하거나 삽입해서는 안 됨

DB 엔진이 가진 가장 최신 Timezone 버전(DBMS_DST.get_latest_timezone_version)으로 업그레이드

utltz_upg_check.sql가 성공적으로 실행되면 utltz_upg_apply.sql을 사용하여 Timezone 업그레이드 실행
이 과정에서 데이터베이스가 두 번 재시작

  • 첫 번째 재시작에서는 UPGRADE 모드로 데이터베이스를 재시작하여 DST 업그레이드를 시작하고 SYS 소유의 모든 TSTZ 데이터를 업데이트
  • 두 번째 재시작에서는 NORMAL 모드로 데이터베이스를 재시작하여 SYS 소유가 아닌 TSTZ 데이터를 업그레이드
@?/rdbms/admin/utltz_upg_apply.sql

Session altered.

INFO: If an ERROR occurs, the script will EXIT SQL*Plus.
INFO: The database RDBMS DST version will be updated to DSTv44 .
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 2499804176 bytes
Fixed Size                  8928272 bytes
Variable Size             536870912 bytes
Database Buffers         1946157056 bytes
Redo Buffers                7847936 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 2499804176 bytes
Fixed Size                  8928272 bytes
Variable Size             536870912 bytes
Database Buffers         1946157056 bytes
Redo Buffers                7847936 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: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_L"
Number of failures: 0
Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_S"
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 DSTv44 .
INFO: The RDBMS DST update is successfully finished.
INFO: Make sure to exit this SQL*Plus session.
INFO: Do not use it for timezone related selects.

Session altered.

dba_tstz_tables 뷰는 timezone 파일 업그레이드 과정에서 처리되는 테이블과 해당 테이블의 현재 업그레이드 상태를 표시

set lines 300 pages 1000
COLUMN owner FORMAT A30
COLUMN table_name FORMAT A30

SELECT owner,
       table_name,
       upgrade_in_progress
FROM   dba_tstz_tables
ORDER BY 1,2;

OWNER                          TABLE_NAME                     UPG
------------------------------ ------------------------------ ---
DBSNMP                         MGMT_DB_FEATURE_LOG            NO
GSMADMIN_INTERNAL              AQ$_CHANGE_LOG_QUEUE_TABLE_L   NO
GSMADMIN_INTERNAL              AQ$_CHANGE_LOG_QUEUE_TABLE_S   NO
SYS                            ACCHK_EVENTS                   NO
SYS                            ACCHK_SESSION                  NO
SYS                            ACCHK_STATISTICS               NO
SYS                            ACLMVREFSTAT$                  NO
SYS                            ALERT_QT                       NO
SYS                            AQ$_ALERT_QT_L                 NO
SYS                            AQ$_ALERT_QT_S                 NO
SYS                            AQ$_AQ$_MEM_MC_L               NO
SYS                            AQ$_AQ$_MEM_MC_S               NO
SYS                            AQ$_AQ_PROP_TABLE_L            NO
SYS                            AQ$_AQ_PROP_TABLE_S            NO
SYS                            AQ$_DEQUEUE_LOG_PARTITION_MAP  NO
SYS                            AQ$_DURABLE_SUBS               NO
SYS                            AQ$_ORA$PREPLUGIN_BACKUP_QTB_L NO
SYS                            AQ$_ORA$PREPLUGIN_BACKUP_QTB_S NO
SYS                            AQ$_PDB_MON_EVENT_QTABLE$_L    NO
SYS                            AQ$_PDB_MON_EVENT_QTABLE$_S    NO
SYS                            AQ$_QUEUE_PARTITION_MAP        NO
SYS                            AQ$_SCHEDULER$_EVENT_QTAB_L    NO
SYS                            AQ$_SCHEDULER$_EVENT_QTAB_S    NO
SYS                            AQ$_SCHEDULER$_REMDB_JOBQTAB_L NO
SYS                            AQ$_SCHEDULER$_REMDB_JOBQTAB_S NO
SYS                            AQ$_SCHEDULER_FILEWATCHER_QT_L NO
SYS                            AQ$_SCHEDULER_FILEWATCHER_QT_S NO
SYS                            AQ$_SUBSCRIBER_TABLE           NO
SYS                            AQ$_SYS$SERVICE_METRICS_TAB_L  NO
SYS                            AQ$_SYS$SERVICE_METRICS_TAB_S  NO
SYS                            ATSK$_SCHEDULE_CONTROL         NO
SYS                            BLOCKCHAIN_TABLE_CHAIN$        NO
SYS                            BLOCKCHAIN_TABLE_DROPPED$      NO
SYS                            FGR$_FILE_GROUPS               NO
SYS                            FGR$_FILE_GROUP_FILES          NO
SYS                            FGR$_FILE_GROUP_VERSIONS       NO
SYS                            IMPDP_STATS                    NO
SYS                            KET$_AUTOTASK_STATUS           NO
SYS                            KET$_CLIENT_CONFIG             NO
SYS                            KET$_CLIENT_TASKS              NO
SYS                            LTXID_TRANS                    NO
SYS                            NOTIFICATION$                  NO
SYS                            NOTIFICATIONS$                 NO
SYS                            OPTSTAT_HIST_CONTROL$          NO
SYS                            OPTSTAT_SNAPSHOT$              NO
SYS                            OPTSTAT_USER_PREFS$            NO
SYS                            RADM_FPTM$                     NO
SYS                            REG$                           NO
SYS                            SCHEDULER$_CONSTRAINTS_STATS   NO
SYS                            SCHEDULER$_EVENT_LOG           NO
SYS                            SCHEDULER$_EVENT_QTAB          NO
SYS                            SCHEDULER$_FILEWATCHER_HISTORY NO
SYS                            SCHEDULER$_FILEWATCHER_RESEND  NO
SYS                            SCHEDULER$_FILE_WATCHER        NO
SYS                            SCHEDULER$_GLOBAL_ATTRIBUTE    NO
SYS                            SCHEDULER$_JOB                 NO
SYS                            SCHEDULER$_JOB_DESTINATIONS    NO
SYS                            SCHEDULER$_JOB_OUT_ARGS        NO
SYS                            SCHEDULER$_JOB_RUN_DETAILS     NO
SYS                            SCHEDULER$_LIGHTWEIGHT_JOB     NO
SYS                            SCHEDULER$_REMDB_JOBQTAB       NO
SYS                            SCHEDULER$_REMOTE_JOB_STATE    NO
SYS                            SCHEDULER$_SCHEDULE            NO
SYS                            SCHEDULER$_STEP_STATE          NO
SYS                            SCHEDULER$_WINDOW              NO
SYS                            SCHEDULER$_WINDOW_DETAILS      NO
SYS                            SCHEDULER_FILEWATCHER_QT       NO
SYS                            STATS_TARGET$                  NO
SYS                            TAB_STATS$                     NO
SYS                            TSM_DST$                       NO
SYS                            TSM_SRC$                       NO
SYS                            WRI$_ADV_AI_COL_USAGE          NO
SYS                            WRI$_ALERT_HISTORY             NO
SYS                            WRI$_ALERT_OUTSTANDING         NO
SYS                            WRI$_OPTSTAT_AUX_HISTORY       NO
SYS                            WRI$_OPTSTAT_HISTGRM_HISTORY   NO
SYS                            WRI$_OPTSTAT_HISTHEAD_HISTORY  NO
SYS                            WRI$_OPTSTAT_IND_HISTORY       NO
SYS                            WRI$_OPTSTAT_OPR               NO
SYS                            WRI$_OPTSTAT_OPR_TASKS         NO
SYS                            WRI$_OPTSTAT_TAB_HISTORY       NO
SYS                            WRM$_DATABASE_INSTANCE         NO
SYS                            WRM$_PDB_INSTANCE              NO
SYS                            WRM$_PDB_IN_SNAP               NO
SYS                            WRM$_PDB_IN_SNAP_BL            NO
SYS                            WRM$_SNAPSHOT                  NO
SYS                            WRMS$_SNAPSHOT                 NO
SYS                            WRR$_REPLAY_DIVERGENCE         NO
SYS                            XS$PRIN                        NO
SYS                            XS$ROLE_GRANT                  NO
WMSYS                          AQ$_WM$EVENT_QUEUE_TABLE_L     NO
WMSYS                          AQ$_WM$EVENT_QUEUE_TABLE_S     NO
WMSYS                          WM$METADATA_MAP_TBL            NO
WMSYS                          WM$MP_PARENT_WORKSPACES_TABLE$ NO
WMSYS                          WM$WORKSPACES_TABLE$           NO
WMSYS                          WM$WORKSPACE_SAVEPOINTS_TABLE$ NO

96 rows selected.

5) 현재 Timezone 버전 조회

Timezone 파일 확인

SELECT * FROM v$timezone_file;

FILENAME                VERSION     CON_ID
-------------------- ---------- ----------
timezlrg_44.dat              44          0

업그레이드 후 v$timezone_file과 registry$database에 출력되는 버전 값이 다를 경우가 있는데, 이는 정상임
-> Doc ID 1255474.1 참고

sql 파일을 이용해 업그레이드할 경우 registry$database까지 변경되는 모습을 확인할 수 있음

SELECT tz_version FROM registry$database;

TZ_VERSION
----------
        44

DST_PRIMARY_TT_VERSION이 44로 올라고 업그레이드 상태는 NONE으로 바뀜

COL property_name FORMAT A30
COL property_value FORMAT A20

SELECT property_name, property_value
FROM   database_properties
WHERE  property_name LIKE 'DST_%'
ORDER BY property_name;

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ --------------------
DST_PRIMARY_TT_VERSION         44
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

참고
Upgrade Oracle Database Time Zone (DST) version: Key Considerations

728x90