oracle控制檔案的損壞或完全丟失的恢復辦法
控制檔案丟失了,需要DBA處理。
1,控制檔案大小不對。 將正常的cp給不正常的。指定正確的來執行。
2,控制檔案版本不對 千萬要記住要先cp全部的控制檔案備份後在來cp
3,控制檔案某個丟失,至少存在一個
4,控制檔案都丟失,
5,有但是很old
1,控制檔案大小不對。
下面我們修給一個控制檔案的內容使大小不一樣。
[oracle@huang ~]$ vim /sof/oracle/oradata/orcl/control01.ctl
SQL> shutdown immediate;
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/sof/oracle/oradata/orcl/control01.ctl'
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
ORA-00205: error in identifying control file, check alert log for more info
這裡提示了控制檔案有錯誤。
SQL> show parameter control_f
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /sof/oracle/oradata/orcl/contr
ol01.ctl, /sof/oracle/oradata/
orcl/control02.ctl, /sof/oracl
e/oradata/orcl/control03.ctl
SQL> ho ls -l /sof/oracle/oradata/orcl/ 這裡我們檢視到日誌檔案中,有兩個大小一樣,說明這兩個是正常的。
total 1536352
-rw------- 1 oracle oinstall 7110639 Jan 4 16:00 control01.ctl
-rw------- 1 oracle oinstall 7389184 Jan 4 16:01 control02.ctl
-rw------- 1 oracle oinstall 7389184 Jan 4 16:01 control03.ctl
SQL> ho cp /sof/oracle/oradata/orcl/control01.ctl /sof/oracle/oradata/orcl/control01.ct.bak
SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control01.ctl
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
Database mounted.
Database opened.
現在資料庫就能正常的執行了。
2,控制檔案版本不對
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
Database mounted.
Database opened.
SQL> alter system set control_files='/sof/oracle/oradata/orcl/control02.ctl' scope=spfile;
System altered.
Database opened.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
Database mounted.
Database opened.
SQL> show parameter control_f
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /sof/oracle/oradata/orcl/contr
ol02.ctl
SQL> alter system set control_files='/sof/oracle/oradata/orcl/control02.ctl','/sof/oracle/oradata/orcl/control01.ctl','/sof/oracle/oradata/orcl/control03.ctl' scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
ORA-00214: control file '/sof/oracle/oradata/orcl/control02.ctl' version 1036
inconsistent with file '/sof/oracle/oradata/orcl/control01.ctl' version 1020
現在就提示了控制檔案的版本好不一致的問題。注意提示的版本號那個更高。
SQL> ho cp /sof/oracle/oradata/orcl/control01.ctl /sof/oracle/oradata/orcl/control01.ctl.bak
SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control01.ctl
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
ORA-00214: control file '/sof/oracle/oradata/orcl/control02.ctl' version 1036
inconsistent with file '/sof/oracle/oradata/orcl/control03.ctl' version 1020
SQL> ho cp /sof/oracle/oradata/orcl/control03.ctl /sof/oracle/oradata/orcl/control03.ctl.bak
SQL> ho cp /sof/oracle/oradata/orcl/control02.ctl /sof/oracle/oradata/orcl/control03.ctl
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
Database mounted.
Database opened.
上面就說明成了。
4,控制檔案都丟失,
5,有但是很old
SQL> alter database backup controlfile to trace as '/tmp/luo.txt'
2 ;
Database altered.
得到建立日誌檔案的指令碼,以後我們資料庫建好後就要做。
下面就是重建控制檔案。
千萬記住下面這個命令。
如果控制檔案全部丟失,版本過老,在我們重建控制檔案之前需要備份故障的狀態。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@huang ~]$ cp /sof/oracle/oradata/orcl/ /sof/oracle/oradata/orcl.bak -rf
[oracle@huang ~]$ rm /sof/oracle/oradata/orcl/control0* -rf
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl
orcl/ orcl.bak/
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl
orcl/ orcl.bak/
[oracle@huang ~]$ ls /sof/oracle/oradata/orcl/
example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
redo01.log redo03.log system01.dbf undotbs01.dbf
[oracle@huang ~]$ sqlplus / as sysdba
[uniread] Loaded history (945 lines)
SQL*Plus: Release 10.2.0.4.0 - Production on Mon Jan 4 16:57:00 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
ORA-00205: error in identifying control file, check alert log for more info
去除所有的--和空格行,和開頭的空格。
[oracle@huang ~]$ grep -v ^-- /tmp/luo.txt|grep -v ^$ >/tmp/luo1.txt
[oracle@huang ~]$ vim /tmp/luo1.txt
[oracle@huang ~]$ sed -n '1,23'p /tmp/luo1.txt >/tmp/luo2.txt
擷取下面兩行和之間的內容。注意是下面行是第一次出現的時候
STARTUP NOMOUNT
..................
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ sed -i 's/^ //' /tmp/luo2.txt
[oracle@huang ~]$ vim /tmp/luo2.txt
確定時候空格和--開頭的行就刪除了。
SQL> shutdown abort;
ORACLE instance shut down.
SQL> @/tmp/luo2.txt 我們執行剛才的那個指令碼就可以重新的建立起控制檔案
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1267020 bytes
Variable Size 704645812 bytes
Database Buffers 369098752 bytes
Redo Buffers 15507456 bytes
Control file created.
Media recovery complete.
Database altered.
Tablespace altered.
SQL> ho ls /sof/oracle/oradata/orcl/
control01.ctl example01.dbf redo03.log temp01.dbf
control02.ctl redo01.log sysaux01.dbf undotbs01.dbf
control03.ctl redo02.log system01.dbf users01.dbf
上面就是控制檔案的幾種恢復方法。
©著作權歸作者所有:來自51CTO部落格作者7343696的原創作品,如需轉載,請註明出處,否則將追究法律責任
oracle職場休閒
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1806/viewspace-2821412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2.7.10 恢復丟失或損壞的伺服器引數檔案(SPFILE)伺服器
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- win10開機提示登錄檔檔案丟失或損壞因此無法載入如何修復Win10
- win10系統excel詞典檔案丟失或損壞怎麼修復Win10Excel
- 剪下的檔案還能恢復嗎,恢復剪貼丟失的檔案
- Oracle 控制檔案損壞解決方案Oracle
- 丟失的隨身碟檔案如何恢復?
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- u盤檔案損壞怎麼恢復資料 u盤損壞無法讀取怎麼恢復資料
- Oracle Redo丟失恢復方案Oracle
- 檔案或目錄損壞且無法讀取怎麼辦?
- 電腦檔案丟失資料恢復資料恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- Oracle asm磁碟損壞異常恢復OracleASM
- win10電腦電腦登錄檔檔案丟失或損壞0xc0000e9怎麼辦Win10
- 學習這篇Oracle資料庫檔案壞塊損壞的恢復方法,擴充你的知識面Oracle資料庫
- 控制檔案損壞處理
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- 【BBED】丟失歸檔檔案情況下的恢復
- 記一次Oracle RAC for aix 儲存雙控鎖盤導致ASM控制檔案損壞恢復OracleAIASM
- 【ASK_ORACLE】Oracle表決磁碟丟失後的恢復方法Oracle
- 【/proc/檔案淺析】另類辦法恢復資料檔案和控制檔案
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- macOS Big Sur系統如何恢復丟失的資料檔案?Mac
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- win10系統提示檔案已損壞或丟失libGLESv2.dll怎麼解決Win10
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- Oracle閃回功能恢復偶然丟失的資料(轉)Oracle
- 修復損壞的gz或tar.gz壓縮檔案之方法篇
- 存放在電腦中的檔案丟失了怎麼恢復
- 【伺服器資料恢復】伺服器reiserfs檔案系統損壞的資料恢復案例伺服器資料恢復
- win10ie核心損壞怎麼修復_win10電腦ie顯示核心丟失或損壞處理方法Win10
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB