ORACLE查询闪回
在Oracle中如果错误地提交了修改操作,然后想查看修改前的值,这时候可以使用查询闪回(query flashback)。
查询闪回可以根据根据一个时间值或者系统变更号(SCN)进行。
执行闪回操作,要使用户具有EXECUTE权限,下面以sys身份登录,并授权给store用户
一、时间查询闪回
用户store登录,查询customers表
select * from customers;
然后update customers set LAST_NAME=LAST_NAME || 's' ;
commit;
可以看到LAST_NAME被修改了,现在如何查看修改前的数据呢?
使用sqlplus store登录,执行如下语句,就可以查看修改之前LAST_NAME 没有加“s”
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命令:
通过下面语句可以闪回到这个SCN的状态
EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:CURRENT_SCN);
禁用闪回操作
EXECUTE DBMS_FLASHBACK.DISABLE();
最新文章
- Django 步骤
- 【BZOJ 1043】【HNOI 2008】下落的圆盘 判断圆相交+线段覆盖
- win7 64位安装oracle10g出现未知错误,程序异常终止解决方法
- hdu1358 KMP
- 不包含适合于入口点的静态";Main";方法
- pcap文件的文件头的link type
- ubuntu下修改时区
- 提升 composer 的执行速读
- 初来咋到先试试windows live writer
- 【转】Java中如何遍历Map对象的4种方法
- struts2中的action访问web对象
- 我是如何理解ThreadLocal
- UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作
- oracle dmp数据导入
- ASP.NETMVC 分页
- iOS-响应链(Responder Chain)
- python词云
- 半深入理解CSS3 object-position/object-fit属性
- springboot mybatis pagehelper 分页问题
- DevExpress WPF v18.2新版亮点(七)