1.某一供電公司為方便內部管理及電費的收取,創建了一套供電收費及管理系統,此系統的操作系統環境為Windows nt 4.0雙機熱備;數據庫版本為Oracle 8.1.6,數據庫運行在歸檔模式下。在數據庫中存儲了大量電費收取的詳細記錄,這些信息對於供電公司來說是至關重要的。 2.但不知什麼原因,發生兩次連續的斷電現象,造成數據庫的宕機。而非常不幸的是用戶沒有任何備份。 3.根據如下錯誤信息,我們發現數據庫只能啟動實例,讀控制文件時發生錯誤。在數據庫設計的過程中,從安全的角度考慮,系統使用了三個徑向的控制文件,現在三個控制文件version號不一致。 SVRMGRL>startup oracle instance started total system global area 222323980 bytes fixed size 70924 bytes variable size 78667776 bytes database buffers 143507456 bytes redo buffers 77824 bytes ORA-00214: controlfile ‘d:\oracle\oradata\orcl\control01.ctl’ version 57460 inconsistent with file ‘d:\oracle\oradata\orcl\control02.ctl’ version 57452. 4.根據以上分析,我們試著修改參數文件。將參數文件中的control_file參數修改為一個控制文件,分別使用control01、control02、control03。但數據庫都無法啟動,說明三個控制文件都已損壞。 5.由於沒有控制文件的備份,我們只能采取重建控制文件的做法。 D:\>svrmgrl Oracle Server Manager Release 3.1.6.0.0 - ProdUCtion 版權所有 (c) 1997,1999,Oracle Corporation。保留所有權利。 Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option JServer Release 8.1.6.0.0 - Production SVRMGR> connect internal 連接成功。 SVRMGR> shutdowm abort 已關閉 ORACLE 實例。 SVRMGR> startup nomount 已啟動 ORACLE 實例。 系統全局區域合計有 108475660個字節 Fixed Size 70924個字節 Variable Size 46116864個字節 Database Buffers 62210048個字節 Redo Buffers 77824個字節 SVRMGR>create controlfile reuse database orcl noresetlogs archivelog Logfile group 1 ‘d:\oracle\oradata\orcl\redo01.log’, group 2 ‘d:\oracle\oradata\orcl\redo02.log’, group 3 ‘d:\oracle\oradata\orcl\redo03.log’ datafile ‘d:\oracle\oradata\orcl\system01.dbf’, ‘d:\oracle\oradata\orcl\users01.dbf’, ‘d:\oracle\oradata\orcl\temp01.dbf’, ‘d:\oracle\oradata\orcl\tools01.dbf’, ‘d:\oracle\oradata\orcl\indx01.dbf’, ‘d:\oracle\oradata\orcl\dr01.dbf’, ‘d:\oracle\oradata\orcl\rbs01.dbf’; 語句已處理。 6.成功地重建控制文件後,我們嘗試著打開數據庫,但系統報錯,提示需要進行介質恢復。 SVRMGR>recover datafile ‘d:\oracle\oradata\orcl\system01.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\users0101.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\temp01.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\tools01.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\indx01.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\dr01.dbf’; 介質已恢復。 SVRMGR> recover datafile ‘d:\oracle\oradata\orcl\rbs01.dbf’; 介質已恢復。 7.介質恢復後,重新打開數據庫,提示日志文件也需恢復。 SVRMGR> recover database until cancel; 日志已恢復。 8.控制文件、數據文件、日志文件全部恢復後,將三種文件同步,並打開數據庫,成功地完成了數據庫的恢復工作。 SVRMGR> alter database open resetlogs; 數據庫已更改。 9.立即關閉數據庫,並進行數據庫的冷備份,將數據庫的數據完整地保存下來。