养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

基于Oracle 数据文件DBF恢复数据

时间:2024-11-11 18:24:36

在使用oracle过程中如果一直没有有效的逻辑或物理RMAN备份则可能出现数据库损害仑喵茏坏或丢失文件而没有任何备份可用的情况,例如丢失了CONTROL.CTL控制文件裘沲谡迹和SPFILE/PFILE参数文件的同时丢失了部分的数据文件.DBF文件。此时可以通过异常恢复手段使用隐藏参数来尝试打开Oracle数据库,但存在一定的概率无法打开数据库。也可以尝试利用PRM-DUL软件来直接抽取数据库中的有用数据。

工具/原料

OracleDatabase9i/10g/11g/12c

PRM-DULORACLE数据恢复工具

JAVAJDK1.6以上版本

方法/步骤

1、将手头还剩下的ORACLE数据文件即扩展名一般为.DBF或.ORA的文件复制一份到恢复使用的环境操作系统上,推荐使用的操作系统为Windows或Linux。并在Windows或Linux上安装JAVAJDK1.6以上版本。

基于Oracle 数据文件DBF恢复数据

2、启动PRM-DUL点击恢复向导字典模式

基于Oracle 数据文件DBF恢复数据

基于Oracle 数据文件DBF恢复数据

基于Oracle 数据文件DBF恢复数据

基于Oracle 数据文件DBF恢复数据

3、加入所有oracle数据文件,不需要加入临时文件TEMPFILE、UNDO数据文件、控制文件、日志文件

基于Oracle 数据文件DBF恢复数据

4、点击load按钮,PRM会自动加载数据字典即bootstrap动作

基于Oracle 数据文件DBF恢复数据

5、Load完成后会在后台输出数据库字符集和国家字符集等信息:

基于Oracle 数据文件DBF恢复数据

6、Load完成后PRM-DUL界面左侧出现按照数据库用户分组的树形图点开USERS,可以看到多个用户名,例如用户需要恢复PDSCHEMA下的一张表,则点开PD,并双击表名:

基于Oracle 数据文件DBF恢复数据

7、之后点击需要恢复数据的表,使用普通的unload到sqlldr文件或使用PRM-DUL的DataBridge数据搭桥功能均可以将数据转移到所需要的地方。

8、使用数据搭桥模式也十分简便,通常规模式一样,在左侧树形图中点中你需要的表,右键选择DataBridge选项:

基于Oracle 数据文件DBF恢复数据

9、首次使用数据搭桥模式时需要先创建目标数据库连接信息,这就和我们在SQLDEVELOPER中创建一个Connection是类似的工作,包括目标数据库的Host、端口、Service_Name以及用户登录信息;注意这里填选的用户信息,将会是稍后数据搭桥使用的目标数据库的User用户,即从源库这里抽取出来的表会传输到目标数据库中此处所指定的用户名下。

基于Oracle 数据文件DBF恢复数据

10、如上述建立了一个G10R25的连接,用虿搦糍掏户为maclean,对应的oracleEasyConnection连接串为192.168.1.191:1521/G10R25。完成上桢郓羼抱述数据库连接信息填写后可以点击Test按钮来测试该连接配置是否正确可用,如果返回“Connecttodbserversuccessfully“则说明连接可用,点击Save按钮保存即可。

基于Oracle 数据文件DBF恢复数据

11、Save后进入DataBridge主界面,首先在DBConnection下拉框中选择刚刚加入的ConnectionG10R25:

基于Oracle 数据文件DBF恢复数据

12、此处如果所需用的数据库连接并未在DBconnection下拉框中出现,则需要点击DBconnection旁的”…”按钮添加DBConnection:

基于Oracle 数据文件DBF恢复数据

13、正确选择DBConnection后可以Tablespace的下拉框将变得可用,选中合适的表空间:

基于Oracle 数据文件DBF恢复数据

14、使用DataBridge恢复truncate时的注意事项:注意当从源库中恢复出truncate墙绅褡孛数赍铈于脏据时,若使用databridge选项传输数据回到你的源库(如果回传数据不是到源库则没有该问题)时,需要注意Databridge插入到新建表的所在位置应当不是源库中被truncate数据所在的表空间,否则会出现一边在恢复truncate数据一边我们所需恢复的数据被新数据所覆盖的问题,可能导致该恢复场景中的数据完全无法恢复。故请注意,当使用databridge+恢复数据到源库时,在databridge中指定表空间时千万不要使用需要恢复数据所在的表空间!!!!!!用户可以选择是否要将从源库传输到目标库的表的表名做映射修改,例如我们在源库中Truncate掉了一张表,现在通过DataBridge将数据恢复回源库中,但是不想使用原来的表名字,如原来的表名为torderdetail_his,现在希望将恢复的数据以别的表名存放,则可以选中“ifneedtoremaptable”并填入合适的目标表名,如下图所示:

基于Oracle 数据文件DBF恢复数据

15、注意:1)对于目标库中已经存在对应表名的情况,PRM-DUL不会重建表而是会在现有釉涑杵抑表的基础上插入所需恢复的数据,由于表已经建立了所以指定的表空间将绣诅收蟮无效2)对于目标数据库中还不存在对应表名的情况,PRM-DUL会尝试在指定表空间上建表并插入恢复数据此场景中由于我们是恢复Truncate掉的数据,所以需要选中“ifdatatruncated”选项,否则PRM-DUL将以常规模式抽取数据,将无法抽取到已经被Truncate掉的数据。Truncate数据的大致机理是,ORACLE会在数据字典和SegmentHeader中更新表的DataObjectID,而实际数据部分的块则不会做修改。由于数据字典与段头的DATA_OBJECT_ID与后续的数据块中的并不一致,所以ORACLE服务进程在读取全表数据时不会读取到已经被TRUNCATE但是实际仍未被覆盖的数据。PRM-DUL通过自动扫描被TRUNCATE掉数据段头SegmentHeader后续的数据块智能判断TRUNCATE前数据段的DATA_OBJECT_ID,并根据字典中的表字段定义和自动获得的原始DATA_OBJECT_ID来抽取数据。此处还存在一个”iftospecifydataobjectid”输入框,该输入框可以让用户指定要恢复的数据的DataObjectID。一般情况下不需要指定任何值,除非你发现恢复Truncate数据不成功时,建议在ParnassusData原厂工程师的帮助下指定该值。如上正确完成DataBridge配置后即可证实开始数据搭桥,只需要点击DataBridge按钮即可:

基于Oracle 数据文件DBF恢复数据

16、数据搭桥完成后会显示成功传输的数据行数,以及耗时。

基于Oracle 数据文件DBF恢复数据

© 一点知识