Oracle

expdp/impdp 命令是否適合每日模式同步?

  • September 15, 2015

我已經完成了以下命令:

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

如果導入的對像已經存在,要採取的行動。

有效的關鍵字是:APPEND、REPLACE、

$$ SKIP $$和截斷。

不,這不是一種可能的方式:

  • 大多數非表對像已經存在於您的架構中。您已經收到此類錯誤消息。導入不會覆蓋它。
  • 如果表已經存在,您可以配置導出的工作方式,但如果有一個表被另一個表引用,則 TRUNCATE 和 REPLACE 將不起作用。
  • 即使沒有對錶索引的外鍵引用也會顯著減慢導入速度
  • 可能會出現很多其他問題(關於觸發器、分區、對其他表的引用等等)

因此,使用 expdp/impdp 同步模式的唯一合理方法是在導入之前刪除模式。

如果您出於某種原因不想刪除模式但要替換錶的數據,則需要進行很多額外的操作。

引用自:https://dba.stackexchange.com/questions/115075