使用PRM-DUL恢复无备份的Oracle数据表

1. 确定数据表是否在回收站中在没有任何备份的情况下,如果意外地DROP了系统中的核心应用表,可以首先通过查询DBA_RECYCLEBINS视图来确定被DROP掉的表是否在回收站中。在Oracle 1

1. 确定数据表是否在回收站中

在没有任何备份的情况下,如果意外地DROP了系统中的核心应用表,可以首先通过查询DBA_RECYCLEBINS视图来确定被DROP掉的表是否在回收站中。在Oracle 10g及以后的版本中,提供了recyclebin回收站特性,可以优先通过回收站flashback to before drop来恢复数据表。如果回收站中也没有了被DROP掉的表,则需要第一时间使用PRM-DUL进行数据恢复。

2. 恢复流程

恢复的简要流程如下:

1. 首先将被DROP掉的数据表所在的表空间设置为OFFLINE状态。

2. 通过查询数据字典或者使用LOGMINER工具找到被DROP掉数据表的DATA_OBJECT_ID。如果无法获取DATA_OBJECT_ID,则需要在非字典模式下进行操作。

3. 启动PRM-DUL,并进入非字典模式。加入被DROP掉数据表所在的表空间的所有数据文件,然后执行SCAN DATABASE SCAN TABLE from Extent MAP命令。

4. 通过DATA_OBJECT_ID定位到展开对象树形图中对应的数据表,并采用DataBridge模式将其插回源数据库中。

3. 人工识别和恢复数据表

如果通过查询数据字典或者使用LOGMINER等方法无法获取DATA_OBJECT_ID,可以尝试通过人工识别数据来定位需要恢复的数据表。在数据表不多的情况下,可以通过查看数据内容来识别需要恢复的数据表。

首先,将被DROP掉的数据表所在的表空间设置为OFFLINE状态。然后,通过查询dba_segments视图找到对应的表空间名称和文件名。接着,将相关的ASM Diskgroup加入PRM-DUL,并选择对应的数据文件进行SCAN操作。

通过人工识别数据,可以找到对应的DATA_OBJECT_ID。例如,通过DataBridge技术将DATA_OBJECT_ID为82641的数据传输回源库中的其他表空间。

这样,即使在没有任何备份的情况下,通过使用PRM-DUL工具和人工识别数据,可以恢复Oracle数据库中无意中被DROP掉的数据表。

标签: