Oracle Database 23ai へのバージョンアップ移行は、PDB リモート・クローンです。
19c 以前では手動アップグレードする必要がありましたが、21c より、AutoUpgrade機能が追加されました。PDBをオープンすると、Oracle DatabaseによってPDBとCDBとの互換性がチェックされ、PDBとCDBルートの間でバージョンの不一致があった場合は、自動的にアップグレードされます。
ということで、PDBバージョン・アップ移行の手順がより簡単になったので、オンプレミスの 19c を Oracle Cloud Infrastructure (OCI) の 23ai へ PDBリモート・クローンしてみてみます。
■ 構成イメージ
Oracle Database 19c, 23ai それぞれの環境は以前作成した環境を使用します。
・19c 手順: Oracle Real Application Clusters 19c (RAC)作成
・23ai 手順: OCI Oracle Database 23ai 作成
・オンプレミス-OCI接続: OCI と Cisco 841M ルーターを IKEv2 と BGP で IPSec VPN接続
・オンプレミス環境: VMware ESXi 8 を Intel NUC 13 へ作成
■ 前提条件確認
リモートPDBのクローン作成ドキュメントを確認して前提条件確認を確認します。
主なものはつぎのようなものがあります。
⚫︎ 一般的な前提条件
・「PDB作成の一般的な前提条件」で説明されている前提条件を満たす
・CREATE PLUGGABLE DATABASE を含むCDBのルートに対するシステム権限が必要
・ソースとターゲットは次の要件を満たしていることが必要
- 同じエンディアンネス
- ソースのDatabase Optionは、ターゲットと同じか、そのサブセットであることが必要
- アプリケーションPDB構成の場合、ソースPDBのアプリケーション名およびバージョンは、ターゲット・アプリケーション・コンテナのアプリケーション名およびバージョンと一致することが必要
⚫︎ ソースPDBのオープンモードの前提条件
・リモートCDBがローカルUNDOモードでない場合、ソースPDBは読取り専用モード
・リモートCDBがARCHIVELOGモードでない場合、ソースPDBは読取り専用モード
・リフレッシュ可能なPDBの場合、ソースPDBはARCHIVELOGモードおよびローカルUNDOモード
他には次のような前提条件もあります。
⚫︎文字セットの前提条件
⚫︎データベースリンクの前提条件
・参考: リモートPDBのクローン作成: 前提条件
■ Source DB (19c) 作業
⚫︎ Source DB (PDB19c) 確認
1) CDB接続
[oracle@rac19c-node1 ~]$ sql / as sysdba
SQLcl: Release 19.1 Production on Thu Nov 02 08:12:08 2023
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
2) Version 確認
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------
BANNER_LEGACY CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
3) CDB の UNDO モード 確認
リモート CDB がローカル UNDO モードではない場合、ソース PDB は読取り専用モードで開く必要があります。
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='LOCAL_UNDO_ENABLED';
PROPERTY_NAME
--------------------------------------------------------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------
LOCAL_UNDO_ENABLED
TRUE
4) ARCHIVELOG モード確認
リモート CDB が ARCHIVELOG モードでない場合は、ソース PDB を読取り専用モードで開く必要があります。
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
5) ソース PDB 確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
4 PDB19C READ WRITE NO
6) ソース PDB 接続
SQL> alter session set container=PDB19C;
Session altered.
7) ソース PDB 接続確認
SQL> show con_name
CON_NAME
------------------------------
PDB19C
⚫︎ Database Link 接続ユーザー作成
1) リモート・クローン用ユーザー作成
SQL> create user remote_user_for_clone identified by <Password>;
User created.
SQL> grant create session,create pluggable database to remote_user_for_clone;
Grant succeeded.
■ Target Database (23ai) 作業
データベース・リンクは、(リモートCDBではなく)ローカル CDB に存在する必要があります。
CREATE PLUGGABLE DATABASE ローカル CDBのルートから文を発行する場合は、FROM 句でクローニングされる PDB を含むリモート CDB へのデータベース・リンクを指定する必要があります。
データベース・リンクは、ローカル CDB からリモート CDB のルートまたはリモート・ソース PDB に接続します。
⚫︎ Source Database 接続用 SQL*NET 設定
1) tnsnames.ora 設定
[oracle@basedb23ai-tokyo ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
Source_PDB19c =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb19c.oracle.com)
)
)
2) tnsnames.ora 設定確認
作成した接続記述子で Source Database へ接続できることを確認
[oracle@basedb23ai-tokyo ~]$ sql system/<Password>@Source_PDB19c
SQLcl: Release 23.2 Production on Wed Nov 01 15:41:28 2023
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Last Successful login time: Wed Nov 01 2023 23:44:58 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show con_name
CON_NAME
------------------------------
PDB19C
⚫︎ Source Database 接続用 Database link 作成
1) Database link 作成
SQL> create database link Source_PDB19c connect to remote_user_for_clone identified by <Password> using 'Source_PDB19c';
Database link created.
2) Database link 接続確認
select * from dual@Source_PDB19c;
DUM
---
X
⚫︎ ORA-02085 発生した場合
1) Database link 接続確認で ORA-02085
SQL> select * from dual@Source_PDB19c;
select * from dual@Source_PDB19c
*
ERROR at line 1:
ORA-02085: database link SOURCE_PDB19C.CLIENTSUBNET.VCNEXATOKYO.ORACLEVCN.COM
connects to PDB19C.ORACLE.COM
Help: https://docs.oracle.com/error-help/db/ora-02085/
2) ORA-02085 調査
次のドキュメントに ORA-0208の内容があります
・参考: Database Error Messages: ORA-02085
create a database link with the same name as the database it connects to, or set global_names=false.
3) ORA-02085 対応
Set global_names = FALSEを設定
SQL> ALTER SESSION SET global_names = FALSE;
Session altered.
4) Database link 接続確認
SQL> select * from dual@Source_PDB19c;
DUM
---
X
■ PDB リモート・クローン移行
Target Databasae でリモート・クローンで PDB作成を実行します。
SQL> create pluggable database PDB19c from PDB19c@Source_PDB19c keystore identified by <Password>;
Pluggable database created.
⚫︎ リモート・クローン PDB 作成確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 PDB19C MOUNTED
⚫︎ PDB オープン
1) PDB オープン
SQL> ALTER PLUGGABLE DATABASE PDB19c OPEN;
2) Alert Log確認
アラート・ログを確認すると次のように自動 Upgrade していることを確認できます。
[oracle@basedb23ai-tokyo ~]$ tail -f /u01/app/oracle/diag/rdbms/${ORACLE_UNQNAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log
・・・
PDB19C_CLONE(5):Starting Upgrade on PDB Open
・・・
PDB19C_CLONE(5):alter database upgrade sync on
PDB19C_CLONE(5):Completed: alter database upgrade sync on
3) PDB オープン確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 PDB19C READ WRITE NO
⚫︎ PDB_PLUG_IN_VIOLATIONS確認
PDBオープン時にPDBとCDBとの互換性がチェックがされます。
その時に PDB_PLUG_IN_VIOLATIONS ビュー上に非互換性に関する情報がTYPE列値に 'ERROR' となっているものが自動アップグレードで対処され、STATUS='RESOLVED'になります。
PDB 再起動 するとこのERRORは起動時になくなります。
PDB_PLUG_IN_VIOLATIONS の TYPE='WARNING'値について
PDB には、接続先の CDB よりもサブセット (少ない) オプションがインストールされていても問題はないため、PDB_PLUG_IN_VIOLATIONS に WARNING メッセージが表示されますが、無視しても問題ありません。
1) 初回 PDB Open 時の PDB_PLUG_IN_VIOLATIONS 確認
SQL> select * from PDB_PLUG_IN_VIOLATIONS Where NAME='PDB19c' and TYPE='ERROR';
TIME NAME CAUSE TYPE ERROR_NUMBER LINE MESSAGE STATUS ACTION CON_ID
__________________________________ _________ ________________ ________ _______________ _______ ________________________________________________________________________________________________________ ___________ ______________________________________________________________ _________
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 1 Database option CATALOG mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C VSN not match ERROR 0 1 PDB's version does not match CDB's version: PDB's version 19.0.0.0.0. CDB's version 23.0.0.0.0. RESOLVED Either upgrade the PDB or reload the components in the PDB. 4
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 2 Database option CATPROC mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 3 Database option OWM mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 5 Database option XDB mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
2) PDB 再起動
SQL> ALTER PLUGGABLE DATABASE PDB19c close;
Pluggable database PDB19C altered.
SQL> ALTER PLUGGABLE DATABASE PDB19c OPEN;
Pluggable database PDB19C altered.
3) PDB_PLUG_IN_VIOLATIONS 確認
TIME列を確認し、初回確認時と同じデーター行が表示され、再起動以降の TIME は、'ERROR'データないことを確認
SQL> select * from PDB_PLUG_IN_VIOLATIONS Where NAME='PDB19c' and TYPE='ERROR';
TIME NAME CAUSE TYPE ERROR_NUMBER LINE MESSAGE STATUS ACTION CON_ID
__________________________________ _________ ________________ ________ _______________ _______ ________________________________________________________________________________________________________ ___________ ______________________________________________________________ _________
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 1 Database option CATALOG mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C VSN not match ERROR 0 1 PDB's version does not match CDB's version: PDB's version 19.0.0.0.0. CDB's version 23.0.0.0.0. RESOLVED Either upgrade the PDB or reload the components in the PDB. 4
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 2 Database option CATPROC mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 3 Database option OWM mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB 1
01-NOV-23 02.56.08.695042000 AM PDB19C OPTION ERROR 0 5 Database option XDB mismatch: PDB installed version 19.0.0.0.0. CDB installed version 23.0.0.0.0. RESOLVED Fix the database option in the PDB or the CDB
⚫︎ OCIコンソール PDB 情報登録確認
1時間程度後に追加した PDB19cがOCIコンソールに登録されます。
■ おまけ: CDBおよびPDBでの AutoUpgrade機能の無効化と有効化
PDBまたは非CDBが新しいリリースのコンテナ・データベース(CDB)に接続されると、オープンしたPDBで、PDBまたは非CDBがCDBとの互換であるためにアップグレードが必要かどうかが検出されます。
リプレイ・アップグレード・プロセスをオフまたはオフにすることもできます。
この構文は'PDB_UPGRADE_SYNC'プロパティを変更します。このプロパティは、ONの場合は1に設定され、OFFの場合は0に設定される数値です。数が正の場合、catctl.plはリプレイ・アップグレード・プロセスを使用します。
このプロパティは、CDB$ROOTまたはPDBに設定できます。ROOTで無効にされている場合、catctl.plはどのPDBにもリプレイ・アップグレード・プロセスを使用しません。ROOTで有効にされていると、PDBはこの値を継承することも、独自の値を設定することもできます。
● PDB AutoUpgrade機能の無効化
1) sql 接続
CDBへ接続します。
[oracle@basedb23ai-tokyo ~]$ sql / as sysdba
SQLcl: Release 24.1 Production on Fri May 03 13:29:47 2024
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai EE Extreme Perf Release 23.0.0.0.0 - Production
Version 23.4.0.24.05
2) PDB_UPGRADE_SYNC プロパティ確認
AutoUpgrade機能が ONの場合は1に設定されています。
SQL> select property_name, property_value from database_properties Where property_name='PDB_UPGRADE_SYNC';
PROPERTY_NAME PROPERTY_VALUE
___________________ _________________
PDB_UPGRADE_SYNC 1
3) AutoUpgrade機能の無効化
AutoUpgrade機能をオフにします。
SQL> ALTER DATABASE UPGRADE SYNC OFF;
Database altered.
4) AutoUpgrade機能の無効化確認
AutoUpgrade機能をオフであることを確認
AutoUpgrade機能が OFF の場合は 0 に設定されています。
SQL> select property_name, property_value from database_properties Where property_name='PDB_UPGRADE_SYNC';
PROPERTY_NAME PROPERTY_VALUE
___________________ _________________
PDB_UPGRADE_SYNC 0
● PDB AutoUpgrade機能の有効化
1) AutoUpgrade機能の有効化
SQL> ALTER DATABASE UPGRADE SYNC ON;
Database altered.
2) AutoUpgrade機能の有効化確認
AutoUpgrade機能が ONの場合は 1 に設定されています。
SQL> select property_name, property_value from database_properties Where property_name='PDB_UPGRADE_SYNC';
PROPERTY_NAME PROPERTY_VALUE
___________________ _________________
PDB_UPGRADE_SYNC 1
■ 参考
・ Oracle Databaseでの動作の変更、非推奨となった機能およびサポートが終了した機能
・ DBUA Deprecation and future Desupport in Oracle Database 23c
・ Upgrading Oracle Database Releases Using Replay Upgrade
・ DBUAおよび手動アップグレードの非推奨
・ Multitenant Administrator's Guide
・ Oracle Databaseのダウングレードがサポートされているリリース
・ マルチテナント・アーキテクチャのOracle Databaseの手動アップグレード・シナリオ
・ Upgrade Testing – Online Clone a PDB to 19c
・ CDBおよびPDBでのリプレイ・アップグレード・プロシージャの有効化または無効化
・ DATABASE_PROPERTIES
・ Oracle Database 19c の複数のリリースに渡る変更、サポート終了および非推奨リスト
・ Oracle Database 23ai の複数のリリースに渡る変更、サポート終了および非推奨リスト