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

测试环境: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 &SCN;

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

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

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

【完】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G25XVY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券