9 Oracle Database XE 11.2と18cの間のデータのエクスポートおよびインポート

この項では、Oracle Database XE 11gリリース2 (11.2)とXE 18cとの間でデータをエクスポートおよびインポートする方法について説明します。Oracle Application Express (APEX)が11.2データベースで使用されていたかどうかに応じて、次のいずれかの手順を実行します。

9.1 APEX以外のユーザーのデータのエクスポートおよびインポート

ここにトピックの短い説明を入力します(オプション)。

このトピックでは、Oracle Application Express (APEX)が11.2 XEデータベースで使用されていないときに、Oracle Database XE 11.2とXE 18cデータベースの間でデータをエクスポートおよびインポートする方法について説明します。

データのエクスポート

  1. データを11.2 XEデータベースからエクスポートするには、次の手順を実行します。

    1. DUMP_DIRディレクトリ・オブジェクトのディレクトリ\dump_folderをローカル・ファイル・システムに作成します。

    2. SYSDBA権限を使用してユーザーSYSとして11.2 XEデータベースに接続します。

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

      sqlplus / AS SYSDBA
      SQL> CREATE DIRECTORY DUMP_DIR AS 'C:\temp\dump';
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
    4. dumpフォルダを作成するには、Windowsのコマンド・プロンプトから次のコマンドを実行します。

      mkdir C:\temp\dump
    5. 11.2 XEデータベースからダンプ・フォルダにデータをエクスポートします。

      expdp system/system_password full=Y EXCLUDE=SCHEMA:\"LIKE \'APEX_%\'\",SCHEMA:\"LIKE \'FLOWS_%\'\" directory=DUMP_DIR dumpfile=DB11G.dmp logfile=expdpDB11G.log
  2. Oracle Database XE 18cのインストールが同じシステムで計画されている場合は、XE 11.2をアンインストールします。

    『Oracle Database Express Editionインストレーション・ガイド11gリリース2 (11.2) for Microsoft Windows』のOracle Database XEソフトウェアのアンインストールに関する項を参照してください。

  3. Oracle Database XE 18cをインストールします。

データのインポート

  1. データを18c XEデータベースにインポートするには、次の手順を実行します。

    1. SYSDBA権限を使用してユーザーSYSとして18c XEデータベースに接続します。

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

      sqlplus / AS SYSDBA
      SQL> ALTER SESSION SET CONTAINER=XEPDB1;
      SQL> CREATE DIRECTORY DUMP_DIR AS '\dump_folder';
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
    3. データをダンプ・フォルダから18c XEデータベースにインポートします。

      impdp system/system_password@localhost:listnerport/xepdb1 full=Y EXCLUDE=SCHEMA:\"LIKE \'APEX_%\'\",SCHEMA:\"LIKE \'FLOWS_%\'\" directory=DUMP_DIR dumpfile=DB11G.dmp logfile=impdpDB11G.log
    次のエラーは無視できます。
    • ORA-39083: オブジェクト型TABLESPACE:"SYSAUX"の作成がエラーで失敗しました

    • ORA-31685: 権限が不十分なため、オブジェクト型USER:"SYS"が失敗しました。

    • ORA-39083: オブジェクト型PROCACT_SYSTEMの作成がエラーで失敗しました

    • ORA-01917: ユーザーまたはロール'APEX_040000'は存在しません

    • ORA-31684 "すでに存在します"エラー

9.2 Oracle Application Expressユーザーのデータのエクスポートおよびインポート

この項では、Oracle Application Express (APEX)ユーザーがOracle Database XE 11.2とXE 18cの間でデータをエクスポートおよびインポートする方法について説明します。

データのエクスポート

  1. 11.2 XEデータベースのOracle Application Expressを、データベース18cでサポートされている最小バージョンであるAPEX 5.1.4以上にアップグレードしていない場合はアップグレードします。APEXディストリビューションは、http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.htmlでダウンロードできます。

    関連項目:

    Oracle Database Express Edition内のOracle Application Express (APEX)のアップグレードの詳細は、Application Expressインストレーション・ガイドを参照してください
  2. データを11.2 XEデータベースからエクスポートするには、次の手順を実行します。

    1. ローカル・ファイル・システムにDUMP_DIRディレクトリ・オブジェクトのディレクトリを作成します。

    2. SYSDBA権限を使用してユーザーSYSとして11.2 XEデータベースに接続します。

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

      sqlplus / AS SYSDBA
      SQL> CREATE DIRECTORY DUMP_DIR AS 'C:\temp\dump';
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
      
    4. DUMP_DIRディレクトリの11.2 XEデータベースからデータをエクスポートします。

      expdp system/system_password full=Y directory=DUMP_DIR dumpfile=DB11G.dmp logfile=expdpDB11G.log
      
  3. Oracle Database XE 18cのインストールが同じシステムで計画されている場合は、Oracle Database XE 11.2をアンインストールします。

    『Oracle Database Express Editionインストレーション・ガイド11gリリース2 (11.2) for Microsoft Windows』のOracle Database XEソフトウェアのアンインストールに関する項を参照してください。

  4. Oracle Database XE 18cをインストールします。

データのインポート

  1. データを18c XEデータベースにインポートするには、次の手順を実行します。

    1. SYSDBA権限を使用してユーザーSYSとして18c XEデータベースに接続します。

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

      sqlplus / AS SYSDBA
      SQL> ALTER SESSION SET CONTAINER=XEPDB1;
      SQL> CREATE DIRECTORY DUMP_DIR AS 'C:\temp\dump';;
      SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
      
    3. データをダンプ・フォルダから18c XEデータベースにインポートします。

      impdp system/system_password@localhost/xepdb1 full=Y REMAP_DIRECTORY='C:\app\usernamne\install_dir\oradata\XE\':'\install_dir\oradata\XE\' directory=DUMP_DIR dumpfile=DB11G.dmp logfile=impdpDB11G.log
      

      ディレクトリの再マッピングは、異なるディレクトリ・ファイルのネーミング規則を使用する場合に必要です。REMAP_DIRECTORYパラメータの最初の引数は、11.2 XEデータ・ファイルの場所(ソース)で、2番目の引数は18c XEデータ・ファイルの場所(ターゲット)です。

      impdp REMAP_DIRECTORYパラメータ構文の詳細は、Oracle Databaseユーティリティを参照してください

    次のエラーは無視できます。
    • ORA-39083: オブジェクト型TABLESPACE:"SYSAUX"の作成がエラーで失敗しました

    • ORA-31685: 権限が不十分なため、オブジェクト型USER:"SYS"が失敗しました。

    • ORA-39083: オブジェクト型PROCACT_SYSTEMの作成がエラーで失敗しました

    • ORA-01917: ユーザーまたはロール'APEX_040000'は存在しません

    • ORA-31684 "すでに存在します"エラー

  2. データベース・インポート後スクリプトを実行して、Oracle Application Express (APEX)を構成します。
    1. https://www.oracle.com/technetwork/developer-tools/apex/application-express/apxfix-5137274.zipをダウンロードし、サーバーにapfix.sqlスクリプトを解凍します。

    2. 11.2 XEデータベースでAPEXをアップグレードするために使用したAPEXソースの最上位レベルのディレクトリに、ファイルapxfix.sqlをコピーします。作業ディレクトリをそのソースに変更します。

    3. APEXソフトウェアを所有するスキーマ名を渡すapxfix.sqlを実行します。たとえば、データをエクスポートする前に11.2 XEをAPEX 5.1.4にアップグレードした場合、引数としてスキーマ名APEX_050100を指定します。

      sqlplus / AS SYSDBA
      SQL> ALTER SESSION SET CONTAINER=XEPDB1;
      SQL> @apxfix.sql APEX_050100
      SQL> EXIT
      
    4. 埋込みPL/SQLゲートウェイを構成します。Oracle Application Express (APEX)ソフトウェアにファイル・システム・パスを渡すapex_epg_config.sqlスクリプトを実行します。たとえば、APEXソフトウェアを\tmpに解凍した場合、次のようになります。

      SQL> @apex_epg_config.sql SYSTEM_DRIVE:\TEMP
    5. 埋込みPL/SQLゲートウェイのHTTPポートを設定します。たとえば、HTTPポートを8080に設定するには、次のようにします。

      SQL> ALTER SESSION SET CONTAINER=XEPDB1;
      SQL> EXEC XDB.DBMS_XDB.SETHTTPPORT(8080);
      SQL> COMMIT;
    6. CDB$ROOTに接続し、ANONYMOUSユーザーをロック解除します。

      SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
      SQL> ALTER USER ANONYMOUS ACCOUNT UNLOCK;
      SQL> EXIT