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

このトピックでは、Oracle Database 21c Express Edition (XE)と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. rootユーザーとして、DUMP_DIRディレクトリ・オブジェクトのローカル・ファイル・システムに/opt/dumpディレクトリを作成します。

    mkdir /opt/dump
    chown -R oracle:oinstall /opt/dump
    chmod -R 760 /opt/dump
    
  2. 各プラガブル・データベース(PDB)に対して次のステップを実行します。この項のステップは、PDB xepdb1の場合を示しています。

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

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

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

      /opt/oracle/product/21c/dbhomeXE/bin/sqlplus / AS SYSDBA
      SQL> ALTER SESSION SET CONTAINER=xepdb1;
      SQL> CREATE DIRECTORY DUMP_DIR AS '/opt/dump';
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
      
    4. 21c XE PDB xepdb1からダンプ・フォルダにデータをエクスポートします。

      /opt/oracle/product/21c/dbhomeXE/bin/expdp system/system_password@dbhost.example.com:1521/xepdb1 full=Y directory=DUMP_DIR dumpfile=expdb21c_xepdb1.dmp logfile=expdb21c_xepdb1.log

      ノート:

      • ご使用のデータベース・ホスト名で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環境変数を設定します。

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

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

    /opt/oracle/product/23ai/dbhomeFree/bin/sqlplus / AS SYSDBA
    SQL> ALTER SESSION SET CONTAINER=freepdb1;
    SQL> CREATE DIRECTORY DUMP_DIR AS '/opt/dump';
    SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
    
  4. エクスポート操作中に作成されたダンプ・フォルダから、23ai Free PDB freepdb1にデータをインポートします。

    /opt/oracle/product/23ai/dbhomeFree/bin/impdp system/system_password@dbhost.example.com:1521/freepdb1 full=Y directory=DUMP_DIR dumpfile=expdb21c_xepdb1.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-31684: オブジェクト型USER:"PDBADMIN"はすでに存在します
  • ORA-39083: オブジェクト型PROC_SYSTEM_GRANTの作成が次のエラーで失敗しました:
  • ORA-29393: ユーザーEM_EXPRESS_ALLは存在しないか、またはログオンされていません
  • ORA-39083: オブジェクト型NETWORK_ACL:TABLE:NACL$_ACE_EXPの作成が次のエラーで失敗しました:
  • ORA-01007: 変数への参照がSELECT句にありません。
  • ORA-39342: Data PumpはNETWORK_ACLの依存オブジェクトをインポートしませんでした。前のエラーが原因です
  • ORA-01007: 変数への参照がSELECT句にありません。

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

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

ノート:

Oracle Database 23.x Freeはリリース23.2または23.3を表します。

データのエクスポート

Oracle Database 23.x Freeからデータをエクスポートするには:

  1. rootユーザーとして、DUMP_DIRディレクトリ・オブジェクトのローカル・ファイル・システムに/opt/dumpディレクトリを作成します。

    mkdir /opt/dump
    chown -R oracle:oinstall /opt/dump
    chmod -R 760 /opt/dump
    
  2. 各プラガブル・データベース(PDB)に対して次のステップを実行します。この項のステップは、PDB freepdb1の場合を示しています。

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

      export ORACLE_SID=FREE
      export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
    2. oracleユーザーとしてSYSDBA権限を使用して、ユーザーSYSとして23.x Freeデータベースに接続し、コンテナをfreepdb1に切り替えます。

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

      /opt/oracle/product/23c/dbhomeFree/bin/sqlplus / AS SYSDBA
      SQL> ALTER SESSION SET CONTAINER=freepdb1;
      SQL> CREATE DIRECTORY DUMP_DIR AS '/opt/dump';
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
      
    4. 23.x FreeのPDB freepdb1からダンプ・フォルダにデータをエクスポートします。

      /opt/oracle/product/23c/dbhomeFree/bin/expdp system/system_password@dbhost.example.com:1521/freepdb1 full=Y directory=DUMP_DIR dumpfile=expdb23c_freepdb1.dmp logfile=expdb23c_freepdb1.log

      ノート:

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

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

データのインポート

データをOracle Database 23ai Freeにインポートするには、PDBごとに次のステップを実行します。この項のステップは、23.x Free PDB freepdb1からデータをインポートして、23ai Freeの同じPDB freepdb1を上書きするためのものです。

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

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

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

    /opt/oracle/product/23ai/dbhomeFree/bin/sqlplus / AS SYSDBA
    SQL> ALTER SESSION SET CONTAINER=freepdb1;
    SQL> CREATE DIRECTORY DUMP_DIR AS '/opt/dump';
    SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
    
  4. エクスポート操作中に作成されたダンプ・フォルダから、23ai Free PDB freepdb1にデータをインポートします。

    /opt/oracle/product/23ai/dbhomeFree/bin/impdp system/system_password@dbhost.example.com:1521/freepdb1 full=Y directory=DUMP_DIR dumpfile=expdb23c_freepdb1.dmp logfile=impdb23ai_freepdb1.log

    ノート:

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

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

  • ORA-39342: Data PumpはNETWORK_ACLの依存オブジェクトをインポートしませんでした。前のエラーが原因です
  • ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
  • ORA-31684: オブジェクト型TABLESPACE:"TEMP"はすでに存在します
  • ORA-31684: オブジェクト型TABLESPACE:"USERS"はすでに存在します
  • ORA-31684: オブジェクト型USER:"PDBADMIN"はすでに存在します
  • ORA-31684: オブジェクト型DIRECTORY:"DUMP_DIR"はすでに存在します