首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle DUAL 表被誤刪後的緊急恢復操作手冊

     編輯:Oracle 資料庫基礎

現象與影響

DUAL 為 SYS 擁有的單列單欄系統表,雖可正常 DML/DDL 操作,但 執行 DROP TABLE dual 會導致資料庫無法啟動,報錯 ORA-1092。切勿嘗試刪除。

恢復步驟 (需 SYSDBA 權限)

  1. 建立參數檔備份並關閉
    
    SQL> CREATE PFILE='d:\pfile.bak' FROM SPFILE;
    SQL> SHUTDOWN IMMEDIATE;
    
  2. 編輯 d:\pfile.bak,末尾加入:
    
    replication_dependency_tracking = FALSE
    
  3. 以參數檔啟動並重建 DUAL
    
    SQL> STARTUP PFILE='d:\pfile.bak';
    SQL> CREATE TABLE "SYS"."DUAL" (DUMMY VARCHAR2(1));
    SQL> INSERT INTO "SYS"."DUAL" VALUES ('X');
    SQL> COMMIT;
    
  4. 關閉資料庫,移除參數檔中新增行,正常啟動
    
    SQL> SHUTDOWN IMMEDIATE;
    -- 移除 replication_dependency_tracking = FALSE
    SQL> STARTUP;
    

原理解析

  • replication_dependency_tracking=FALSE 繞過複製相關依賴檢查,允許在非標準狀態下建立系統物件
  • DUAL 表結構極簡,手動重建即可恢復 SELECT SYSDATE FROM DUAL 等核心功能

預防建議

  • 嚴格管控 SYS/SYSTEM 權限,禁止對 SYS 物件執行 DDL
  • 啟用 DDL 觸發器審計或阻擋 DROP ON SYS.DUAL
  • 定期驗證備份可用性,確保最壞情況可時間點恢復
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved