控制文件的恢复(四)

来源:互联网 发布:软件代码大全 编辑:程序博客网 时间:2024/05/18 02:10
    一、控制文件无备份的恢复    
如果控制文件没有任何备份,可以在实例的nomount状态下使用'create controlfile'创建新控制文件,但是必须包含4项基本信息:数据库名、在线日志路径和大小、在线可读/写数据文件路径、数据库字符集,
    DB:Oracle 11g 11.2.0.3.0 X86_64,OS RHEL 6.3 X86_64,未使用Recovery Catalog
    
1.1破坏所有的控制文件
[oracle@ora Pictures]$ 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.00605029 s, 867 MB/s
[oracle@ora Pictures]$ 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.00575304 s, 911 MB/s
[oracle@ora Pictures]$ 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.00577951 s, 907 MB/s

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

Total System Global Area 1887350784 bytes
Fixed Size            2229464 bytes
Variable Size         1107299112 bytes
Database Buffers      771751936 bytes
Redo Buffers            6070272 bytes

1.3运行带noresetlogs的'create controlfile'命令创建控制文件
SYS@orcl>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 BLOCKSIZE 512,
  GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/u01/app/oracle/oradata/orcl/system01.dbf',
  '/u01/app/oracle/oradata/orcl/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/undotbs01.dbf',
  '/u01/app/oracle/oradata/orcl/users01.dbf',
  '/u01/app/oracle/oradata/orcl/example01.dbf'
CHARACTER SET AL32UTF8 ;


Control file created.

1.4恢复数据库
SYS@orcl>recover database;
Media recovery complete.

1.5打开数据库
SYS@orcl>alter database open;
Database altered.

1.6添加临时数据文件
SYS@orcl>alter tablespace temp add tempfile  '/u01/app/oracle/oradata/orcl/temp01.dbf' reuse;
Tablespace altered.

1.7执行catalog命令从快速恢复区找回备份和归档日志信息
RMAN> catalog db_recovery_file_dest;
searching for all files in the recovery area

List of Files Unknown to the Database
=====================================
File Name: /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2013_01_05/o1_mf_1_1_8ghjh7lf_.arc
……省略……
File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2013_01_05/o1_mf_s_803927973_8ghw174h_.bkp
/o1_mf_ncnnf_TAG20130103T163808_8gbjvnh7_.bkp

Do you really want to catalog the above files (enter YES or NO)?

    二、使用控制文件快照恢复
    使用rman备份任何文件时会在$ORACLE_HOME/dbs下生成名为snapcf_<db_name>.f的控制文件快照,它相当于控制文件的镜像复制,我们也可以利用快照进行恢复,例如:
2.1查看控制文件自动备份设置
RMAN> show controlfile autobackup;

RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

2.2备份users表空间
RMAN> backup tablespace users;

Starting backup at 05-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 05-JAN-13
channel ORA_DISK_1: finished piece 1 at 05-JAN-13
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2013_01_05/o1_mf_nnndf_TAG20130105T201014_8gj616h0_.bkp tag=TAG20130105T201014 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 05-JAN-13

2.3$ORACLE_HOME/dbs目录下生成快照
[oracle@ora dbs]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@ora dbs]$ ll
total 9864
-rw-rw----. 1 oracle oinstall     1544 Dec 29 18:34 hc_catadb.dat
-rw-rw----. 1 oracle oinstall     1544 Jan  5 20:06 hc_orcl.dat
-rw-r--r--. 1 oracle oinstall     2851 May 15  2009 init.ora
-rw-r-----. 1 oracle oinstall       24 Jan  3 16:22 lkORCL
-rw-r-----. 1 oracle oinstall     1536 Jan  3 16:29 orapworcl
-rw-r-----. 1 oracle oinstall 10076160 Jan  5 20:10 snapcf_orcl.f
-rw-r-----. 1 oracle oinstall     3584 Jan  5 20:03 spfileorcl.ora

2.4破坏所有的控制文件
[oracle@ora dbs]$ 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.00584593 s, 897 MB/s
[oracle@ora dbs]$ 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.00583077 s, 899 MB/s
[oracle@ora dbs]$ 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.00625981 s, 838 MB/s

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

Total System Global Area 1887350784 bytes
Fixed Size            2229464 bytes
Variable Size         1107299112 bytes
Database Buffers      771751936 bytes
Redo Buffers            6070272 bytes

2.6利用快照还原控制文件
[oracle@ora dbs]$ cp $ORACLE_HOME/dbs/snapcf_orcl.f $ORACLE_BASE/oradata/orcl/control01.ctl
[oracle@ora dbs]$ cp $ORACLE_HOME/dbs/snapcf_orcl.f $ORACLE_BASE/oradata/orcl/control03.ctl
[oracle@ora dbs]$ cp $ORACLE_HOME/dbs/snapcf_orcl.f $ORACLE_BASE/fast_recovery_area/orcl/control02.ctl


2.7启动实例到mount状态
RMAN> mount database;

using target database control file instead of recovery catalog
database mounted

2.8恢复数据库
RMAN> recover database;

Starting recover at 05-JAN-13
Starting implicit crosscheck backup at 05-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=10 device type=DISK
Crosschecked 1 objects
Finished implicit crosscheck backup at 05-JAN-13

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

searching for all files in the recovery area
cataloging files...
no files cataloged

using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 1 is already on disk as file /u01/app/oracle/oradata/orcl/redo01.log
archived log file name=/u01/app/oracle/oradata/orcl/redo01.log thread=1 sequence=1
media recovery complete, elapsed time: 00:00:02
Finished recover at 05-JAN-13

2.9以resetlogs打开数据库
SYS@orcl>alter database open resetlogs;

Database altered.