- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
闪回技术在数据库误删除中应用
闪回技术在数据库误删除中应用
摘 要:当数据库发生误删除等逻辑错误时,传统上只能通过执行不完全恢复来恢复数据,本文介绍了通过3种闪回技术,提高效率恢复数据库逻辑错误的方法,并对3种闪回技术进行了分析比较。
关键词:备份与恢复;闪回数据库;闪回表;闪回删除
中图法分类号:TP309 文献标识码:A 文章编号:2095-1302(2014)04-0088-02
0 引 言
传统上,误删除了Oracle数据库中的重要表或表中的记录,提交(COMMIT)成功后,再想恢复被误删除的表格或表格中的数据,那只能采用数据库备份和恢复技术,其步骤为:首先利用误删除前备份的全部数据文件和控制文件将数据库还原到备份状态,再应用在线重做日志文件和归档日志文件,将数据库恢复到误删除前的状态,即执行数据库的不完全恢复,这样做不但需要数据库全备份,且操作复杂,耗费时间较长,在恢复期间数据库还必需关闭,不能使用。从Oracle 9i开始,利用新提供的闪回功能,被误删除的表或表中的数据恢复可以更加方便、快捷。Oracle闪回功能在10 g、11 g又分别得到了加强。
1 闪回技术的功能
为了演示闪回功能,先在sql*plus中执行以下语句,创建测试表testta,表中插入3条新记录后,提交插入事务。
SQLCREATE TABLE testta( id INT, name VARCHAR2(4));
SQLINSERT INTO testta VALUES(1,aaaa);
SQLINSERT INTO testta VALUES(2,bbbb);
SQLINSERT INTO testta VALUES(3,cccc);
SQLCOMMIT;
再执行以下语句,设置显示当前时间:
SQLSET TIME ON
删除testta 表中全部3条记录:
14:11:29 SQLDELETE testta;
提交删除事务:
14:12:30 SQLCOMMIT;
14:12:34 SQL SELECT * FROM testta;
表testta中已没有记录。由于删除事务已提交成功,如想恢复被删除的记录,传统的方法只能是执行数据库的不完全恢复。现在采用闪回数据库(Flashback Database)的方法恢复删除数据,操作如下。
关闭数据库,将数据库设置到装载(mount)状态。
14:14:47 SQLSHUTDOWN IMMEDIATE
14:15:04 SQLSTARTUP MOUNT
??用闪回数据库的方法,将数据库整体调整到删除数据前的某一时间。
14:16:10 SQLFLASHBACK DATABASE TO TIMESTAMP TO_DATE(‘2013-12-23 14:11:27’,’yyyy-mm-dd hh24:mi:ss’) ;
使用RESETLOGS选项,打开数据库。
14:17:07 SQLALTER DATABASE OPEN RESETLOGS;
查询testta表内容。
14:17:42 SQLSELECT * FROM testta;
执行后,部分显示结果如下:
ID NAME
---------- ----
1 aaaa
2 bbbb
3 cccc
结果显示说明,testta表中被删除的数据已经恢复。
2 闪回数据库的操作
闪回数据库就像数据库上的倒带按钮,可以把整个数据库回退到过去的某个时点状态,其最终结果就像执行了不完整恢复。因此,闪回数据库不但能恢复像以上例子中被删除表中的记录,也能恢复被删除的表、视图等数据库其他对象,还能恢复被删除了的用户等。但此种方法也有其局限性,一是恢复到过去某一时间点后,则数据库的全部内容都被恢复到当时时间点状态,如果只是误删除了某个表中的记录,而只想恢复该表的内容,则不宜采用闪回数据库的方法;二是采用闪回数据库的方法,必须要先关闭数据库。为了克服闪回数据库的缺陷,可采用以下闪回表(Flashback Table)的方法,恢复被删除的记录,操作如下:
创建测试表testtb,在表中插入3条新记录后,提交插入事务:
14:43:09 SQL CREATE TABLE testtb( id INT, name VARCHAR2(4));
14:43:20 SQL INSERT INTO testtb VALUES(1,’aaaa’);
14:43:20 SQL INSERT INTO testtb VALUES(2,’bbbb’);
14:43
文档评论(0)