備份&恢復之十三:損壞全部控制檔案
2008/05/08
備份&恢復之十三:損壞全部控制檔案
損壞多個控制檔案,或者人為的刪除了所有的控制檔案,透過控制檔案的複製已經不能解決問題,這個時候需要重新建立控制檔案。
同時注意,alter database backup control file to trace可以產生一個控制檔案的文字備份。
測試環境:
1 作業系統:Redhat Linux 5
[oracle@mzl proc]$ cat /proc/version
Linux version 2.6.18-8.el5 (brewbuilder@ls20-bc2-14.build.redhat.com) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Fri Jan 26 14:15:21 EST 2007
2 資料庫版本:Oracle10g
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
3 關閉資料庫,刪除一個controlfile.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
刪除一個控制檔案
[oracle@mzl orcl]$ pwd
/u01/app/oracle/oradata/orcl
[oracle@mzl orcl]$ rm *.ctl
4 啟動資料庫
SQL> startup
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218868 bytes
Variable Size 88082124 bytes
Database Buffers 171966464 bytes
Redo Buffers 7168000 bytes
ORA-00205: error in identifying control file, check alert log for more info
看alert_ORCL.log日誌:
starting up 1 shared server(s) ...
Thu May 8 15:36:43 2008
ALTER DATABASE MOUNT
Thu May 8 15:36:43 2008
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control01.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Thu May 8 15:36:46 2008
ORA-205 signalled during: ALTER DATABASE MOUNT...
資料庫只能啟動到nomount狀態
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ORCL STARTED
5 停止資料庫,複製一個好的控制檔案替換壞的控制檔案或修改init.ora中的控制檔案引數,取消這個壞的控制檔案。
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
6 在internal或sys下執行如下建立控制檔案的指令碼,注意完整列出聯機日誌或資料檔案的路徑,或修改由alter database backup control file to trace備份控制檔案時產生的指令碼,去掉多餘的註釋即可。
重建控制檔案
在/u01/app/oracle/admin/orcl/udump下修改orcl_ora_44224.trc檔案。
修改後儲存名為:/home/mzl/BackupDatabase/createControlfile.sql
內容為:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf',
'/u01/app/oracle/oradata/orcl/perfstat.dbf',
'/u01/app/oracle/oradata/orcl/risenet.dbf'
CHARACTER SET WE8ISO8859P1
;
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
7 執行createControlfile.sql指令碼:
SQL> @/home/mzl/BackupDatabase/createControlfile.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Control file created.
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
System altered.
Database altered.
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ORCL OPEN
說明:
1、重建控制檔案用於恢復全部資料檔案的損壞,需要注意其書寫的正確性,保證包含了所有的資料檔案與聯機日誌
2、經常有這樣一種情況,因為一個磁碟損壞,我們不能再恢復(store)資料檔案到這個磁碟,因此在store到另外一個盤的時候,我們就必須重新建立控制檔案,用於識別這個新的資料檔案,這裡也可以用這種方法用於恢復
參考itpub上piner的備份與恢復案例:
http://www.itpub.net/viewthread.php?tid=126320&extra=page%3D4%26amp%3Bfilter%3Ddigest
在伺服器測試成功
備份&恢復之十三:損壞全部控制檔案
損壞多個控制檔案,或者人為的刪除了所有的控制檔案,透過控制檔案的複製已經不能解決問題,這個時候需要重新建立控制檔案。
同時注意,alter database backup control file to trace可以產生一個控制檔案的文字備份。
測試環境:
1 作業系統:Redhat Linux 5
[oracle@mzl proc]$ cat /proc/version
Linux version 2.6.18-8.el5 (brewbuilder@ls20-bc2-14.build.redhat.com) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Fri Jan 26 14:15:21 EST 2007
2 資料庫版本:Oracle10g
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
3 關閉資料庫,刪除一個controlfile.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
刪除一個控制檔案
[oracle@mzl orcl]$ pwd
/u01/app/oracle/oradata/orcl
[oracle@mzl orcl]$ rm *.ctl
4 啟動資料庫
SQL> startup
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218868 bytes
Variable Size 88082124 bytes
Database Buffers 171966464 bytes
Redo Buffers 7168000 bytes
ORA-00205: error in identifying control file, check alert log for more info
看alert_ORCL.log日誌:
starting up 1 shared server(s) ...
Thu May 8 15:36:43 2008
ALTER DATABASE MOUNT
Thu May 8 15:36:43 2008
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control01.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Thu May 8 15:36:46 2008
ORA-205 signalled during: ALTER DATABASE MOUNT...
資料庫只能啟動到nomount狀態
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ORCL STARTED
5 停止資料庫,複製一個好的控制檔案替換壞的控制檔案或修改init.ora中的控制檔案引數,取消這個壞的控制檔案。
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
6 在internal或sys下執行如下建立控制檔案的指令碼,注意完整列出聯機日誌或資料檔案的路徑,或修改由alter database backup control file to trace備份控制檔案時產生的指令碼,去掉多餘的註釋即可。
重建控制檔案
在/u01/app/oracle/admin/orcl/udump下修改orcl_ora_44224.trc檔案。
修改後儲存名為:/home/mzl/BackupDatabase/createControlfile.sql
內容為:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf',
'/u01/app/oracle/oradata/orcl/perfstat.dbf',
'/u01/app/oracle/oradata/orcl/risenet.dbf'
CHARACTER SET WE8ISO8859P1
;
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
7 執行createControlfile.sql指令碼:
SQL> @/home/mzl/BackupDatabase/createControlfile.sql
ORA-01081: cannot start already-running ORACLE - shut it down first
Control file created.
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
System altered.
Database altered.
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ORCL OPEN
說明:
1、重建控制檔案用於恢復全部資料檔案的損壞,需要注意其書寫的正確性,保證包含了所有的資料檔案與聯機日誌
2、經常有這樣一種情況,因為一個磁碟損壞,我們不能再恢復(store)資料檔案到這個磁碟,因此在store到另外一個盤的時候,我們就必須重新建立控制檔案,用於識別這個新的資料檔案,這裡也可以用這種方法用於恢復
參考itpub上piner的備份與恢復案例:
http://www.itpub.net/viewthread.php?tid=126320&extra=page%3D4%26amp%3Bfilter%3Ddigest
在伺服器測試成功
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-263359/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份&恢復之十二:損壞單個控制檔案
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 恢復之單個控制檔案損壞
- 恢復之丟失全部控制檔案以及備份中的控制檔案
- 損壞控制檔案的恢復方法
- 【備份與恢復】恢復受損的複用控制檔案
- 磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
- 單個控制檔案損壞的恢復
- 非系統資料檔案損壞,rman備份恢復
- 備份與恢復--資料檔案損壞或丟失
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- 備份與恢復--利用備份的控制檔案恢復
- 某個控制檔案損壞的恢復案例
- 一次控制檔案損壞的恢復
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫
- 控制檔案備份增加、破壞恢復系列實驗(上)
- 控制檔案備份增加、破壞恢復系列實驗(下)
- 【備份與恢復】恢復受損的口令檔案
- 丟失全部控制檔案後從RMAN備份集中恢復示例
- 【備份恢復】 丟失一個控制檔案 之恢復操作
- 開啟 控制檔案自動備份下,引數檔案、控制檔案全部丟失恢復
- 所有控制檔案損壞的恢復--resetlogs方式
- 所有控制檔案損壞的恢復--noresetlogs方式
- Oracle塊損壞恢復(有rman備份)Oracle
- 備份&恢復之五:歸檔模式下丟失或損壞一個資料檔案模式
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 【備份恢復】 控制檔案多路徑
- 利用備份的控制檔案恢復
- 備份與恢復--重建控制檔案
- 控制檔案的備份和恢復
- 控制檔案全部丟失,無備份,通過異機trace恢復
- 控制檔案損壞恢復(20100402)
- 備份&恢復之十一:損壞當前聯機日誌
- 使用舊的控制檔案備份來恢復控制檔案
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復