3

次のコマンドを使用して、シーケンスを Oracle のダンプ ファイルにエクスポートしています。

expdp user/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp  include=sequence:HR.EMPLOYEES 

ここで、EMPLOYEES は私のシーケンス名です。ただし、次のエラーが表示されます。

ORA-39001 invalid argument value
ORA-39071 Value for INCLUDE is badly formed
ORA-00920 invalid relational operator

誰かがこれについて案内してもらえますか? 私は何を間違っていますか?

4

3 に答える 3

2

オブジェクト名句は二重引用符で囲む必要があり、関係演算子が必要です:

name_clause はオプションです。オブジェクト タイプ内の特定のオブジェクトをきめ細かく選択できます。これは、型のオブジェクト名のフィルターとして使用される SQL 式です。これは、SQL 演算子と、指定されたタイプのオブジェクト名を比較する値で構成されます。name_clause は、インスタンスに名前があるオブジェクト型にのみ適用されます(たとえば、TABLEには適用できますが、GRANTには適用できません)。名前文字列を区切るには一重引用符が必要なため、オブジェクト タイプとはコロンで区切り、二重引用符で囲む必要があります。

ただし、スキーマ名を含めることもできません。オブジェクト名でなければなりません。HR ユーザーとして接続している場合はexpdp、とにかくそれがデフォルトであり、次のことができます。

expdp hr/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp include=sequence:"= 'EMPLOYEES'"

別の特権ユーザーとして接続している場合は、句を含める必要があります。そうschemasしないと、オブジェクトを見つけることができません。

expdp system/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp schemas=hr include=sequence:"= 'EMPLOYEES'"

オペレーティング システムによっては、さまざまなことをエスケープする必要がある場合があります。

オペレーティング システムによっては、このパラメーターの値を指定するときに引用符を使用すると、エスケープ文字も使用する必要がある場合があります。このパラメータをパラメータ・ファイルに配置することをお薦めします。これにより、コマンドラインで必要になるエスケープ文字の数を減らすことができます。「Data Pumpコマンドラインでの引用符の使用」を参照してください。

Linux/bash では、include 句は次のようになります。

... include=sequence:\"= \'EMPLOYEES\'\" 

二重引用符と単一引用符の両方をエスケープします。以前の質問から、二重引用符のみをエスケープする必要がある Windows を使用している可能性があります。

... include=sequence:\"= 'EMPLOYEES'\" 

最後に、EMPLOYEESテーブル名のように見えます。あなたはおそらく本当に欲しいEMPLOYEES_SEQ

... include=sequence:\"= 'EMPLOYEES_SEQ'\" 
于 2015-11-16T19:27:41.300 に答える