暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用数据库闪回恢复技术恢复误删除数据

敏而好好学 2018-06-13
775


测试环境:Windows Server 2003 Enterprise Edition SP2

数据库环境:Oracle 10.2


Oracle数据库的强大备份恢复机制除了之前讲过的RMAN和导出导入,还有闪回技术。关于这种技术的讲解,小伙伴们可以在网上搜索。今天,我们一起来实战操作,利用这种闪回恢复技术恢复误删除的数据。


本次实战操作是以HIS数据库COMM用户下的表USERS被误删除部分数据后,利用闪回技术恢复至误删除数据前的数据量。


1、查看闪回参数 UNDO_RETENTION

该参数在10G中默认设置为900秒,我们可以酌情调高点这个参数,如2个小时,7200秒。但该参数如果设置不当,会导致闪回空间无限增大,对系统性能产生不良效果。

错误提示:请求写入SPFILE,但在启动时未指定SPFILE。这个测试库在做异机RMAN恢复后,并未创建SPFILE,根据错误提示,使用PFILE重建SPFILE,再重启数据库,即可。

--重建SPFILE

--重启数据库,并设置UNDO_RETENTION参数为7200。


2、我们另开个命令提示符窗口,以COMM的身份登录数据库,并查看一下表USERS的数据量。


3、接下来,我们创建一张表USERS的备份表USERS_BAK,只要数据结构即可,用来暂存恢复的数据。


4、我们此次实战简单点,先看看当前的FSCN点是多少。

SQL>SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FSCN FROM DUAL;


5、现在我们来识删除一些表USERS里的数据,删除完后,我们再来看看表USERS的数据量,如下图示,已删除10行数据。


6、查找最佳SCN点,如果在现实操作中出现误删除的话,情况就会变得更复杂,工作量更大。我们在确认误删除时间后,需要借助归档日志文件,查看V$ARCHIVED_LOG视图来确认数据的SCN变化。根据该日志的开始FSCN和结束NSCN多次查找最佳的恢复点。查询SCN代码如下:

SQL>SELECT COUNT(*) FROM USERS AS  OF SCN 12345678;

或者使用如下代码

SQL>SELECT COUNT(*) FROM USERS AS  OF SCN &SCN;

Enter value for scn:12345678

SQL>/

Enter value for scn:12345679

如此循环查询,找到最佳的恢复点SCN。


7、根据上图找到SCN点,我们先将数据恢复至刚才创建的备份表USERS_BAK里。并检查一下,数据是否已经恢复。


8、最后,如果确认恢复表USERS_BAK数据无误,即可将表USERS_BAK回填到表USERS里。

【完】


怎么样,如果您觉得在下写得还行,请长按识别二维码,加关注


文章转载自敏而好好学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论