RMAN恢复-数据文件与表空间的恢复
RMAN恢复-数据文件与表空间的恢复
数据文件恢复open状态下恢复关闭后意外丢失的数据文件
除了system表空间的数据文件(mount)之外,其它数据文件可以在open(mount也可以)状态下恢复。open状态下恢复数据文件可以减少数据库停用的时间,所以应该在open状态下恢复这些数据文件。
示例一数据文件被误删除
数据库关闭状态下删除非系统表空间数据文件。
启动数据库到mount状态。
脱机丢失的数据文件,alter database datafile n offline。
打开数据库,alter database open。
转储数据文件,restore datafile n。
使用recover datafile n 应用归档日志。
联机数据文件,alter database datafile n online。
- --数据库关闭状态下删除非系统表空间数据文件。
- [Oracle@localhost ~]$ rm $ORACLE_BASE/product/10.2.0/oradatabak/example01.dbf;
- SQL> select file#,error from v$recover_file;
- FILE# ERROR
- ---------- -----------------------------------------------------------------
- 5 FILE NOT FOUND
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/oracle/product/10.2.0/oradatabak/example01.dbf
- --恢复数据文件
- RMAN> run {
- startup force mount;
- sql 'alter database datafile 5 offline';
- sql 'alter database open';
- restore datafile 5;
- recover datafile 5;
- sql 'alter database datafile 5 online';
- 8> }
数据库关闭状态下删除非系统表空间数据文件。
启动数据库到mount状态。
脱机丢失的数据文件,alter database datafile n offline。
打开数据库,alter database open。
在restore database之前,执行set newname为数据文件指定新的位置。
在restore database之后,执行switch datafile改变控制文件中数据文件位置和名称。
之后通过执行recover database应用归档日志。
联机数据文件,alter database datafile n online。
- --数据库关闭状态下删除非系统表空间数据文件。
- [oracle@localhost ~]$ rm $ORACLE_BASE/product/10.2.0/oradatabak/example01.dbf;
- SQL> select file#,error from v$recover_file;
- FILE# ERROR
- ---------- -----------------------------------------------------------------
- 5 FILE NOT FOUND
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/oracle/product/10.2.0/oradatabak/example01.dbf
- --恢复数据文件
- [oracle@localhost ~]$ rman target sys/oracle@oralife nocatalog
- RMAN> run {
- 2> startup force mount;
- 3> sql 'alter database datafile 5 offline';
- 4> sql 'alter database open';
- 5> set newname for datafile 5 to '$ORACLE_BASE/product/10.2.0/oradata/oralife/example01.dbf';
- 6> restore datafile 5;
- 7> switch datafile 5;
- 8> recover datafile 5;
- 9> sql 'alter database datafile 5 online';
- 10> }
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/oracle/product/10.2.0/oradata/oralife/example01.dbf
- SQL> select file#,error from v$recover_file;
- no rows selected
除了system表空间的数据文件(mount)之外,其它数据文件可以在open(mount也可以)状态下恢复。open状态下恢复数据文件可以减少数据库停用的时间,所以应该在open状态下恢复这些数据文件。
示例一数据文件被误删除
数据库open状态下删除非系统表空间数据文件。
脱机丢失的数据文件,alter database datafile n offline。
转储数据文件,restore datafile n。
使用recover datafile n 应用归档日志。
联机数据文件,alter database datafile n online。
示例二数据文件所在磁盘出现损坏
数据库open状态下删除非系统表空间数据文件。
脱机丢失的数据文件,alter database datafile n offline。
在restore database之前,执行set newname为数据文件指定新的位置。
在restore database之后,执行switch datafile改变控制文件中数据文件位置和名称。
之后通过执行recover database应用归档日志。
联机数据文件,alter database datafile n online。
open状态下恢复未备份的数据文件
恢复方式与以上两种相同,因为数据文件没有备份,在转储数据文件时,会自动创建数据文件。
表空间恢复
评论暂时关闭