9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Database 19c から 23ai へ PDB リモート・クローン移行してみてみた

Last updated at Posted at 2023-11-01

Oracle Database 23ai へのバージョンアップ移行は、PDB リモート・クローンです。
19c 以前では手動アップグレードする必要がありましたが、21c より、AutoUpgrade機能が追加されました。PDBをオープンすると、Oracle DatabaseによってPDBとCDBとの互換性がチェックされ、PDBとCDBルートの間でバージョンの不一致があった場合は、自動的にアップグレードされます。

ということで、PDBバージョン・アップ移行の手順がより簡単になったので、オンプレミスの 19c を Oracle Cloud Infrastructure (OCI) の 23ai へ PDBリモート・クローンしてみてみます。

■ 構成イメージ

構成図2.jpg
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 していることを確認できます。

Alert Log
[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コンソールに登録されます。
image.png

■ おまけ: 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 の複数のリリースに渡る変更、サポート終了および非推奨リスト

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?