ソースCDBを使用した非CDBのOracle Databaseリリースのアップグレード

非CDBデータベースは、ソース・リリースCDBからターゲット・リリースへのアップグレードの一環としてアップグレードできます。

PDBプラグインを使用したPDBとしての非CDBの採用について

非CDBをPDBとして手動で採用するには、非CDBを記述するXMLファイルを生成し、DBMS_PDB.DESCRIBEプロシージャを使用します。その後、切断されたPDBを接続するのと同じように、非CDBに接続します。

非CDBをPDBに自動的に採用およびアップグレードする取得リプレイ・メソッドを使用しないことを選択した場合、非CDBを記述し非CDBをPDBに採用する手動の手順を使用できます。CREATE PLUGGABLE DATABASE ... USING文を使用してPDBを作成します。非CDBがCDBに接続されると、それは新しいPDBですが、ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlスクリプトを使用してデータディクショナリが変換されるまで使用できません。

図5-1 DBMS_PDB.DESCRIBEプロシージャを使用した非CDBの接続

図5-1の説明が続きます
「図5-1 DBMS_PDB.DESCRIBEプロシージャを使用した非CDBの接続」の説明

アプリケーション・コンテナに新しいアプリケーションPDBを作成するのと同じ手法を使用できます。

PDBとしての非CDBの適用

DBMS_PDB.DESCRIBEプロシージャを使用して非CDBをPDBに適用(移動)できます。

この手順により、非CDBのOracle DatabaseをCDB上のPDBに更新できます。この手順を使用するには、最初にCDBを使用して新しいOracle Databaseリリースをインストールする必要があります。
  1. CDBが存在しない場合は作成します。

  2. 非CDBがトランザクション上一貫した状態にあることを確認してください。

  3. 非CDBを読取り専用モードにします。

  4. 非CDBに接続し、DBMS_PDB.DESCRIBEプロシージャを実行して、非CDBを記述するXMLファイルを作成します。

    現行ユーザーには、SYSDBA管理権限が必要です。ユーザーは、接続時にAS SYSDBAを使用して権限を行使する必要があります。

    たとえば、ncdb.xmlという名前のXMLファイルを/disk1/oracleディレクトリに生成し、次のプロシージャを実行します。

    BEGIN
      DBMS_PDB.DESCRIBE(
        pdb_descr_file => '/disk1/oracle/ncdb.xml');
    END;
    /
    

    このプロシージャが正常に完了した後、XMLファイルおよび非CDBデータベース・ファイルを使用して、非CDBをCDBに接続できます。

  5. DBMS_PDB.CHECK_PLUG_COMPATIBILITYファンクションを実行して、非CDBがCDBと互換性があるかどうかを確認します。

    このファンクションを実行する場合は、次のパラメータを設定します。

    • pdb_descr_file - パラメータをXMLファイルへのフルパスに設定します。

    • pdb_name - 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。

    たとえば、/disk1/oracle/ncdb.xmlファイルで記述されている非CDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。

    SET SERVEROUTPUT ON
    DECLARE
      compatible CONSTANT VARCHAR2(3) := 
        CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
               pdb_descr_file => '/disk1/oracle/ncdb.xml',
               pdb_name       => 'NCDB')
        WHEN TRUE THEN 'YES'
        ELSE 'NO'
    END;
    BEGIN
      DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /
    

    出力がYESの場合は非CDBに互換性があり、次のステップに進むことができます。出力がNOの場合は非CDBに互換性がなく、PDB_PLUG_IN_VIOLATIONSビューをチェックして、互換性がない理由を確認できます。続行する前に、すべての違反を修正する必要があります。たとえば、バージョンまたはパッチの不一致は、アップグレードまたはデータパッチのユーティリティを実行して解決する必要があります。違反を修正してから、DBMS_PDB.CHECK_PLUG_COMPATIBILITYを再度実行して、非CDBがCDBと互換性があることを確認します。

  6. 非CDBを停止します。

  7. 非CDBを接続します。

    たとえば、次のSQL文は非CDBをプラグインし、そのファイルを新しい場所にコピーして、非CDBからtbs3ユーザー表領域のみを含めます。

    CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml'
      COPY
      FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
      USER_TABLESPACES=('tbs3');
    

    違反がない場合は、新しいPDBをオープンしないでください。次のステップでオープンします。

    USER_TABLESPACES句を使用すると、非CDB内の複数のテナントに使用されたデータを異なるPDBに分けることができます。この句を指定したCREATE PLUGGABLE DATABASE文を複数使用して、非CDBに存在する他の表領域のデータを含む別のPDBを作成できます。

  8. ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlスクリプトを実行します。このスクリプトは、PDBを初めてオープンする前に実行する必要があります。

    PDBが非CDBでない場合、noncdb_to_pdb.sqlスクリプトを実行する必要はありません。noncdb_to_pdb.sqlスクリプトを実行するには、次のステップを実行します。

    1. PDBにアクセスします。

      現在のユーザーにはSYSDBA管理権限が必要であり、その権限は共通で付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS SYSDBAを使用して権限を行使する必要があります。

    2. noncdb_to_pdb.sqlスクリプトを次のように実行します。

      @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
      

    スクリプトによって、PDBのオープン、変更の実行、および変更の完了時にPDBのクローズが行われます。

  9. 新しいPDBを読取り/書込みモードでオープンします。

    Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスはNORMALになります。

  10. PDBをバックアップします。

    PDBは、バックアップしないとリカバリできません。

    ノート:

    PDBの作成中にエラーが返される場合は、作成されるPDBがUNUSABLE状態である可能性があります。PDBの状態を確認するには、CDB_PDBSまたはDBA_PDBSビューを問い合せます。PDB作成のエラーについてさらに学習するには、アラート・ログを確認してください。使用できないPDBは削除するしかありません。使用できないPDBが作成される可能性があるので、同じ名前のPDBを作成しようとする前に、使用できないPDBを削除する必要があります。

切断されたPDBの接続

切断されたPDBをCDBに接続することで、PDBを作成できます。