Oracle 归档模式下rman恢复数据文件与表空间的恢复
oracle 数据文件丢换恢复方法,
先测试第一种,数据库是归档模式下。
新建TEST表空间,并建一个test,dbf 数据文件。
并导入了大量信息。
先作好一个
rman> backup database /*完整备份。
然后再向表中导入一些数据,
最好多次切换重任日志文件,并生归档日志。
数据库关闭状态下删除非系统表空间TEST的数据文件,
SQL> startup open;
ORACLE 例程已经启动。
Total System Global Area 872685568 bytes
Fixed Size 2258200 bytes
Variable Size 553650920 bytes
Database Buffers 310378496 bytes
Redo Buffers 6397952 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: '/data/app/oracle/oradata/hextrack/test01.dbf'
会的以上错误。
SQL> select file#,error from v$recover_file;
FILE# ERROR
---------- ------------------
9 FILE NOT FOUND
SQL> select file#,name from v$datafile where file#=9;
FILE# NAME
---------- --------------------------------------------------------------------------------
9 /data/app/oracle/oradata/hextrack/test01.dbf
下面使用rman 恢复数据文件:
- RMAN> connect target /
- RMAN> run {
- startup force mount;
- sql 'alter database datafile 9 offline';
- sql 'alter database open';
- restore datafile 9;
- recover datafile 9;
- sql 'alter database datafile 9 online';
- 8> }
执行命令后,rman 会自动恢复数据文件,完成后,检查数据都正常。
这时就要数据文件指定新的位置,改变控制文件中数据文件位置和名称
在restore database之前,执行set newname为数据文件指定新的位置。
在restore database之后,执行switch datafile改变控制文件中数据文件位置和名称。
- RMAN> run {
- 2> startup force mount;
- 3> sql 'alter database datafile 9 offline';
- 4> sql 'alter database open';
- 5> set newname for datafile 9 to '/data/app/oracle/oradata/hextrack/test01.dbf';
- 6> restore datafile 9;
- 7> switch datafile 9;
- 8> recover datafile 9;
- 9> sql 'alter database datafile 9 online';
- 10> }
检查数据,都正常。
如果数据文件没有作备份,一样可以恢复。
SQL> startup mount;
SQL> alter database datafile '/data/app/oracle/oradata/hextrack/test01.dbf' OFFLINE;
SQL> alter database create datafile '/data/app/oracle/oradata/hextrack/test01.dbf' as '/data/app/oracle/oradata/hextrack/test01.dbf';
SQL> recover datafile 9;
SQL> alter database open;
检查数据,都正常。
数据块介质恢复
如果数据文件部分数据块出现损坏,可以使用blockrecover 命令恢复损坏数据块。
如:
RMAN> blockrecover device type disk
2>datafile 5 block 2,7,88;
目录 返回
首页