Oracle
Oracle - 恢復單個表
在一個大型數據庫中,執行了一項活動來上傳數據。由於一些錯誤,再次輸入了一個月的數據,這些數據留在了臨時保存表中。因此,為了掩蓋這一點,我們從另一台機器上恢復的備份中轉儲了 2 個表。重命名了發生錯誤並從備份中恢復的表。但是,當恢復表時,約束無法載入,因為同名已在使用中。使用 oracle exp/imp 命令導出和導入數據。
我不是 DBA,但在這個問題上需要幫助。
為重命名的表保留約束。在導入具有正確數據的表之前刪除它們。
alter table t1 drop constraint c;
如果您不想失去錯誤的數據,還有另一種方法可以做到這一點。您可以基於 2 個表創建一個新表:
create table t1 as select * from t;
然後您必須禁用約束並刪除 table 的內容
t
。現在您可以將數據導入表並啟用約束。alter table t disable constraint c; truncate table t;
現在導入“舊”表
t
並忽略約束錯誤。如果您不希望出現錯誤,請將該選項添加constraints=n
到imp
.alter table t enable constraint c;
請注意,在
disable
和之間enable
沒有檢查外掛。如果存在不符合約束的行,enable
則將失敗。如果在舊情況和新情況之間插入了行,情況也是如此。