Oracle
expdp/impdp 命令是否適合每日模式同步?
我已經完成了以下命令:
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 同步模式的唯一合理方法是在導入之前刪除模式。
如果您出於某種原因不想刪除模式但要替換錶的數據,則需要進行很多額外的操作。