控制檔案丟失恢復
(一)控制檔案丟失(丟失其中一個,而不是全部)
解決辦法有兩種:
1)拷貝一份現有的控制檔案進行恢復
2)修改spfile檔案不指定到丟失的控制檔案
模擬這兩種情況
準備工作:
1.檢視當前資料庫控制檔案
SQL> select name,status from v$controlfile;
NAME STATUS
------------------------------------------------------------ -------
D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\ORADATA\ORCL\CONTROL03.CTL
2.檢視歸檔
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 77
Next log sequence to archive 79
Current log sequence 79
3.刪除一個控制檔案(模擬控制檔案丟失),由於在windows下資料庫在開啟的狀態下不能直接刪除檔案,用360粉碎檔案來刪除
4.檢視資料庫是否還能使用
SQL> select name,status from v$controlfile;
ERROR:
ORA-03114: not connected to ORACLE
5.檢視告警日誌檔案
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_ckpt_388.trc:
ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: 'D:\ORACLE\ORADATA\ORCL\CONTROL03.CTL'
ORA-27072: File I/O error
OSD-04008: WriteFile() failure, unable to write to file
O/S-Error: (OS 6) 控制程式碼無效。
Sun Jan 12 16:29:52 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_ckpt_388.trc:
ORA-00221: error on write to control file
ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: 'D:\ORACLE\ORADATA\ORCL\CONTROL03.CTL'
ORA-27072: File I/O error
OSD-04008: WriteFile() failure, unable to write to file
O/S-Error: (OS 6) 控制程式碼無效。
Sun Jan 12 16:29:52 2014
CKPT: terminating instance due to error 221
Sun Jan 12 16:29:52 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_q001_5964.trc:
ORA-00221: error on write to control file
Sun Jan 12 16:29:52 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_pmon_5152.trc:
ORA-00221: error on write to control file
Sun Jan 12 16:29:52 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_j000_4280.trc:
ORA-00221: 寫入控制檔案時出錯
Sun Jan 12 16:29:52 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_psp0_5484.trc:
ORA-00221: error on write to control file
一個控制檔案損壞或丟失,資料庫就會關閉.現在資料庫已不能使用.
開始恢復
第一種方法:拷貝當前可用的控制檔案
現在資料庫處於關閉狀態
1)啟動到nomout,檢視資料庫控制檔案
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE\ORADATA\ORCL\CONTROL
01.CTL, D:\ORACLE\ORADATA\ORCL
\CONTROL02.CTL, D:\ORACLE\ORAD
ATA\ORCL\CONTROL03.CTL
2)使用control02.ctl複製一個CONTROL03.CTL
3)啟動到mount狀態
SQL> alter database mount;
Database altered.
4)開啟資料庫
SQL> alter database open;
Database altered.
恢復完成
第二種方法:使用修改引數檔案不指定到丟失的控制檔案
刪除控制檔案跟第一種方法一樣,不再模擬
1)啟動資料庫到nomount
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 570425344 bytes
Fixed Size 1250188 bytes
Variable Size 192941172 bytes
Database Buffers 369098752 bytes
Redo Buffers 7135232 bytes
SQL> alter database mount; --啟動到mount狀態報錯,因為控制檔案已丟失
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
SQL> show parameter control --檢視控制檔案
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE\ORADATA\ORCL\CONTROL
01.CTL, D:\ORACLE\ORADATA\ORCL
\CONTROL02.CTL, D:\ORACLE\ORAD
ATA\ORCL\CONTROL03.CTL
2)修改control_files引數指定control01.ctl和control03.ctl
SQL> alter system set control_files='D:\oracle\oradata\orcl\control01.ctl','D:\oracle\oradata\orcl\control03.ctl' scope=spfile;
System altered.
SQL> show parameter control --檢視控制檔案沒有修改,scope=spfile下次啟動才生效
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE\ORADATA\ORCL\CONTROL
01.CTL, D:\ORACLE\ORADATA\ORCL
\CONTROL02.CTL, D:\ORACLE\ORAD
ATA\ORCL\CONTROL03.CTL
3)關閉資料庫並啟動到nomount
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 570425344 bytes
Fixed Size 1250188 bytes
Variable Size 192941172 bytes
Database Buffers 369098752 bytes
Redo Buffers 7135232 bytes
SQL> show parameter control --引數已生效
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE\ORADATA\ORCL\CONTROL
01.CTL, D:\ORACLE\ORADATA\ORCL
\CONTROL03.CTL
4)啟動到mount並開啟資料庫
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
總結:
1.控制檔案損壞或丟失任何一個,資料庫將關閉
寫三個都要寫,讀只讀其中一個?
2.控制檔案的保護可以使用複用控制檔案,放在不同磁碟上
3.如果控制檔案全部丟失該如何恢復?
未完待續...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26937943/viewspace-1069771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 電腦檔案丟失資料恢復資料恢復
- 剪下的檔案還能恢復嗎,恢復剪貼丟失的檔案
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- 丟失的隨身碟檔案如何恢復?
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- 【BBED】丟失歸檔檔案情況下的恢復
- win10 ppt檔案丟失怎麼恢復_win10 ppt文件丟失如何找回Win10
- macOS Big Sur系統如何恢復丟失的資料檔案?Mac
- Oracle Redo丟失恢復方案Oracle
- 存放在電腦中的檔案丟失了怎麼恢復
- 伺服器資料丟失了怎麼恢復/分割槽丟失恢復教程伺服器
- dg丟失歸檔,使用rman增量備份恢復
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 2.7.10 恢復丟失或損壞的伺服器引數檔案(SPFILE)伺服器
- 檔案丟失不用怕:超實用的Mac資料恢復軟體!Mac資料恢復
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 硬碟資料丟失如何恢復?硬碟
- 分割槽丟失資料恢復資料恢復
- 【虛擬機器資料恢復】Hyper-V虛擬化檔案丟失的資料恢復案例虛擬機資料恢復
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- wps檔案丟失如何恢復?找回只需要用到一招
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- 與控制檔案有關的恢復
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 與控制檔案有關的恢復(二)
- chkdsk 後資料丟失的恢復方法
- 伺服器RAID資料丟失恢復伺服器AI
- OMV資料恢復NAS陣列丟失資料恢復陣列
- 如何恢復伺服器資料丟失伺服器
- 伺服器資料恢復—重灌系統導致XFS檔案系統分割槽丟失的資料恢復案例伺服器資料恢復
- 【Vsan資料恢復】斷電導致Vsan分散式儲存虛擬磁碟檔案丟失的資料恢復案例資料恢復分散式
- 【伺服器資料恢復】虛擬機器檔案丟失導致Hyper-V癱瘓的資料恢復伺服器資料恢復虛擬機
- 【伺服器資料恢復】XFS檔案系統分割槽分割槽丟失無法訪問的資料恢復案例伺服器資料恢復