tonyliu 发表于 2014-6-18 20:10:04

请问使用PRM 恢复ts$ 删除数据问题

刘大,
我下载了RPM 测试在误删除 系统表数据的情况下恢复,根据使用白皮书,我删除了 ts$里的数据,最后恢复的时候有问题,请刘大帮忙看下(数据库版本为: 10.2.0.1, linux 5.4):
1. 删除数据ts$
SQL> select name, ts# from ts$;

NAME                                      TS#
------------------------------ ----------
SYSTEM                                        0
UNDOTBS1                                1
SYSAUX                                        2
TEMP                                        3
USERS                                        4
UNDOTBS2                                5
T1                                        6
EXAMPLE                                 7
OCMINDEX                                8
TEST                                        9

10 rows selected.

SQL> delete from ts$;

10 rows deleted.

SQL> commit;

Commit complete.

2. 数据库重启
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                    1218412 bytes
Variable Size                   67111060 bytes
Database Buffers          113246208 bytes
Redo Buffers                    2973696 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> exit

$ tail -10 /u01/oracle/admin/ocm1/bdump/alert_ocm1.log
Thu Jun 19 02:26:07 2014
SMON: enabling cache recovery
Thu Jun 19 02:26:07 2014
Errors in file /u01/oracle/admin/ocm1/udump/ocm1_ora_14565.trc:
ORA-30012: undo tablespace 'UNDOTBS1' does not exist or of wrong type
Thu Jun 19 02:26:07 2014
Error 30012 happened during db open, shutting down database
USER: terminating instance due to error 30012
Instance terminated by USER, pid = 14565
ORA-1092 signalled during: ALTER DATABASE OPEN...
$

3.拷贝数据库的所以数据文件到本地进行PRM 恢复,如下:
参考步骤是:

1. Recovery Wizard
2. 选择字典模式 Dictionary Mode
3. 合理选择Big或者Little Endian
4. 加入数据文件并点击Load
5. 根据实际需求恢复表中的数据

操作步骤截图见附件,

最后抽取 ts$ 里都是0条记录,ts$被删掉掉的数据如何恢复呢?

Maclean Liu(刘相兵 发表于 2014-6-18 20:16:40

你好

对于被删除的行数据,PRM目前还不提供直接的恢复选项。

这样做的原因有几点:
1、 对于被删除的数据,实际可以使用其他技术 例如 undo 闪回查询或者挖掘日志实现
2、被删除后的数据在block级别可能实际上已经消失了,所以很多行不具有可恢复性
3、 诗檀在白皮书中写的delete ts$表后的操作 是想说明当字典损坏,数据库无法打开OPEN情况下,去恢复其他用户表数据的情况, 单纯恢复TS$在这里已经没意义了。

tonyliu 发表于 2014-6-18 20:25:35

哦,我理解错了呵。我理解成用PRM 恢复损坏或误操作的系统表数据。其实这个时候业务数据已经完全在PRM 里可以恢复出来了,单纯恢复ts$是已无意义了。谢谢刘大指点。
页: [1]
查看完整版本: 请问使用PRM 恢复ts$ 删除数据问题