当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:当数据库发生误删除等逻辑错误时,传统上只能通过执行不完全恢复来恢复数据,本文介绍了通过3种闪回技 术,提高效率恢复数据库逻辑错误的方法,并对3种闪回技术进行了分析比较。

引言

传统上,误删除了 Oracle数据库中的重要表或表中的记 录,提交(COMMIT)成功后,再想恢复被误删除的表格或 表格中的数据,那只能釆用数据库备份和恢复技术,其步骤为: 首先利用误删除前备份的全部数据文件和控制文件将数据库 还原到备份状态,再应用在线重做日志文件和归档日志文件, 将数据库恢复到误删除前的状态,即执行数据库的不完全恢 复,这样做不但需要数据库全备份,且操作复杂,耗费时间 较长,在恢复期间数据库还必需关闭,不能使用。从Oracle 9i开始,利用新提供的闪回功能,被误删除的表或表中的数 据恢复可以更加方便、快捷。Oracle闪回功能在10 g、11 g又 分别得到了加强。

1闪回技术的功能

为了演示闪回功能,先在sql*plus中执行以下语句,创建 测试表testta,表中插入3条新记录后,提交插入事务。

SQL>CREATE TABLE testta( id INT,name VARCHAR2(4));

SQL>INSERT INTO testta VALUES。,'aaaa'); SQL>INSERT INTO testta VALUES(2,'bbbb'); SQL>INSERT INTO testta VALUES。,'cccc'); SQL>COMMIT ;

再执行以下语句,设置显示当前时间:

SQL>SET TIME ON

删除testta表中全部3条记录:

14 : 11 : 29 SQL>DELETE testta ;

提交删除事务:

14 : 12 : 30 SQL>COMMIT ;

收稿日期:2014-01-08

14 : 12 : 34 SQL> SELECT * FROM testta ;

表testta中已没有记录。由于删除事务已提交成功,如想 恢复被删除的记录,传统的方法只能是执行数据库的不完全 恢复。现在釆用闪回数据库(Flashback Database)的方法恢 复删除数据,操作如下。

关闭数据库,将数据库设置到装载(mount)状态。

14 : 14 : 47 SQL>SHUTDOWN IMMEDIATE

14 : 15 : 04 SQL>STARTUP MOUNT

利用闪回数据库的方法,将数据库整体调整到删除数据 前的某一时间。

14 : 16 : 10 SQL>FLASHBACK DATABASE TO TIMESTAMP TO_DATE( '2013-12-23 14 : 11 : 27',,yyyy-mm-dd hh24 : mi: ss'); 使用RESETLOGS选项,打开数据库。

14 : 17 : 07 SQL>ALTER DATABASE OPEN RESETLOGS;

查询testta表内容。

14 : 17: 42 SQL>SELECT * FROM testta ;

执行后,部分显示结果如下:

ID NAME

aaaa

bbbb

cccc

结果显示说明,testta表中被删除的数据已经恢复。

2闪回数据库的操作

闪回数据库就像数据库上的倒带按钮,可以把整个数据 库回退到过去的某个时点状态,其最终结果就像执行了不完整恢复。因此,闪回数据库不但能恢复像以上例子中被删除表中的记录,也能恢复被删除的表、视图等数据库其他对象,还能恢复被删除了的用户等。但此种方法也有其局限性,一是恢复到过去某一时间点后,则数据库的全部内容都被恢复到当时时间点状态,如果只是误删除了某个表中的记录,而只想恢复该表的内容,则不宜采用闪回数据库的方法 ;二是采用闪回数据库的方法,必须要先关闭数据库。为了克服闪回数据库的缺陷,可采用以下闪回表(Flashback Table)的方法,恢复被删除的记录,操作如下:

创建测试表 testtb,在表中插入 3 条新记录后,提交插入事务 :

14 :43 :09 SQL> CREATE TABLE testtb( id INT,

name

VARCHAR2(4)) ;

1 4 :4 3 :2 0 S Q L > I N S E R T I N T O t e s t t b

VALUES(1,’aaaa’) ;

1 4 :4 3 :2 0 S Q L > I N S E R T I N T O t e s t t b

VALUES(2,’bbbb’) ;

1 4 :4 3 :2 0 S Q L > I N S E R T I N T O t e s t t b

VALUES(3,’cccc’) ;

14 :43 :20 SQL> COMMIT;

删除 testtb 表中全部 3 条记录 :

14 :44 :16 SQL>DELETE testtb ;

提交删除事务 :

14 :44 :26 SQL>COMMIT;

14 :44 :28 SQL> SELECT * FROM testtb ;

删除事务已提交成功,testtb 表中已没有记录。现采用闪回表的方法恢复删除数据。

闪回表的前提是启动被操作表的行移动(ROW MOVEMENT)特性。先启动表 testtb 的行移动特性 :

14 :44 :32 SQL> ALTER TABLE testtb ENABLE ROW

MOVEMENT;

利用闪回表的方法,将 testtb 表恢复到删除数据前的某一时间。

14 :45 :27 SQL> FLASHBACK TABLE testtb TO

TIMESTAMP TO_TIMESTAMP(‘

2013-12-23 14 :44 :

00’,

YYYY-MM-DD HH24 :MI :SS’) ;

查询 testtb 表内容 :

14 :45 :28 SQL>SELECT * FROM testtb ;

执行后,部分显示结果如下:

ID NAME

---------- ----

1 aaaa

2 bbbb

3 cccc

结果显示说明,testtb 表中被删除的数据已经恢复。

3 闪回表

闪回表能够恢复指定表中的记录内容,而不改变数据库其他对象的内容。但数据恢复中,闪回表必须启用被操作表的行移动特性,且只能进行闪回表的 DML 操作,不能进行闪回 DDL 操作。如果用户删除了(DROP)表,则不能采用闪回表的方法恢复,此时可以有采用上面介绍的闪回数据库的方法恢复整个数据库,也可以采用以下闪回删除(Flashback Drop)的方法,其操作如下:

创建测试表 testtc,表中插入 3 条新记录后,提交插入事务 :

16 :10 :43 SQL> CREATE TABLE testtc( id INT,

name

VARCHAR2(4)) ;

1 6 :1 0 :4 4 S Q L > I N S E R T I N T O t e s t t c

VALUES(1,’aaaa’) ;

1 6 :1 0 :4 4 S Q L > I N S E R T I N T O t e s t t c

VALUES(2,’bbbb’) ;

1 6 :1 0 :4 4 S Q L > I N S E R T I N T O t e s t t c

VALUES(3,’cccc’) ;

16 :10 :46 SQL>COMMIT;

删除 testtb 表 :

16 :11 :55 SQL> DROP TABLE testtc ;

从回收站中闪回删除的 testtc 表 :

16 :12 :34 SQL> FLASHBACK TABLE testtc TO

BEFORE DROP;

查询 testtc 表内容 :

16 :13 :19 SQL> SELECT * FROM testtc ;

执行后,部分显示结果如下:

ID NAME

---------- ----

1 aaaa

2 bbbb

3 cccc

结果显示说明,被删除 testtc 表已从回收站中恢复。

Oracle 在删除一个表时,并不立即丢弃它,而是把它放在回收站中,并保留尽可能长的时间。闪回删除能够像Windows 操作系统一样,将回收站中被删除的对象方便地恢复,但闪回删除只能恢复表、索引等对象,对于用户等对象,闪回删除无能为力。

通过以上验证可能看出,采用闪回技术,可以针对行级 和事务级发生过变化的数据进行恢复,缩短数据恢复的时间, 且操作简单,这样做大大提高了数据库恢复的效率。

4结语

最后,我们需要再说明以下几点:一是闪回技术具有强 大且简便的数据库恢复功能,是否就不需要再做数据库备份 和不完全恢复了呢?答案是否定的,因为当出现介质损坏时, 任何闪回方法都是毫无用处,此时,只能执行标准的备份、还 原与恢复过程;二是要实现各种闪回功能,必须要先对数据 库进行相应设置,如启动闪回数据库、启动数据库的“回收站”、 启动表的行移动等;三是除了以上介绍的3种闪回技术外,还要有闪回版本查询(Flashback Version Query)、闪回事务查询 (Flashback Transaction Query)、闪回查询(Flashback Query) 和闪回数据归档(Flashback Data Archive)等闪回方法。

20211120_6198f2c06decf__闪回技术在数据库误删除中的应用

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭