データポンプのエクスポートで次のエラーが発生します。
ORA-39165: Schema OFDAT was not found.
最初に、完全なエクスポート権限があることを確認しました。
GRANT EXPORT FULL DATABASE TO OFDAT;
次に、それが可能になる場合に備えて管理オプションを試しました:
GRANT EXPORT FULL DATABASE TO OFDAT WITH ADMIN OPTION;
私はエラーをoerrでより詳しく見ました:
[Oracle@OptTekOracleDB dpdump]$ oerr ora 39165
39165, 00000, "Schema %s was not found."
// *Cause: If exporting or importing over the network, either the user
// specified a schema name that was not found in the source database
// or else the user lacked the proper EXP_FULL_DATABASE or
// IMP_FULL_DATABASE role that would allow them to access another
// schema. For importing from files, the user specified a schema
// name not found in the dump file set.
// *Action: Retry the operation using the correct schema name.
ああ!と思った。私は助成金を持っていますが、これは私が役割を必要としていると言っています。だから私はユーザーに役割を追加しました:
GRANT EXP_FULL_DATABASE TO OFDAT;
引き続き同じエラーが発生します。スキーマが見つかりませんでした。他に試すことは考えられません。
@phil-これが私のexpdpパラメータファイルです。
DUMPFILE="dev_ofdat_2-1-3-0_afterbackfill.dmp"
LOGFILE="exp_dev_ofdat_2-1-3-0_afterbackfill.log"
DIRECTORY=DATA_PUMP_DIR
COMPRESSION=METADATA_ONLY
CONTENT=ALL
SCHEMAS=('OFDAT')
とても簡単です。開始するコマンドラインは次のとおりです。
expdp ofdat PARFILE=exp_dev_ofdat_2-1-3-0_afterbackfill.dat
エラーメッセージを正しく読んだ場合、インポートに使用するダンプファイルには、指定したスキーマ名のコンテンツがないことも示されます。
これらのダンプファイルには、異なるスキーマに関連付けられたコンテンツが含まれている可能性があり、Oracle(より具体的にはIMPDP)はそのコンテンツをインポートしません。
Oracleクライアントソフトウェアをインストールすると、グラフィカルツール「Oracle SQL Developer」が付属します。このツールを使用すると、1つのスキーマからすべてのテーブルとコンテンツをSQLファイルにエクスポートできます。SQLファイルは、必要なスキーマにインポートできます。 Oracleクライアントソフトウェアは無料で提供されますが、Webサイトに登録する必要があります。
その後、標準のダンプツールを使用して、心ゆくまでご利用いただけます。
この方法は、元のスキーマにデータがあまりない場合にのみ役立ちます。これは、巨大なファイルを非常に迅速に生成する可能性があるためです。
このファイルで、元のスキーマの名前を必要なスキーマ名に置き換えて保存します。 「Oracle SQL Developer」ツールを再度使用してこのファイルを実行すると、あなたは黄金色です。
このような問題に遭遇したときは、コマンドをできるだけ単純化したいと思います。すべてのパラメーターをコマンドラインに直接入力し、不要なパラメーターを削除してみます。そして、私はそれを行うためにdbaユーザーを使用します。このようなもの。
expdp {dbausername}/{dbapassword} SCHEMAS=OFDAT DUMPFILE=dev_ofdat_2-1-3-0_afterbackfill.dmp
私の観察はエラーです
ORA-39165: Schema XXXX was not found.
他の問題の代替エラーにすぎない可能性があります。同じオブジェクトタイプでINCLUDE
パラメータを2回使用しているときにメッセージが表示されました
INCLUDE=TABLE:"IN('T1','T1')"
INCLUDE=TABLE:"IN('T3','T4')"
それらの行の1つを削除した後、そのスキーマは「魔法のように」見つかりました:)
INリストにリストされているテーブルが存在しない場合(たとえば、文字の大文字小文字の問題が原因)、同じメッセージが表示されます。