Oracle
使用 DBMS_REPAIR.SKIP_CORRUPT_BLOCKS 後禁用 SKIP_CORRUPT
最近,在生產數據庫中的幾個塊損壞後,我參與了恢復數據的工作。
*免責聲明:*我絕不是一個稱職的 DBA,而是一個有相當多(我猜)經驗的 PL/SQL 開發人員,所以也許我在這裡遺漏了一些非常明顯的東西。對此感到抱歉。
DBMS_REPAIR
包提供了SKIP_CORRUPT_BLOCKS
幾乎不言自明的過程(允許訪問表,儘管它有損壞的塊)。使用後,您可以檢查
DBA_TABLES.SKIP_CORRUPT
列(預設情況下變為ENABLED
而不是DISABLED
)。現在塵埃落定,所有數據都已恢復,希望吸取教訓,我似乎無法找到一種方法在不重新創建表的情況下將其切換回來(如果有一天該段中的另一個塊被損壞,我寧願讓查詢失敗,也不願默默地跳過損壞塊中的行)。
有沒有辦法在
SKIP_CORRUPT
不重新創建表的情況下禁用?
您可以使用相同的過程禁用它。
begin dbms_repair.skip_corrupt_blocks ( schema_name => '...', object_name => '...', object_type => dbms_repair.table_object, flags=> dbms_repair.noskip_flag ); end; /
dbms_repair.skip_flag
啟用、dbms_repair.noskip_flag
禁用此行為。