8 以前のバージョンのOracle Database XEからOracle Database Freeへの移行

この項では、Oracle Database Express Edition XE 21cからデータをエクスポートし、Oracle Database 23ai Freeにインポートする方法について説明します。

エクスポートおよびインポート・プロセスを開始する前に、次の点に注意してください。

  • Oracle Database Upgrade Assistant (Oracle DBUA)を使用してアップグレードを実行することはできません。
  • Oracle Database Configuration Assistant (Oracle DBCA)を使用して、以前のバージョンのPDBをOracle Database Freeに接続することはできません。
  • Oracle Database 18c XEユーザーは、最初に21c XEに移行し(「Oracle Database XEの旧バージョンからXE 21cへの移行」を参照)、21c XEからデータをエクスポートしてOracle Database 23ai Freeにインポートする必要があります。

Oracle Database 21c XEとOracle Database 23ai Freeの間でのデータのエクスポートおよびインポート

Oracle Database 21c Express Edition (XE)とOracle Database 23ai Freeの間でデータをエクスポートおよびインポートする方法について学習します。

データのエクスポート

21c XEデータベースからデータをエクスポートするには:

  1. DUMP_DIRディレクトリ・オブジェクトのC:\Temp\dump1ディレクトリを作成します。

    mkdir C:\Temp\dump1
    
  2. 各プラガブル・データベース(PDB)に対して次のステップを実行します。この項のステップは、PDB xepdb1の場合を示しています。

    1. ORACLE_HOMEおよびORACLE_SID環境変数を設定します。

      set ORACLE_SID=XE
      set ORACLE_HOME=C:\oldexpxe\dbhomeXE
    2. SYSDBA権限を使用してユーザーSYSとして21c XEデータベースに接続し、コンテナをxepdb1に切り替えます。

    3. ディレクトリ・オブジェクトDUMP_DIRを作成し、DUMP_DIRディレクトリに対するREADおよびWRITE権限をSYSTEMユーザーに付与します。

      
      SQL> ALTER SESSION SET CONTAINER=xepdb1;
      SQL> CREATE DIRECTORY DUMP_DIR6 AS 'C:\TEMP\dump1';
      SQL> GRANT read, write ON DIRECTORY DUMP_DIR6 TO SYSTEM;
      
    4. 21c XE PDB xepdb1からダンプ・フォルダにデータをエクスポートします。

      %ORACLE_HOME%/bin/expdp system/system_password@dbhost.example.com:1521/xepdb1 full=Y directory=DUMP_DIR6 dumpfile=DB10G.dmp logfile=expdpDB10G.log
      
      
      OUTPUT:Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
      ******************************************************************************
      Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
        C:\TEMP\DUMP1\DB10G.DMP
      Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at .*

      ノート:

      • ご使用のデータベース・ホスト名でdbhost.example.comを置き換えます。必要に応じて、リスナーがリスニングするポート番号で1521を置き換えます。
      • 作成されるデフォルトのPDB名は、21cではxepdb1、23aiではfreepdb1です。
  3. Oracle Database 23ai Freeを同じシステムにインストールする場合は、21c XEをアンインストールします。詳細は、Oracle Database XEのアンインストールを参照してください。

  4. Oracle Database 23ai Freeをインストールします。

データのインポート

データをOracle Database 23ai Freeにインポートするには、PDBごとに次のステップを実行します。この項のステップは、PDB xepdb1からfreepdb1にデータをインポートする場合を示しています。

  1. ORACLE_HOMEおよびORACLE_SID環境変数を設定します。

    set ORACLE_SID=FREE
    set ORACLE_HOME=C:\newimpfree\dbhomeFree
  2. SYSDBA権限を使用してユーザーSYSとして23ai Freeデータベースに接続し、コンテナをfreepdb1に切り替えます。

  3. ディレクトリ・オブジェクトDUMP_DIRを作成し、DUMP_DIRディレクトリに対するREADおよびWRITE権限をSYSTEMユーザーに付与します。

    
    SQL> ALTER SESSION SET CONTAINER=freepdb1;
    SQL> CREATE DIRECTORY DUMP_DIR6 AS 'C:\Temp\dump1';
    SQL> GRANT read, write ON DIRECTORY DUMP_DIR6 TO SYSTEM;
    
  4. エクスポート操作中に作成されたダンプ・フォルダから、23ai Free PDB freepdb1にデータをインポートします。

    %ORACLE_HOME%/bin/impdp system/system_password@dbhost.example.com:1521/freepdb1 full=Y directory=DUMP_DIR6
     dumpfile=DB10G.dmp logfile=impdb23ai_freepdb1.log

    ノート:

    • ご使用のデータベース・ホスト名でdbhost.example.comを置き換えます。必要に応じて、リスナーがリスニングするポート番号で1521を置き換えます。
    • 作成されるデフォルトのPDB名は、21cではxepdb1、23aiではfreepdb1です。

次のエラーは無視してください。

  • ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
  • ORA-31684: オブジェクト型TABLESPACE:"TEMP"はすでに存在します
  • ORA-31684: オブジェクト型TABLESPACE:"USERS"はすでに存在します
  • ORA-39083: オブジェクト型PROC_SYSTEM_GRANTの作成が次のエラーで失敗しました:
  • ORA-29393: ユーザーEM_EXPRESS_ALLは存在しないか、またはログオンされていません
Failing sql is:
BEGIN 
dbms_resource_manager_privs.grant_system_privilege(grantee_name => '"EM_EXPRESS_ALL"', admin_option => TRUE);COMMIT; END; 
ORA-31684: Object type DIRECTORY:"DUMP_DIR6" already exists