單個控制檔案損壞的恢復
損壞單個控制檔案是比較容易恢復的,因為資料庫系統,控制檔案都不是一個,而且所有的控制檔案都互為映象,只要複製一個好的控制檔案替換壞的控制檔案就可以。實驗如下:
1) 檢視系統的控制檔案
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\CONTROL01.CTL
F:\APP\YANG\ORADATA\ORACL\CONTROL02.CTL
F:\APP\YANG\ORADATA\ORACL\CONTROL03.CTL
SQL> shutdown immediate
2)關閉資料庫,模擬單個控制檔案損壞。
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del f:\app\yang\oradata\oracl\control01.ctl
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 138412948 bytes
Database Buffers 390070272 bytes
Redo Buffers 5844992 bytes
ORA-00205: ?????????, ??????, ???????
---設定編碼後, set nls_lang=american_america.zhs16gbk
ORA-00205:error in identifying control file, check alert log for more info. 在這裡,很明顯,就是control檔案缺失了.
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 138412948 bytes
Database Buffers 390070272 bytes
Redo Buffers 5844992 bytes
ORA-00214: control file ''F:\APP\YANG\ORADATA\ORACL\CONTROL02.CTL'' version 8271 inconsistent with file
''F:\APP\YANG\ORADATA\ORACL\CONTROL01.CTL'' version 8261
---這表示檔案CONTROL01.CTL'版本比CONTROL02.CTL'版本低, 二者不同導致的.
3)複製一個好的控制檔案替換壞的控制檔案或修改spfile中的控制檔案引數。在這裡我是可以以CONTROL03.CTL重建 。
SQL> alter system set control_files=
2 'f:\app\yang\oradata\oracl\control03.ctl' scope=spfile;
SQL> shutdown immediate
ORACLE 例程已經關閉
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 138412948 bytes
Database Buffers 390070272 bytes
Redo Buffers 5844992 bytes
資料庫裝載完畢。
SQL> alter database open;
資料庫已更改
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\CONTROL03.CTL
---此時該資料庫只有一個控制檔案,在生產環境中必須在空閒的時候應該增加新的控制檔案
小結:
整個實驗的詳細步驟
1. 首先 關閉資料庫庫 shutdown immediate
2. 複製備份三個控制檔案 CONTROL01.CTL, CONTROL02.CTL, CONTROL03.CTL
3. 刪除CONTROL02.CTL
4. 裝載資料庫 startup mount, 出現ORA-00205:?????????,?????,???????錯誤
怎麼會有亂碼?
5. 退出sqlplus, 設定編碼, set nls_lang=american_america.zhs16gbk
6. sqlplus 連入, startup mount, 這次沒有亂碼了,錯誤提示:ORA-00205:error in identifying control file, check alert log for more info. 在這裡,很明顯,就是control檔案缺失了.
7. 複製原來的控制檔案備份CONTROL02.CTL到資料庫的ORADATA目錄下
8. 如果直接再次startup mount, 會出現ORA-01081: cannot start already-running ORACLE - shut it down first.
9. 既然提示了,就關掉它. shutdown immediate
10. startup mount 結果出現ORA-00214: ORA-00214: control file ''F:\APP\YANG\ORADATA\ORACL\CONTROL02.CTL'' version 8271 inconsistent with file
''F:\APP\YANG\ORADATA\ORACL\CONTROL01.CTL'' version 8261 , 這表示檔案CONTROL02.CTL'版本比CONTROL01.CTL'版本低, 二者不同導致的.
11. a) 以CONTROL01.CTL重建,
alter system set control_files=
2 'f:\app\yang\oradata\oracl\control03.ctl' scope=spfile;
b) 備份所有檔案,根據Step10 提示把版本低的刪掉, 複製版本高的,然後貼上重新命名也可以,其實後面我寫的關於為資料庫新增控制檔案就是按照這個方法。
12. shutdown immediate
13. startup mount, 提示Database mounted,表示裝載成功
14. ALTER DATABASE OPEN; 出現Database altered, 成功.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-663958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 恢復之單個控制檔案損壞
- 某個控制檔案損壞的恢復案例
- 備份&恢復之十二:損壞單個控制檔案
- 損壞控制檔案的恢復方法
- 一次控制檔案損壞的恢復
- 所有控制檔案損壞的恢復--resetlogs方式
- 所有控制檔案損壞的恢復--noresetlogs方式
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 備份&恢復之十三:損壞全部控制檔案
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- 單個控制檔案損壞的解決方法
- 一次控制檔案損壞後的恢復經歷
- 控制檔案損壞恢復(20100402)
- 一個控制檔案損壞
- SQL Server ldf 檔案損壞恢復SQLServer
- 某個資料檔案損壞完全恢復(三)
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- 【BBED】 SYSTEM檔案頭損壞的恢復(4)
- 資料檔案丟失損壞的恢復--
- REDO檔案丟失或者損壞的恢復
- UNDO 表空間檔案損壞的恢復
- 線上日誌檔案損壞恢復方法
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- Oracle不同檔案丟失/損壞的恢復方法Oracle
- system表空間檔案損壞----完全恢復
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫
- 【備份與恢復】恢復受損的複用控制檔案
- rman 恢復---歸檔丟失and資料檔案損壞
- 一次日誌檔案損壞的恢復
- 磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
- ibdata1檔案損壞時恢復InnoDB單表測試
- index損壞恢復Index
- 陣列櫃故障造成控制檔案損壞,資料檔案損壞陣列
- inactive狀態日誌組檔案損壞的恢復
- 磁碟損壞導致資料檔案丟失的恢復
- INDEX表空間檔案丟失或者損壞的恢復Index
- coreldraw檔案丟失(損壞)的恢復處理辦法
- Oracle資料檔案損壞恢復例項二則Oracle