ata/aux/ORA11G/onlinelog/o1_mf_1_br4q4brh_.log deleted
auxiliary instance file /extend/oradata/aux/ORA11G/datafile/o1_mf_sysaux_br4q22yx_.dbf deleted
auxiliary instance file /extend/oradata/aux/ORA11G/datafile/o1_mf_undotbs1_br4q22z4_.dbf deleted
auxiliary instance file /extend/oradata/aux/ORA11G/datafile/o1_mf_system_br4q230g_.dbf deleted
auxiliary instance file /extend/oradata/aux/ORA11G/datafile/o1_mf_system_br4q22sy_.dbf deleted
auxiliary instance file /extend/oradata/aux/ORA11G/controlfile/o1_mf_br4q1v2o_.ctl deleted
Finished recover at 18-JUN-15
RMAN>
上面的步骤可以归纳为如下:
ü? 在目录中创建一个虚拟临时数据库实例;
ü? RMAN自动辅助库AUX创建,利用源数据库的备份集合和归档日志进行全库不完全恢复。恢复范围包括system、sysaux、undo和目标表空间;
ü? 借助Expdp和Impdp,使用可移动表空间原理步骤,将目标表空间数据导出并导回源数据库;
ü? 恢复完成;
下面可以看实际效果。
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') a from dual;
A
--------------------
2015-06-18 13:55:43
SQL> select group#, sequence# from v$log where status='CURRENT';
? ? GROUP#? SEQUENCE#
---------- ----------
? ? ? ? 1? ? ? ? 20
尝试访问数据表。
SQL> select count(*) from test.emp;
select count(*) from test.emp
ORA-00376: 无法读取数据文件 7
ORA-01110: 数据文件 7: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbl_br48h8wp_.dbf'
此时,表空间被offline,需要手工进行online操作。
SQL> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME? ? ? ? ? ? ? ? STATUS
------------------------------ ---------
SYSTEM? ? ? ? ? ? ? ? ? ? ? ? ONLINE
SYSAUX? ? ? ? ? ? ? ? ? ? ? ? ONLINE
UNDOTBS1? ? ? ? ? ? ? ? ? ? ? ONLINE
TEMP? ? ? ? ? ? ? ? ? ? ? ? ? ONLINE
USERS? ? ? ? ? ? ? ? ? ? ? ? ? ONLINE
TESTTBL? ? ? ? ? ? ? ? ? ? ? ? OFFLINE
6 rows selected
SQL> alter tablespace testtbl online;
Tablespace altered
SQL> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME? ? ? ? ? ? ? ? STATUS
------------------------------ ---------
SYSTEM? ? ? ? ? ? ? ? ? ? ? ? ONLINE
SYSAUX? ? ? ? ? ? ? ? ? ? ? ? ONLINE
UNDOTBS1? ? ? ? ? ? ? ? ? ? ? ONLINE
TEMP? ? ? ? ? ? ? ? ? ? ? ? ? ONLINE
USERS? ? ? ? ? ? ? ? ? ? ? ? ? ONLINE
TESTTBL? ? ? ? ? ? ? ? ? ? ? ? ONLINE
6 rows selected
SQL> select count(*) from test.emp;
? COUNT(*)
----------
? ? ? ? 14
SQL> select count(*) from test.dept;
? COUNT(*)
----------
? ? ? ? 4
5、结论
Oracle RMAN的TSPITR在实际中还是很有用处的,特别是当我们没有办法使用Flashback技术(如已经发生了Undo覆盖)的时候。Tablespace的粒度还是比较大,希望以后可以实现Schema或者数据表table级别的的不完全恢复。