8.4 ヒントとトラブルシューティング

DATAPUMPコマンドは、DBMS_DATAPUMPパッケージを使用してエクスポートおよびインポートを実行する、PL/SQLを作成します。

  • PL/SQLとパラメータのプレビュー

    • -noexecオプションを使用してエクスポートまたはインポートを検証します。このオプションでは、生成されたPL/SQLとパラメータが表示されますが、実行のためにジョブが発行されることはありません。

  • コマンド処理に関する追加情報の取得

    • 追加の診断情報を表示するには、-verboseオプションを使用します。

    • また、このオプションでは、ログの最終行および完了した割合を表示するための、コピーできる問合せが提供されます。

  • ジョブ・ログの表示

    • -waitオプションを使用すると、ログがコンソールに書き込まれます。

    • -wait falseを使用すると、ディレクトリ内のファイルを表示できない場合に、ログをオブジェクト・ストレージにコピーできます。

    • Oracle Databaseリリース12.2以降のバージョンでは、-wait falseを使用すると、次のコード・ブロックでログ・ファイルを表示できます。

      var c clob;
      set long 32000
      begin select to_clob(BFILENAME('DATA_PUMP_DIR','ESQL_<n>.LOG')) into :c from dual; end;
      /
      print c
      
  • ログイン・ユーザーとしてインポートまたはエクスポートする場合は、SYSロールを使用しないことをお薦めします。

  • 表に行を挿入すると、表領域に対する割当て容量があることが確認されます。割当て容量がない場合、DATAPUMPコマンドの実行後に次のエラーが表示されます。ORA-31626: ジョブが存在しません

    この問題を示すコード・スニペットを次に示します。

    *** Error with DataPump command 
    
    grant connect, resource, create session to user1 identified by user1;
    grant read on directory DATA_PUMP_DIR to user1;
    grant write on directory DATA_PUMP_DIR to user1;
    
    SQL> connect <db-connect-string>
    Connected
    
    SQL> datapump export -schemas user1
    
    Datapump Command Start ** at 2022.03.10-15.51.28
    Initiating DATA PUMP
    DATABASE TIME ZONE: VERSION:32 CON_ID:0
    Log
    Location: DATA_PUMP_DIR:ESQL_1614.LOG
    ORA-31626: job does not exist
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 1849
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 6869
    ORA-06512: at line 25
     
    ** Datapump Command End ** at 2022.03.10-15.51.30
    SQL> exit
    
    ***Resolve Error by Granting Tablespace Quota to User
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
     
    SQL> alter user user1 quota 128M on users;
    Grant succeeded.
     
    SQL> connect <db-connect-string>
    Connected.
    
    SQL> datapump export -schemas user1
    
    ** Datapump Command Start ** at 2022.03.10-15.54.15
    Initiating DATA PUMP
    DATABASE TIME ZONE: VERSION:32 CON_ID:0
    Log Location: DATA_PUMP_DIR:ESQL_1616.LOG
    Starting "USER1"."ESQL_1616":
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/TABLE/TABLE
    Processing object type SCHEMA_EXPORT/TABLE/COMMENT
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
    Master table "USER1"."ESQL_1616" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for USER1.ESQL_1616 is:
      /opt/oracle/admin/DB193C/dpdump/D9C3824B6E651CA4E053020014C3358C/ESQL_1616.DMP
    Job "USER1"."ESQL_1616" successfully completed at Thu Mar 10 15:54:52 2022 elapsed 0 00:00:33
    DataPump Operation Status 'COMPLETED'
    Jobname = ESQL_1616
    ** Datapump Command End ** at 2022.03.10-15.54.56