admin管理员组文章数量:1130349
服务器上的Oracle数据库表被你截断、drop、delete了,是不是突然感觉到背后凉飕飕的,一股寒意从脚底板直冲发梢,特别上头?反正我就是这样的感觉
如果不赶紧恢复,轻则卷被子走人,重则就很严重!跑路是不可能跑路成功了
俗话说:“代码和人只能跑一个”,没了数据库,代码就跑不起来!为了让代码跑,而不是自己跑,就只能寄出神器(ParnassusData Recovery Manager)了
有了ParnassusData Recovery Manager,你再也不用提心吊胆的(而且是拖家带口的)连夜买出国的机票了
PRM概述:
ParnassusData Recovery Manager(以下简称 PRM)是企业级 ORACLE 数据灾难恢复软 件,可直接从 Oracle 9i,10g,11g,12c 的数据库数据文件(datafile)中抽取还原数据表上的数据, 而不需要通过 ORACLE 数据库实例上执行 SQL 来拯救数据。ParnassusData Recovery Manager 是一款基于 JAVA 开发的绿色软件,无需安装,下载解压后便可直接使用。
它能做什么:prm dul恢复oracle数据库最简模式
prm dul使用数据搭桥传输Oracle表数据
prm dul在损坏数据库使用exportddl导出建表语句、索引、存储过程、函数等代码
prm dul恢复oracle中被delete的数据
prm dul恢复oracle中被truncate的数据
prm dul用户级别的数据搭桥
prm dul在ASM存储情况下的最简模式
prm dul恢复oracle中被drop掉的表
prm dul恢复oracle 12c以后可拔插数据库PDB/CDB中的数据
prm dul恢复被恶意加密的Oracle数据文件
prmscan oracle数据块重组恢复解决方案
准备:
操作系统上必须已经安装JAVA JDK 1.8或以上版本才能运行PRM-DUL 5.1,请确保LINUX/UNIX上/bin/java已加入到PATH中。
这是一个GUI程序,当在Linux上使用时,确保能启动远程图形化桌面,例如至少你应当能启动xclock或gnome-terminal。
在确保图形化界面可用的情况下:
在Windows上直接点击prm.bat
在LINUX/UNIX上执行命令行: sh prm.sh
下载PRM:https://www.parnassusdata/zh-hans/node/1343
使用:
1、启动PRM,并选择开始-->恢复向导
2、直接下一步
3、此情况中并未采用ASM存储,所以仅需要选择 字典模式 即可:
4、根据你的环境系统选择Endian,我的是Windows,所以我选择小端(Little)
tips:如果你的数据文件是在AIX(即Big Endian的)上生成的,你为了方便而将这些数据文件拷贝到Windows服务器上并使用PRM来恢复数据,那么你仍应当选择其原生的Big Endian格式。
| Solaris[tm] OE (32-bit) | Big |
| Solaris[tm] OE (64-bit) | Big |
| Microsoft Windows IA (32-bit) | Little |
| Linux IA (32-bit) | Little |
| AIX-Based Systems (64-bit) | Big |
| HP-UX (64-bit) | Big |
| HP Tru64 UNIX | Little |
| HP-UX IA (64-bit) | Big |
| Linux IA (64-bit) | Little |
| HP Open VMS | Little |
| Microsoft Windows IA (64-bit) | Little |
| IBM zSeries Based Linux | Big |
| Linux x86 64-bit | Little |
| Apple Mac OS | Big |
| Microsoft Windows x86 64-bit | Little |
| Solaris Operating System (x86) | Little |
| IBM Power Based Linux | Big |
| HP IA Open VMS | Little |
| Solaris Operating System (x86-64) | Little |
| Apple Mac OS (x86-64) | Little |
Block Size和偏移量可到后面修改
5、点击Choose Files, 一般我们推荐 如果数据库不大,那么将该库所有的数据文件都选择进来; 如果你的数据库很大,且你了解你的数据表位于哪些数据文件上,则你可以仅仅选择SYSTEM表空间的数据文件(必须!)以及数据库表所在表空间的数据文件
tips:注意Choose界面支持Ctrl + A 和Shift等键盘操作
查看表空间位置:
Select * FROM DBA_DATA_FILES;
6、需要为指定的数据文件指定其Block Size即ORACLE数据块的大小,这里根据实际情况修改即可, 例如你的DB_BLOCK_SIZE是8K,但是部分表空间指定16K作为数据块大小的,仅仅需要为那些不是8k的数据文件修改BLOCK_SIZE即可;
这里的OFFSET(偏移量) 参数主要是为了那些采用裸设备存放数据文件的场景,例如在AIX上基于普通VG的LV作为数据文件,则存在4k的OFFSET,需要在此处指定
Load(加载)阶段PRM会从SYSTEM表空间中读取ORACLE数据字典信息,并在自带的Derby中自建一个数据字典,这让PRM有能力操作ORACLE数据库中的各种数据
?
Load完成后会在后台输出数据库 字符集和国家字符集等信息
注意PRM是支持 多语言和ORACLE数据库的多字符集的, 但是前提是实施PRM数据恢复的操作系统要求已经安装了对应的语言包; 例如在Windows操作系统上没有安装中文语言包,但是由于ORACLE数据库字符集是独立于操作系统语言的,即ORACLE数据库的字符集可以为ZHS16GBK字符集,但是操作系统并不支持中文,此场景中不在本服务器上部署的ORACLE客户端并不受影响,可以正确显示数据库中的中文数据。
但是使用PRM则要求实施PRM数据恢复的操作系统已经安装了对应的语言包,例如用户要恢复ZHS16GBK的中文字符集数据库,则需要操作系统上已经安装了中文语言包才可以
类似的 在Linux上需要安装fonts-chinese 中文字体包。
7、Load完成后 PRM界面左侧出现按照数据库用户分组的树形图
点开用户,可以看到多个用户名。然后选择被截断表所在用户名,我需要恢复ACT_RU_VARIABLE表,因为已经被我截断,所以双击表名,右边没有数据;如果是表中有数据,则由数据显示
8、右键表名,选择Unload truncated data
PRM将尝试扫描该表所在表空间并将已经truncated掉的数据抽取出来。
下图显示抽取成功,共93条数据,然后就去可以打开该路径了
9、本地打开上面的路径,就可以看到有这么两个文件
pwjhjs.act_ru_variable.ctl:将文本数据导入到数据库中使用的SQLLDR 控制文件
pwjhjs.act_ru_variable.dat.truncated:文本数据
Windows下数据导入(数据恢复):
①打开pwjhjs.act_ru_variable.ctl sqlldr控制文件,将infile后面改为pwjhjs.act_ru_variable.dat.truncated 的绝对路径
tips:将数据导入到源表中(注意 ParnassusData强烈建议你修改该SQLLDR控制文件中导入的表名字为一个临时表,这样不会覆盖原环境)。
②win + r ,输入 cmd,回车,然后输入命令
数据导入本地库:
1、sqlldr control=xxx.ctl direct=y
示例:
sqlldr control=E:\test\c##root.act_ru_variable.ctl direct=y
回车之后输入用户名和密码就可以了
结果:
2、sqlldr 用户名/密码@服务名 control=xxx.ctl
示例:
sqlldr c##root/root@ORCL control=E:\test\c##root.act_ru_variable.ctl
结果:
数据导入到服务器:
命令:sqlldr 用户名/密码@ip:port/服务名 control=xxx.ctl
示例:
sqlldr pwjhjs/123456@192.168.1.999:1521/ORCL control=
E:\test\pwjhjs.act_ru_identitylink.ctl
结果:
最后:该方法为Truncate表的常规恢复。该环境中 所有数据库文件均是可用且健康的,用户仅需要 字典模式下加载SYSTEM表空间的数据文件以及被TRUNCATED表的数据文件即可
参考:
https://www.parnassusdata/zh-hans/node/52
http://zcdn.parnassusdata/prm03.pdf
服务器上的Oracle数据库表被你截断、drop、delete了,是不是突然感觉到背后凉飕飕的,一股寒意从脚底板直冲发梢,特别上头?反正我就是这样的感觉
如果不赶紧恢复,轻则卷被子走人,重则就很严重!跑路是不可能跑路成功了
俗话说:“代码和人只能跑一个”,没了数据库,代码就跑不起来!为了让代码跑,而不是自己跑,就只能寄出神器(ParnassusData Recovery Manager)了
有了ParnassusData Recovery Manager,你再也不用提心吊胆的(而且是拖家带口的)连夜买出国的机票了
PRM概述:
ParnassusData Recovery Manager(以下简称 PRM)是企业级 ORACLE 数据灾难恢复软 件,可直接从 Oracle 9i,10g,11g,12c 的数据库数据文件(datafile)中抽取还原数据表上的数据, 而不需要通过 ORACLE 数据库实例上执行 SQL 来拯救数据。ParnassusData Recovery Manager 是一款基于 JAVA 开发的绿色软件,无需安装,下载解压后便可直接使用。
它能做什么:prm dul恢复oracle数据库最简模式
prm dul使用数据搭桥传输Oracle表数据
prm dul在损坏数据库使用exportddl导出建表语句、索引、存储过程、函数等代码
prm dul恢复oracle中被delete的数据
prm dul恢复oracle中被truncate的数据
prm dul用户级别的数据搭桥
prm dul在ASM存储情况下的最简模式
prm dul恢复oracle中被drop掉的表
prm dul恢复oracle 12c以后可拔插数据库PDB/CDB中的数据
prm dul恢复被恶意加密的Oracle数据文件
prmscan oracle数据块重组恢复解决方案
准备:
操作系统上必须已经安装JAVA JDK 1.8或以上版本才能运行PRM-DUL 5.1,请确保LINUX/UNIX上/bin/java已加入到PATH中。
这是一个GUI程序,当在Linux上使用时,确保能启动远程图形化桌面,例如至少你应当能启动xclock或gnome-terminal。
在确保图形化界面可用的情况下:
在Windows上直接点击prm.bat
在LINUX/UNIX上执行命令行: sh prm.sh
下载PRM:https://www.parnassusdata/zh-hans/node/1343
使用:
1、启动PRM,并选择开始-->恢复向导
2、直接下一步
3、此情况中并未采用ASM存储,所以仅需要选择 字典模式 即可:
4、根据你的环境系统选择Endian,我的是Windows,所以我选择小端(Little)
tips:如果你的数据文件是在AIX(即Big Endian的)上生成的,你为了方便而将这些数据文件拷贝到Windows服务器上并使用PRM来恢复数据,那么你仍应当选择其原生的Big Endian格式。
| Solaris[tm] OE (32-bit) | Big |
| Solaris[tm] OE (64-bit) | Big |
| Microsoft Windows IA (32-bit) | Little |
| Linux IA (32-bit) | Little |
| AIX-Based Systems (64-bit) | Big |
| HP-UX (64-bit) | Big |
| HP Tru64 UNIX | Little |
| HP-UX IA (64-bit) | Big |
| Linux IA (64-bit) | Little |
| HP Open VMS | Little |
| Microsoft Windows IA (64-bit) | Little |
| IBM zSeries Based Linux | Big |
| Linux x86 64-bit | Little |
| Apple Mac OS | Big |
| Microsoft Windows x86 64-bit | Little |
| Solaris Operating System (x86) | Little |
| IBM Power Based Linux | Big |
| HP IA Open VMS | Little |
| Solaris Operating System (x86-64) | Little |
| Apple Mac OS (x86-64) | Little |
Block Size和偏移量可到后面修改
5、点击Choose Files, 一般我们推荐 如果数据库不大,那么将该库所有的数据文件都选择进来; 如果你的数据库很大,且你了解你的数据表位于哪些数据文件上,则你可以仅仅选择SYSTEM表空间的数据文件(必须!)以及数据库表所在表空间的数据文件
tips:注意Choose界面支持Ctrl + A 和Shift等键盘操作
查看表空间位置:
Select * FROM DBA_DATA_FILES;
6、需要为指定的数据文件指定其Block Size即ORACLE数据块的大小,这里根据实际情况修改即可, 例如你的DB_BLOCK_SIZE是8K,但是部分表空间指定16K作为数据块大小的,仅仅需要为那些不是8k的数据文件修改BLOCK_SIZE即可;
这里的OFFSET(偏移量) 参数主要是为了那些采用裸设备存放数据文件的场景,例如在AIX上基于普通VG的LV作为数据文件,则存在4k的OFFSET,需要在此处指定
Load(加载)阶段PRM会从SYSTEM表空间中读取ORACLE数据字典信息,并在自带的Derby中自建一个数据字典,这让PRM有能力操作ORACLE数据库中的各种数据
?
Load完成后会在后台输出数据库 字符集和国家字符集等信息
注意PRM是支持 多语言和ORACLE数据库的多字符集的, 但是前提是实施PRM数据恢复的操作系统要求已经安装了对应的语言包; 例如在Windows操作系统上没有安装中文语言包,但是由于ORACLE数据库字符集是独立于操作系统语言的,即ORACLE数据库的字符集可以为ZHS16GBK字符集,但是操作系统并不支持中文,此场景中不在本服务器上部署的ORACLE客户端并不受影响,可以正确显示数据库中的中文数据。
但是使用PRM则要求实施PRM数据恢复的操作系统已经安装了对应的语言包,例如用户要恢复ZHS16GBK的中文字符集数据库,则需要操作系统上已经安装了中文语言包才可以
类似的 在Linux上需要安装fonts-chinese 中文字体包。
7、Load完成后 PRM界面左侧出现按照数据库用户分组的树形图
点开用户,可以看到多个用户名。然后选择被截断表所在用户名,我需要恢复ACT_RU_VARIABLE表,因为已经被我截断,所以双击表名,右边没有数据;如果是表中有数据,则由数据显示
8、右键表名,选择Unload truncated data
PRM将尝试扫描该表所在表空间并将已经truncated掉的数据抽取出来。
下图显示抽取成功,共93条数据,然后就去可以打开该路径了
9、本地打开上面的路径,就可以看到有这么两个文件
pwjhjs.act_ru_variable.ctl:将文本数据导入到数据库中使用的SQLLDR 控制文件
pwjhjs.act_ru_variable.dat.truncated:文本数据
Windows下数据导入(数据恢复):
①打开pwjhjs.act_ru_variable.ctl sqlldr控制文件,将infile后面改为pwjhjs.act_ru_variable.dat.truncated 的绝对路径
tips:将数据导入到源表中(注意 ParnassusData强烈建议你修改该SQLLDR控制文件中导入的表名字为一个临时表,这样不会覆盖原环境)。
②win + r ,输入 cmd,回车,然后输入命令
数据导入本地库:
1、sqlldr control=xxx.ctl direct=y
示例:
sqlldr control=E:\test\c##root.act_ru_variable.ctl direct=y
回车之后输入用户名和密码就可以了
结果:
2、sqlldr 用户名/密码@服务名 control=xxx.ctl
示例:
sqlldr c##root/root@ORCL control=E:\test\c##root.act_ru_variable.ctl
结果:
数据导入到服务器:
命令:sqlldr 用户名/密码@ip:port/服务名 control=xxx.ctl
示例:
sqlldr pwjhjs/123456@192.168.1.999:1521/ORCL control=
E:\test\pwjhjs.act_ru_identitylink.ctl
结果:
最后:该方法为Truncate表的常规恢复。该环境中 所有数据库文件均是可用且健康的,用户仅需要 字典模式下加载SYSTEM表空间的数据文件以及被TRUNCATED表的数据文件即可
参考:
https://www.parnassusdata/zh-hans/node/52
http://zcdn.parnassusdata/prm03.pdf
版权声明:本文标题:Oracle表被truncate(截断),该如何恢复? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754762854a2725312.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论