ITPub博客

首页 > 数据库 > Oracle > restore database check readonly

restore database check readonly

Oracle 作者:zhouxianwang 时间:2015-02-03 15:15:53 0 删除 编辑
在默认情况下,即使丢失了只读的数据文件,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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-04

  • 博文量
    144
  • 访问量
    493871