ORACLE查询闪回

在Oracle中如果错误地提交了修改操作,然后想查看修改前的值,这时候可以使用查询闪回(query flashback)。

查询闪回可以根据根据一个时间值或者系统变更号(SCN)进行。

执行闪回操作,要使用户具有EXECUTE权限,下面以sys身份登录,并授权给store用户

2011021522425096.jpg

一、时间查询闪回

用户store登录,查询customers表

select * from customers;

2011021522522637.jpg

然后update customers set LAST_NAME=LAST_NAME || 's' ;

commit;

2011021522541881.jpg

可以看到LAST_NAME被修改了,现在如何查看修改前的数据呢?

使用sqlplus store登录,执行如下语句,就可以查看修改之前LAST_NAME 没有加“s”

2011021522573535.jpg

DBMS_FLASHBACK.ENABLE_AT_TIME() 该过程将数据库状态闪回到一个特定的时间值。

DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE-10/1440 ) 也就是闪存到10分钟之前。

现在执行任何查询就将显示10分钟之前的状态。但是在pl/sql中查询的话  还是现在现在的状态。

所以可以从这里查看之前数据,然后在pl/sql修改回原来的值。

禁用闪回 EXECUTE DBMS_FLASHBACK.DISABLE();

这些命令只能在sqlplus 中使用,在pl/sql中不能使用。

二、系统变更号查询闪回

根据SCN进行闪回操作比根据时间进行要更精确,因为数据库就是使用SCN来跟踪数据库的变化。

获得当前SCN命令:

2011021523170858.jpg

通过下面语句可以闪回到这个SCN的状态

EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:CURRENT_SCN);

禁用闪回操作

EXECUTE DBMS_FLASHBACK.DISABLE();

转载于:https://www.cnblogs.com/jackal/archive/2011/02/15/1955649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值