Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          Oracle備份/恢復案例06——ControlFile恢復

          一、損壞單個控制文件

          損壞單個控制文件是比較容易恢復的,因為一般的數據庫系統,控制文件都不是一個,而且所有的控制文件都互為鏡相,只要拷貝一個好的控制文件替換壞的控制文件就可以了。

          ?
          1、控制文件損壞,最典型的就是啟動數據庫出錯,不能mount數據庫

          SQL>startup
          ORA-00205: error in identifying controlfile, check alert log for more info

          查看報警日志文件,有如下信息

          ORA-00202: controlfile: 'D:\oracle\oradata\dodo\control01.ctl'
          ORA-27046: file size is not a multiple of logical block size
          OSD-04012: 文件大小不匹配 (OS 1613808)

          2、停止數據庫

          SQL>shutdown immediate;

          3、拷貝一個好的控制文件替換壞的控制文件或修改init.ora中的控制文件參數,取消這個壞的控制文件。

          4、重新啟動數據

          SQL>startup;
          ?

          說明:

          1、損失單個控制文件是比較簡單的,因為數據庫中所有的控制文件都是鏡相的,只需要簡單的拷貝一個好的就可以了
          2、建議鏡相控制文件在不同的磁盤上
          3、建議多做控制文件的備份,長期保留一份由alter database backup controlfile to trace產生的控制文件的文本備份
          ?
          ?

          二、損壞全部控制文件
          ?
          損壞多個控制文件,或者人為的刪除了所有的控制文件,通過控制文件的復制已經不能解決問題,這個時候需要重新建立控制文件。
          同時注意alter database backup control file to trace可以產生一個控制文件的文本備份。
          以下是詳細重新創建控制文件的步驟
          ?
          1、關閉數據庫

          SQL>shutdown immediate;

          2、刪除所有控制文件,模擬控制文件的丟失

          3、啟動數據庫,出現錯誤,并不能啟動到mount下

          SQL>startup
          ORA-00205: error in identifying controlfile, check alert log for more info

          查看報警日志文件,有如下信息

          ORA-00202: controlfile: 'D:\oracle\oradata\dodo\control01.ctl'
          ORA-27041: unable to open file
          OSD-04002: 無法打開文件
          O/S-Error: (OS 2) 系統找不到指定的文件。

          4、關閉數據庫

          SQL>shutdown immediate;

          5、在internal或sys下運行如下創建控制文件的腳本,注意完整列出聯機日志或數據文件的路徑,或修改由alter database backup control file to trace備份控制文件時產生的腳本,去掉多余的注釋即可。

          STARTUP NOMOUNT
          CREATE CONTROLFILE REUSE DATABASE "DODO" NORESETLOGS? ARCHIVELOG
          -- SET STANDBY TO MAXIMIZE PERFORMANCE
          ??? MAXLOGFILES 5
          ??? MAXLOGMEMBERS 3
          ??? MAXDATAFILES 100
          ??? MAXINSTANCES 1
          ??? MAXLOGHISTORY 226
          LOGFILE
          ? GROUP 1 'D:\ORACLE\ORADATA\DODO\REDO01.LOG'? SIZE 100M,
          ? GROUP 2 'D:\ORACLE\ORADATA\DODO\REDO02.LOG'? SIZE 100M,
          ? GROUP 3 'D:\ORACLE\ORADATA\DODO\REDO03.LOG'? SIZE 100M
          -- STANDBY LOGFILE
          DATAFILE
          ? 'D:\ORACLE\ORADATA\DODO\SYSTEM01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\UNDOTBS01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\DRSYS01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\INDX01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\TOOLS01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\USERS01.DBF',
          ? 'D:\ORACLE\ORADATA\DODO\XDB01.DBF'
          CHARACTER SET ZHS16GBK;
          -- Recovery is required if any of the datafiles are restored backups,
          -- or if the last shutdown was not normal or immediate.
          RECOVER DATABASE;
          --if the last shutdown was not normal or immediate
          --noarchive
          -- RECOVER DATABASE UNTIL CANCELUSING BACKUP CONTROLFILE
          --archive
          -- RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL
          -- Database can now be opened normally.
          ALTER DATABASE OPEN;
          --if recover database until cancel
          --ALTER DATABASE OPEN RESETLOGS;

          6、如果沒有錯誤,數據庫將啟動到open狀態下。
          ?

          說明:
          1、重建控制文件用于恢復全部數據文件的損壞,需要注意其書寫的正確性,保證包含了所有的數據文件與聯機日志.
          2、經常有這樣一種情況,因為一個磁盤損壞,我們不能再恢復(store)數據文件到這個磁盤,因此在store到另外一個盤的時候,我們就必須重新創建控制文件,用于識別這個新的數據文件
          posted on 2008-12-19 22:11 decode360 閱讀(566) 評論(0)  編輯  收藏 所屬分類: 09.Recover

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 满城县| 通城县| 天峻县| 呼和浩特市| 万荣县| 会宁县| 唐山市| 探索| 安新县| 乐昌市| 深州市| 万盛区| 开封市| 雷山县| 崇礼县| 买车| 襄垣县| 武清区| 孟州市| 元阳县| 博湖县| 年辖:市辖区| 徐汇区| 东平县| 内丘县| 苍溪县| 聂荣县| 江陵县| 云龙县| 措勤县| 青岛市| 嘉鱼县| 门源| 靖边县| 锡林郭勒盟| 中超| 秭归县| 扶绥县| 九江市| 西乌珠穆沁旗| 井冈山市|