控制文件的恢复(一)

    控制文件的恢复(一)
    DB:Oracle 11g 11.2.0.3.0 X86_64,OS RHEL 6.3 X86_64,未使用Recovery Catalog
    一、利用在线镜像备份恢复
        理想的情况下控制文件已经跨磁盘、跨驱动器做了在线镜像备份,只要不是所有的控制文件损害,可以使用在线镜像备份轻松的恢复,例如:
    
SYS@orcl>show parameter control_files              ---查看所有控制文件保存的位置
NAME                 TYPE     VALUE
------------------------------------ ----------- ------------------------------
control_files            string     /u01/app/oracle/oradata/orcl/c
                                 ontrol01.ctl, /u01/app/oracle/
                             fast_recovery_area/orcl/contro
                             l02.ctl, /u01/app/oracle/orada
                             ta/orcl/control03.ctl

SYS@orcl>host rm /u01/app/oracle/fast_recovery_area/orcl/control02.ctl     ---为测试删除control02.ctl

SYS@orcl>create tablespace testts datafile '/u01/app/oracle/oradata/testts01.dbf' size 10m;     ---必须所有的控制文件都正确才行,只要有一个控制文件损坏就报错
create tablespace testts datafile '/u01/app/oracle/oradata/testts01.dbf' size 10m
*
ERROR at line 1:
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file:
'/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'

SYS@orcl>shutdown immediate;                      ---此时不能用shutdown immediate命令关闭数据库
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory

Additional information: 3


SYS@orcl>shutdown abort;                             ---用shutdown abort命令关闭数据库
ORACLE instance shut down.


---查看警告日志和trace文件可以查看更详细的信息
[oracle@ora ~]$ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
ORA-227 signalled during: create tablespace testts datafile '/u01/app/oracle/oradata/testts01.dbf' size 10m...
Wed Jan 02 14:01:14 2013
Dumping diagnostic data in directory=[cdmp_20130102140114], requested by (instance=1, osid=18974), summary=[incident=12153].
Wed Jan 02 14:01:17 2013
Sweep [inc][12153]: completed
Sweep [inc2][12153]: completed
Wed Jan 02 14:01:45 2013
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_19203.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Wed Jan 02 14:02:09 2013

[oracle@ora ~]$ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_19203.trc
========= Dump for error ORA 202 (no incident) ========
----- DDE Action: 'DB_STRUCTURE_INTEGRITY_CHECK' (Async) -----
dbkh_reactive_run_check: BEGIN
dbkh_reactive_run_check:; incident_id=0
dbkh_run_check_internal: BEGIN; check_namep=DB Structure Integrity Check, run_namep=<null>
dbkh_run_check_internal: BEGIN; timeout=0
dbkh_run_check_internal: AFTER RUN CREATE; run_id=41
DDE: Problem Key 'ORA 202' was flood controlled (0x1) (no incident)
ORA-00202: control file: '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
kcidr_cross_check - error:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
dbkh_run_check_internal: END ERR CATCH BLOCK; e=210
dbkh_post_process_run: BEGIN
dbkh_post_process_run: NEW FAILURE COUNT: 0; DBKH_NUM_NEW_FAILURES_CTX(ctxp)=dbkh_post_process_run: END
dbkh_reactive_run_check: ERR received; e=210
dbkh_reactive_run_check: END
-------------------------------------------------------

SYS@orcl>startup nomount;                     ---启动实例到nomount状态
ORACLE instance started.

Total System Global Area 1887350784 bytes
Fixed Size            2229464 bytes
Variable Size         1124076328 bytes
Database Buffers      754974720 bytes
Redo Buffers            6070272 bytes

[oracle@ora ~]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl          ---把control01.ctl复制到control02.ctl

SYS@orcl>startup;                                 ---重新启动实例
ORACLE instance started.
Total System Global Area 1887350784 bytes
Fixed Size            2229464 bytes
Variable Size         1124076328 bytes
Database Buffers      754974720 bytes
Redo Buffers            6070272 bytes
Database mounted.
Database opened.

    二、使用自动备份恢复
    如果当前所有的控制文件都损坏,但是控制文件有自动备份,也可以通过自动备份恢复控制文件,例如:
RMAN> configure controlfile autobackup on;                 ---设置控制文件自动备份
old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

RMAN> backup tablespace users;                       ---备份users表空间,控制文件和参数也自动备份
Starting backup at 02-JAN-13
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 02-JAN-13
channel ORA_DISK_1: finished piece 1 at 02-JAN-13
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2013_01_02/o1_mf_nnndf_TAG20130102T150009_8g7pqshw_.bkp tag=TAG20130102T150009 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 02-JAN-13

Starting Control File and SPFILE Autobackup at 02-JAN-13
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803660410_8g7pqvsy_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 02-JAN-13


---使所有控制文件内容损坏(dd命令慎用)
[oracle@ora orcl]$ dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/control01.ctl bs=512K count=10;
10+0 records in
10+0 records out
5242880 bytes (5.2 MB) copied, 0.0056269 s, 932 MB/s
[oracle@ora orcl]$ dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/control03.ctl bs=512K count=10;
10+0 records in
10+0 records out
5242880 bytes (5.2 MB) copied, 0.00564185 s, 929 MB/s
[oracle@ora orcl]$ dd if=/dev/zero of=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl bs=512K count=10;
10+0 records in
10+0 records out
5242880 bytes (5.2 MB) copied, 0.00592709 s, 885 MB/s

SYS@orcl>create tablespace testts datafile '/u01/app/oracle/oradata/testts01.dbf' size 10m;      ---创建新表空间报错
create tablespace testts datafile '/u01/app/oracle/oradata/testts01.dbf' size 10m
*
ERROR at line 1:
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control01.ctl'

SYS@orcl>shutdown abort;                      ---关闭实例
ORACLE instance shut down.

SYS@orcl>startup;                                ---由于控制文件错误,startup命令只能启动到nomount状态
ORACLE instance started.

Total System Global Area 1887350784 bytes
Fixed Size            2229464 bytes
Variable Size         1124076328 bytes
Database Buffers      754974720 bytes
Redo Buffers            6070272 bytes
ORA-00205: error in identifying control file, check alert log for more info


RMAN> restore controlfile from autobackup;       ---从自动备份中还原控制文件
Starting restore at 02-JAN-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK

recovery area destination: /u01/app/oracle/fast_recovery_area
database name (or database unique name) used for search: ORCL
channel ORA_DISK_1: AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803660410_8g7pqvsy_.bkp found in the recovery area
AUTOBACKUP search with format "%F" not attempted because DBID was not set
channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803660410_8g7pqvsy_.bkp
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/u01/app/oracle/oradata/orcl/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
output file name=/u01/app/oracle/oradata/orcl/control03.ctl
Finished restore at 02-JAN-13


RMAN> mount database;                       ---控制文件还原后使数据库进入mount状态
database mounted
released channel: ORA_DISK_1

RMAN> recover database;                     ---执行recover database恢复数据库
Starting recover at 02-JAN-13
Starting implicit crosscheck backup at 02-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK
Crosschecked 1 objects
Finished implicit crosscheck backup at 02-JAN-13

Starting implicit crosscheck copy at 02-JAN-13
using channel ORA_DISK_1
Finished implicit crosscheck copy at 02-JAN-13

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803660410_8g7pqvsy_.bkp
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803659634_8g7oznsr_.bkp
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_02/o1_mf_s_803659985_8g7pbmdv_.bkp

using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 9 is already on disk as file /u01/app/oracle/oradata/orcl/redo03.log
archived log file name=/u01/app/oracle/oradata/orcl/redo03.log thread=1 sequence=9
creating datafile file number=6 name=/u01/app/oracle/oradata/testts01.dbf
archived log file name=/u01/app/oracle/oradata/orcl/redo03.log thread=1 sequence=9
media recovery complete, elapsed time: 00:00:03
Finished recover at 02-JAN-13


SYS@orcl>alter database open resetlogs;       ---用resetlogs命令打开数据库
Database altered.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值