質問

私は次のコマンドをやりました:

expdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=expdpSCH_%date%.log
.

エラーなしでは素晴らしいです。しかし私がコマンドを使うとき:

impdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=impdpSCH_%date%.log
.

テーブル、シーケンス、その他のものがすでに存在するというエラーの束をくれました。だから私は質問をしている、そのようなアプローチを使うことも、それが間違っていることもあります、そして私は何か他のものを使うべきですか?

役に立ちましたか?

解決

詳細については、ドキュメントを確認したり、impdp help=yと入力したりしてください。既存のオブジェクトを上書きするか、追加したい場合は定義するパラメータ( table_exists_action )があります。

table_exists_action
インポートされたオブジェクトがすでに存在する場合に実行するアクション。
有効なキーワードは次のとおりです。追加、置換、[スキップ]と切り捨て。

他のヒント

いいえ、それは可能な方法ではありません:

  • 以外のオブジェクトのほとんどは、スキーマにすでに存在します。あなたはすでにそのようなエラーメッセージを入手します。インポートはそれを上書きしません。
  • テーブルが既に存在する場合は、エクスポートがどのように機能するかを設定できますが、別のテーブルによって参照されているテーブルがある場合はTruncateとReplaceは機能しません。
  • テーブルインデックスへの外部キー参照がない場合でも、インポートが劇的に遅くなります
  • 他の多くの問題が発生する可能性があります(トリガー、パーティション、他のテーブルへの参照、多分多くのテーブルの参照)

だからEXPDP / IMPDPを使用してスキーマを同期する唯一の合理的な方法は、インポートする前にスキーマを削除することです。

何らかの理由でスキーマをドロップしたくない場合は、テーブルのデータをたくさんの追加操作が必要です。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top