Oracle数据库rman恢复之system表空间恢复是本文我们主要要介绍的内容,system表空间存放着数据字典的信息。当数据库处于open状态,如果system表空间所对应的数据文件出现介质失败,那么当在其数据文件上执行I/O操作时,数据库会自动关闭;当数据库处于关闭状态时,如果system表空间所对应的数据文件出现介质失败,数据库将不能打开。恢复system表空间必须在mount状态下进行。
示例一:system表空间的数据文件被误删除备份数据库。
删除system表空间对应的数据文件。启动数据库到mount状态。使用restore datafile转储数据文件,并使用recover datafile命令应用归档日志,***使用alter database open打开数据库。
--备份数据库(略)
--删除system表空间对应的数据文件
RMAN> host rm $ORACLE_BASE/product/10.2.0/oradatabak/system01.dbf
RMAN> startup
connected to target database (not started)
Oracle instance started
database mounted
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/22/2011 21:56:39
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/oracle/10g/oracle/product/10.2.0/oradatabak/system01.dbf'
SQL> select file#,error from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
1 FILE NOT FOUND
SQL> select file#,name from v$datafile where file#=1;
FILE# NAME
---------- ------------------------------------------------------------------------------------------------------------------------
1 /oracle/10g/oracle/product/10.2.0/oradatabak/system01.dbf
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
--启动数据库到mount状态并进行恢复
RMAN> run {
2> startup force mount;
3> restore datafile 1;
4> recover datafile 1;
5> sql 'alter database open';
6> }
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
示例二:system表空间数据文件所在磁盘出现故障
备份数据库(略)删除system表空间对应的数据文件。启动数据库到mount状态。在restore database之前,执行set newname为数据文件指定新的位置。在restore database之后,执行switch datafile改变控制文件中数据文件位置和名称。之后通过执行recover database应用归档日志。***执行alter database open打开数据库。
--备份数据库(略)
--删除system表空间对应的数据文件
RMAN> host 'rm /oracle/10g/oracle/product/10.2.0/oradatabak/system01.dbf'
2> ;
- 1.
- 2.
--启动数据库到mount状态并进行恢复(为数据文件指定新位置,转储数据文件,恢复数据文件,打开数据库)
RMAN> run {
2> startup force mount;
3> set newname for datafile 1 to '/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf';
4> restore datafile 1;
5> switch datafile 1;
6> recover datafile 1;
7> sql 'alter database open';
8> }
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
关于Oracle数据库rman恢复之system表空间恢复的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】