3

表領域のメタデータのデータポンプエクスポートを実行しようとしています(COURSE)。私は正しい方向に進んでいますか?私のデータポンプディレクトリは次のように作成されました:

CREATE DIRECTORY dpump_dir AS '/mydata/data';

私は初心者ですのでご注意ください。これは、これを実行するための最良の方法である場合とそうでない場合がありますが、これを機能させるように努めたいと思います。どうもありがとう。

declare
      dp_handle       number;
  begin
      dp_handle := dbms_datapump.open(
      operation   => 'EXPORT',
      job_mode    => 'TABLESPACE');

    dbms_datapump.add_file(
      handle    =>  dp_handle,
      filename  => 'courses.dmp',
      directory => 'dpump_dir');

    dbms_datapump.add_file(
      handle    => dp_handle,
      filename  => 'courses.log',
      directory => 'dpump_dir',
      filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

    dbms_datapump.metadata_filter(      
      handle => dp_handle,
      name   => 'TABLESPACE_EXPR',
      value  => '''COURSE''');

    dbms_datapump.start_job(dp_handle);

    dbms_datapump.detach(dp_handle);
  end;
  /    

ERROR at line 1:
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 2926
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3162
ORA-06512: at line 8
4

3 に答える 3

2

これが失敗する理由はいくつかあります。

  1. 書き込みたいファイル ( courses.dmp) は既に存在します。Oracle はファイルをオーバーライドしません。(はい、エラーメッセージはかなり不自由です)
  2. OS ディレクトリが存在/mydata/dataしませ
  3. /mydata/data 存在しますが、Oracle にはディレクトリにアクセスするために必要な権限がありません
  4. 上記のいずれでもないが、スクリプトを実行する Oracle ユーザーに権限が付与read, writeされていないdpump_dir

これらの点が役に立たない場合は、最初add_fileに *.log ファイルを開き ( )、次に*.dmp ファイルを開きます。うまくいけば、Oracle は意味のあるものを *.log ファイルに書き込みます。

于 2015-02-03T14:29:13.817 に答える
1

最初の ADDFILE 呼び出しでエラーが発生しているようです。

ディレクトリ参照を大文字にしてみてください: directory => 'DPUMP_DIR'

于 2010-08-16T01:35:30.017 に答える
0

これを試して:

dbms_datapump.metadata_filter(      
      handle => dp_handle,
      name   => 'TABLESPACE_EXPR',
      value  => '=''COURSE''');

「それでも同じエラー メッセージが表示される」

うーん.... 他の人のコードのリモート デバッグは、SO の最も楽しい側面の 1 つです。とにかく、もう一度推測してみましょう。

/mydata/dataOracleが読み取りおよび書き込み権限を持つOSディレクトリがありますか? CREATE DIRECTORY ステートメントはポインタを作成するだけで、基になる OS ディレクトリは作成しません。

于 2010-08-15T19:51:41.190 に答える