Oracle数据库rman恢复之system表空间恢复是本文我们主要要介绍的内容,system表空间存放着数据字典的信息。当数据库处于open状态,如果system表空间所对应的数据文件出现介质失败,那么当在其数据文件上执行I/O操作时,数据库会自动关闭;当数据库处于关闭状态时,如果system表空间所对应的数据文件出现介质失败,数据库将不能打开。恢复system表空间必须在mount状态下进行。
示例一:system表空间的数据文件被误删除备份数据库。
删除system表空间对应的数据文件。启动数据库到mount状态。使用restore datafile转储数据文件,并使用recover datafile命令应用归档日志,***使用alter database open打开数据库。
–备份数据库(略)
–删除system表空间对应的数据文件
RMAN>hostrm$ORACLE_BASE/product/10.2.0/oradatabak/system01.dbf RMAN>startup connectedtotargetdatabase(notstarted) Oracleinstancestarted databasemounted RMAN-00571:=========================================================== RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS=============== RMAN-00571:=========================================================== RMAN-03002:failureofstartupcommandat08/22/201121:56:39 ORA-01157:cannotidentify/lockdatafile1-seeDBWRtracefile ORA-01110:datafile1:'/oracle/10g/oracle/product/10.2.0/oradatabak/system01.dbf' SQL>selectfile#,errorfromv$recover_file; FILE#ERROR --------------------------------------------------------------------------- 1FILENOTFOUND SQL>selectfile#,namefromv$datafilewherefile#=1; FILE#NAME ---------------------------------------------------------------------------------------------------------------------------------- 1/oracle/10g/oracle/product/10.2.0/oradatabak/system01.dbf
–启动数据库到mount状态并进行恢复
RMAN>run{ 2>startupforcemount; 3>restoredatafile1; 4>recoverdatafile1; 5>sql'alterdatabaseopen'; 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>;
–启动数据库到mount状态并进行恢复(为数据文件指定新位置,转储数据文件,恢复数据文件,打开数据库)
RMAN>run{ 2>startupforcemount; 3>setnewnamefordatafile1to'/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'; 4>restoredatafile1; 5>switchdatafile1; 6>recoverdatafile1; 7>sql'alterdatabaseopen'; 8>}