测试环境: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里。
【完】
领取专属 10元无门槛券
私享最新 技术干货