Oracle

Oracle - 恢復單個表

  • August 15, 2015

在一個大型數據庫中,執行了一項活動來上傳數據。由於一些錯誤,再次輸入了一個月的數據,這些數據留在了臨時保存表中。因此,為了掩蓋這一點,我們從另一台機器上恢復的備份中轉儲了 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=nimp.

alter table t enable constraint c;

請注意,在disable和之間enable沒有檢查外掛。如果存在不符合約束的行,enable則將失敗。如果在舊情況和新情況之間插入了行,情況也是如此。

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