10 データおよびアプリケーションの移行

様々な方法を使用して、XEデータベースとの間でデータおよびアプリケーションを移行できます。

あるXEインストールから表およびデータをエクスポートして、別のXEインストールにインポートできます。データをエクスポートするには、11gリリース2以上を使用することをお薦めします。

Oracle Database XE 18cからOracle Database Enterprise Edition 18cへの移行は、切断、接続シナリオのみでサポートされます。XE 18cデータベースからPDBを切断し、同じリリースの別のEnterpise Edition 18cデータベースに接続できます。Oracle Database XE 18cから他のOracle Database 18cオファリングへの移行はサポートされていません。

Oracle Database XE 11.2からOracle Database XE 18cへのアップグレードはサポートされていません。

18c XEからPDBを切断し、18c EEに接続する手順

Oracle Database XE 18cで作成されたプラガブル・データベース(PDB)は、別のマルチテナント・コンテナ・データベース(CDB) Enterprise Edition (EE) 18cに移行できます。

標準のプラグ互換性要件が適用されます。 PDB作成の一般的な前提条件の詳細は、Oracle Multitenant管理者ガイドを参照してください。

たとえば、XE 18c XE CDBからxepdb1を切断し、別の18c EE CDBに接続します。

  • PDBを切断する前に、SQL*Plusを使用してPDBをクローズします。

    注意:

    pdbデータベースをオープンしていない場合は、PDBがすでにクローズしているというエラーが表示される場合があります。
    sqlplus / as sysdba
    ALTER PLUGGABLE DATABASE xepdb1 CLOSE IMMEDIATE;
  • クローズしたPDBを切断し、XMLファイルのパスおよび名前を指定します。
    ALTER PLUGGABLE DATABASE xepdb1 UNPLUG INTO '\tmp\xepdb1.xml';
  • クローズしたPDBを削除し、データファイルを保持します。
    DROP PLUGGABLE DATABASE xepdb1 KEEP DATAFILES;
  • EE環境にログインします。xepdb1メタデータ・ファイルは、そのシステムから使用可能である必要があります。

  • DBMS_PDB.CHECK_PLUG_COMPATIBILITYファンクションを実行して、切断されたPDBがCDBと互換性があるかどうかを確認します。

    SET SERVEROUTPUT ON
    DECLARE
      compatible CONSTANT VARCHAR2(3) := 
        CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
               pdb_descr_file => '\tmp\xepdb1.xml',
               pdb_name       => 'XEPDB1')
        WHEN TRUE THEN 'YES'
        ELSE 'NO'
    END;
    BEGIN
      DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /
  • PDBがCDBと互換性がある場合は、xepdb1を18c EEデータベースに接続できます。

    切断したPDBのデータ・ファイルを使用して、コピーせずにPDBを別のCDBに接続します。
    CREATE PLUGGABLE DATABASE newxepdb USING '\tmp\xepdb1.xml' NOCOPY TEMPFILE REUSE;
  • 接続したPDBのステータスおよびオープン・モードを確認します。
    SELECT pdb_name, STATUS FROM cdb_pdbs WHERE pdb_name='NEWXEPDB';
    SELECT OPEN_MODE FROM V$PDBS WHERE NAME='NEWXEPDB';
    
  • PDBがMOUNTED状態の場合は、PDBをオープンします。
    ALTER PLUGGABLE DATABASE newxepdb OPEN;
  • この例では、次のように仮定します。
    • XMLファイルにファイルの現在の場所が正確に記述されています。したがって、SOURCE_FILE_NAME_CONVERTまたはSOURCE_FILE_DIRECTORY句は不要です。

    • ファイルは、正しい場所に存在します。したがって、NOCOPYが含まれています。

    • PDBにはストレージ制限は必要ありません。したがって、STORAGE句は必要ありません。

    • ターゲットの場所に、XMLファイルで指定されている一時ファイルと同じ名前のファイルがあります。したがって、TEMPFILE REUSE句が必要です。

  • カタログ、catprocおよびutrlpを、接続されたNEWXEPDBで実行します。
    sqlplus / as sysdba
    
    SQL> SHOW PDBS;
    CON_ID CON_NAME         OPEN MODE  RESTRICTED
    ------ ---------------- ---------- ----------        
    2      PDB$SEED         READ ONLY  NO         
    3      ORCLPDB          READ WRITE NO         
    4      NEWXEPDB         READ WRITE YES
    SQL> ALTER SESSION SET CONTAINER=newxepdb;
    SQL> SPOOL catalog.log
    SQL> @%ORACLE_HOME%\rdbms\admin\catalog
    SQL> SPOOL OFF;
    
    SQL> SPOOL catproc.log
    SQL> @%ORACLE_HOME%\rdbms\admin\catproc
    SQL> SPOOL OFF;
    
    SQL> SPOOL utlrp.log
    SQL> @%ORACLE_HOME%\rdbms\admin\utlrp
    SQL> SPOOL OFF;
    
    SELECT COMP_NAME, STATUS, VERSION FROM DBA_REGISTRY;
    
    COMP_NAME                           STATUS       VERSION
    ----------------------------------- ------------ ------------
    Oracle Database Catalog Views       VALID        18.0.0.0.0
    Oracle Database Packages and Types  VALID        18.0.0.0.0
    Oracle Real Application Clusters    OPTION OFF   18.0.0.0.0
    JServer JAVA Virtual Machine        VALID        18.0.0.0.0
    Oracle XDK                          VALID        18.0.0.0.0
    Oracle Database Java Packages       VALID        18.0.0.0.0
    OLAP Analytic Workspace             VALID        18.0.0.0.0
    Oracle XML Database                 VALID        18.0.0.0.0
    Oracle Workspace Manager            VALID        18.0.0.0.0
    Oracle Text                         VALID        18.0.0.0.0
    Oracle Multimedia                   VALID        18.0.0.0.0
    Spatial                             VALID        18.0.0.0.0
    Oracle OLAP API                     VALID        18.0.0.0.0
    Oracle Label Security               VALID        18.0.0.0.0
    Oracle Database Vault               VALID        18.0.0.0.0
    SQL> SELECT OWNER, OBJECT_NAME FROM DBA_INVALID_OBJECTS WHERE STATUS = 'INVALID';
    
    no rows selected

注意: