控制檔案的恢復方法(二)

kuqlan發表於2012-06-16

控制檔案的通常恢復方法有:
1、從控制檔案自動或二進位制備份中恢復

2、從控制檔案快照備份中恢復

3、控制檔案trace檔案備份中恢復

4Oracle自動生成的控制檔案指令碼恢復

如下對相關的步驟及語法進行介紹:

2、從控制檔案快照備份中恢復

對資料庫進行一些改動:

SQL> insert into t select * from dba_users;

8 rows created.

SQL> alter system switch logfile;

System altered.

SQL> exit

[@more@]

將控制檔案透過OSmv rm命令進行移動或刪除;

[oracle@dbserv test]$ mv control01.ctl control02.ctl control03.ctl /opt/oracle/backups/

[oracle@dbserv test]$ ls

redo01.log redo02.log redo03.log sqlnet.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf

關閉資料庫

SQL> shutdown immediate;

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/opt/oracle/oradata/test/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

SQL> shutdown force;

SP2-0717: illegal SHUTDOWN option

SQL> shutdown abort;

ORACLE instance shut down.

SQL>

oracle@dbserv ~]$ export ORACLE_SID=test

[oracle@xjtvpay ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Jun 15 19:33:42 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

RMAN>

RMAN> set DBID=2083742440

executing command: SET DBID

RMAN> restore controlfile from '/opt/oracle/product/10.2.0/dbs/snapcf_test.f';

Starting restore at 15-JUN-12

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=154 devtype=DISK

channel ORA_DISK_1: copied control file copy

output filename=/opt/oracle/oradata/test/control01.ctl

output filename=/opt/oracle/oradata/test/control02.ctl

output filename=/opt/oracle/oradata/test/control03.ctl

Finished restore at 15-JUN-12

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

RMAN> restore database;

Starting restore at 15-JUN-12

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=154 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /opt/oracle/oradata/test/system01.dbf

restoring datafile 00002 to /opt/oracle/oradata/test/undotbs01.dbf

restoring datafile 00003 to /opt/oracle/oradata/test/sysaux01.dbf

restoring datafile 00004 to /opt/oracle/oradata/test/users01.dbf

channel ORA_DISK_1: reading from backup piece /opt/backup/full/testfull_TEST_20120610_11

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/backup/full/testfull_TEST_20120610_11 tag=TESTDB

channel ORA_DISK_1: restore complete, elapsed time: 00:00:15

Finished restore at 15-JUN-12

RMAN> recover database;

Starting recover at 15-JUN-12

using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 22 is already on disk as file /opt/backup/1_22_785596008.dbf

archive log thread 1 sequence 23 is already on disk as file /opt/backup/1_23_785596008.dbf

archive log thread 1 sequence 24 is already on disk as file /opt/backup/1_24_785596008.dbf

archive log thread 1 sequence 25 is already on disk as file /opt/backup/1_25_785596008.dbf

archive log thread 1 sequence 26 is already on disk as file /opt/backup/1_26_785596008.dbf

archive log thread 1 sequence 1 is already on disk as file /opt/oracle/oradata/test/redo02.log

archive log thread 1 sequence 2 is already on disk as file /opt/oracle/oradata/test/redo01.log

archive log filename=/opt/backup/1_22_785596008.dbf thread=1 sequence=22

archive log filename=/opt/backup/1_23_785596008.dbf thread=1 sequence=23

archive log filename=/opt/backup/1_24_785596008.dbf thread=1 sequence=24

archive log filename=/opt/backup/1_25_785596008.dbf thread=1 sequence=25

archive log filename=/opt/backup/1_26_785596008.dbf thread=1 sequence=26

archive log filename=/opt/oracle/oradata/test/redo02.log thread=1 sequence=1

archive log filename=/opt/oracle/oradata/test/redo01.log thread=1 sequence=2

media recovery complete, elapsed time: 00:00:35

Finished recover at 15-JUN-12

RMAN> alter database open resetlogs;

database opened

RMAN> exit

Recovery Manager complete.

[oracle@xjtvpay ~]$ sqlplus / as sysdba

SQL> select count(*) from t;

COUNT(*)

----------

16

SQL>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1058555/,如需轉載,請註明出處,否則將追究法律責任。

相關文章