歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 控制文件損壞時的恢復

控制文件損壞時的恢復

日期:2017/2/27 9:39:55   编辑:更多Linux

 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.立即關閉數據庫,並進行數據庫的冷備份,將數據庫的數據完整地保存下來。




Copyright © Linux教程網 All Rights Reserved