在默认情况下,即使丢失了只读的数据文件,RMAN也不会在执行完全数据库还原操作时还原只读的数据文件。
要在完全恢复期间还原只读的数据文件,就必须在restore命令中使用check readonly参数,如下所示:
RMAN> restore database check readonly;
需要注意的是,执行recover tablespace或recover datafile命令时,RMAN的工作情况是不一样的。使用
上述任何一种recover命令时,不管表空间是否为只读状态都会执行恢复操作。
==============================================================================================
==============================================================================================
建立恢复只读表空间测试环境:
SQL> alter tablespace ts read only;
Tablespace altered.
SQL>
RMAN> configure backup optimization on; 归档文件只备份一次,只读表空间备份2次
RMAN> backup database plus archivelog;
RMAN> backup database plus archivelog;
RMAN> backup database plus archivelog;
Starting backup at 07-APR-10
using channel ORA_DISK_1
skipping datafile 5; already backed up 2 time(s)
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/u02/oradata/zydev/system01.dbf
input datafile fno=00002 name=/u02/oradata/zydev/undotbs01.dbf
input datafile fno=00003 name=/u02/oradata/zydev/sysaux01.dbf
input datafile fno=00004 name=/u02/oradata/zydev/users01.dbf
channel ORA_DISK_1: starting piece 1 at 07-APR-10
channel ORA_DISK_1: finished piece 1 at 07-APR-10
... 省略 ...
SQL> shutdown abort; -- 关闭后,删除相关数据文件
SQL> startup
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2084296 bytes
Variable Size 385876536 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14692352 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u02/oradata/zydev/sysaux01.dbf'
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL>
执行恢复:
恢复1. 将只读表空间数据文件离线,先行打开数据库,由RMAN和sqlplus汇合操作。
恢复2. 将只读表空间数据文件离线,先行打开数据库,由RMAN操作
恢复3. 恢复所有的需要的数据文件,然后打开数据库
恢复4. restore database check readonly,恢复所有的数据库文件,然后打开数据库
恢复5. 一般处理
#####################################################################
恢复1. 将只读表空间数据文件离线,先行打开数据库,由RMAN和sqlplus汇合操作。
RMAN> restore database; -- 这里的只读表空间的数据文件不进行恢复
RMAN> recover database;
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 04/07/2010 19:06:14
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u02/oradata/zydev/ts01.dbf'
RMAN>
SQL> alter database datafile '/u02/oradata/zydev/ts01.dbf' offline;
SQL> alter database open;
退出rman连接,重新联入
RMAN> restore datafile '/u02/oradata/zydev/ts01.dbf';
RMAN> recover datafile '/u02/oradata/zydev/ts01.dbf';
如果不重新进行连接,将会遭遇如下错误:
RMAN> restore datafile '/u02/oradata/zydev/ts01.dbf';
Starting restore at 07-APR-10
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/07/2010 19:36:49
RMAN-20021: database not set
RMAN-06010: error while looking up datafile: 5
RMAN>
SQL> alter database datafile '/u02/oradata/zydev/ts01.dbf' online;
SQL> alter database open;
SQL>
#####################################################################
恢复2. 将只读表空间数据文件离线,先行打开数据库,由RMAN操作
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 04/07/2010 19:30:55
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u02/oradata/zydev/ts01.dbf'
RMAN> sql 'alter database datafile 5 offline';
RMAN> alter database open;
RMAN> restore datafile 5;
RMAN> recover datafile 5;
RMAN> sql 'alter database datafile 5 online';
#####################################################################
恢复3. 恢复所有的需要的数据文件,然后打开数据库
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 04/07/2010 19:48:31
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u02/oradata/zydev/ts01.dbf'
RMAN> restore datafile 5;
RMAN> recover datafile 5;
RMAN> alter database open;
#####################################################################
恢复4. restore database check readonly,恢复所有的数据库文件,然后打开数据库
RMAN> restore database check readonly;
Starting restore at 07-APR-10
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 00005 to /u02/oradata/zydev/ts01.dbf
channel
ORA_DISK_1: reading from backup piece
/u01/app/oracle/flash_recovery_area/ZYDEV/backupset/2010_04_07/o1_mf_nnndf_TAG20100407T184537_5vrrll39_.bkp
channel ORA_DISK_1: restored backup piece 1
piece
handle=/u01/app/oracle/flash_recovery_area/ZYDEV/backupset/2010_04_07/o1_mf_nnndf_TAG20100407T184537_5vrrll39_.bkp
tag=TAG20100407T184537
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u02/oradata/zydev/system01.dbf
restoring datafile 00002 to /u02/oradata/zydev/undotbs01.dbf
restoring datafile 00003 to /u02/oradata/zydev/sysaux01.dbf
restoring datafile 00004 to /u02/oradata/zydev/users01.dbf
channel
ORA_DISK_1: reading from backup piece
/u01/app/oracle/flash_recovery_area/ZYDEV/backupset/2010_04_07/o1_mf_nnndf_TAG20100407T185426_5vrs331q_.bkp
channel ORA_DISK_1: restored backup piece 1
piece
handle=/u01/app/oracle/flash_recovery_area/ZYDEV/backupset/2010_04_07/o1_mf_nnndf_TAG20100407T185426_5vrs331q_.bkp
tag=TAG20100407T185426
channel ORA_DISK_1: restore complete, elapsed time: 00:01:25
Finished restore at 07-APR-10
RMAN> recover database;
RMAN> alter database open;
#####################################################################
恢复5. 一般处理
SQL> set linesize 180
SQL> col name format a50
SQL> col error format a20
SQL> select file#, name , error from v$dbfile JOIN v$recover_file USING (file#);
FILE# NAME ERROR
---------- -------------------------------------------------- --------------------
4 /u02/oradata/zydev/users01.dbf FILE NOT FOUND
5 /u02/oradata/zydev/ts01.dbf FILE NOT FOUND
SQL>
RMAN> restore datafile 4,5;
RMAN> recover datafile 4,5;
RMAN> alter database open;
source:http://ctchina.blog.sohu.com/147863974.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27036311/viewspace-1425105/
,如需转载,请注明出处,否则将追究法律责任。