以TSPITR方式恢复表空间数据一例(三)

2015-01-25 22:16:24 · 作者: · 浏览: 42
ora10g213 Connected. SQL> select count(*) from t1; select count(*) from t1 * ERROR at line 1: ORA-00376: file 6 cannot be read at this time ORA-01110: data file 6: '/data/oradata/ora10g/tspitr01.dbf'
无法打开恢复的6号文件,由于最后的操作是把该表空间offline的
SQL> select status from dba_tablespaces where tablespace_name='TSPITR';
STATUS --------- OFFLINE
--重新将tspitr表空间online
SQL> alter tablespace tspitr online;
Tablespace altered.
SQL> select count(*) from t1;
COUNT(*) ---------- 50382
之前误删除的测试表T1的数据又回来了。
最后来看一下auxiliary目录结构
[oracle@bak admin]$ cd /u01/aux [oracle@bak aux]$ ll total 4 drwxr-x--- 4 oracle oinstall 4096 Dec 26 16:55 TSPITR_ORA10G_XVBC [oracle@bak aux]$ cd TSPITR_ORA10G_XVBC/ [oracle@bak TSPITR_ORA10G_XVBC]$ ll -lrth total 8.0K drwxr-x--- 2 oracle oinstall 4.0K Dec 26 16:59 onlinelog drwxr-x--- 2 oracle oinstall 4.0K Dec 26 16:59 datafile [oracle@bak TSPITR_ORA10G_XVBC]$ cd onlinelog/ [oracle@bak onlinelog]$ ll total 0 [oracle@bak onlinelog]$ cd ..
[oracle@bak TSPITR_ORA10G_XVBC]$ cd datafile [oracle@bak datafile]$ ll total 0 [oracle@bak datafile]$
虽然在中间过程创建了相关目录和文件,恢复结束以后,只留下了目录结构,文件都被自动删除了
总结:
其实TSPITR方式是对整个表空间的恢复,无论该表空间上有多少张表或对象,只要是自包含的表空间,就可以使用这种方法来进行恢复。但是也有局限性,比方说要恢复的表空间上有许多表,也是自包含的表空间,由于某张表的误删除,恢复时把所有该表空间上表的数据回退到故障点之前的某个时间点,而有时往往并不想这么做。因此,对于粒度更细的精确到表级别的恢复,TSPITR并非最佳方式,利用闪回特性来恢复才是更好的方案。