在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();

最新文章

  1. Django 步骤
  2. 【BZOJ 1043】【HNOI 2008】下落的圆盘 判断圆相交+线段覆盖
  3. win7 64位安装oracle10g出现未知错误,程序异常终止解决方法
  4. hdu1358 KMP
  5. 不包含适合于入口点的静态"Main"方法
  6. pcap文件的文件头的link type
  7. ubuntu下修改时区
  8. 提升 composer 的执行速读
  9. 初来咋到先试试windows live writer
  10. 【转】Java中如何遍历Map对象的4种方法
  11. struts2中的action访问web对象
  12. 我是如何理解ThreadLocal
  13. UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作
  14. oracle dmp数据导入
  15. ASP.NETMVC 分页
  16. iOS-响应链(Responder Chain)
  17. python词云
  18. 半深入理解CSS3 object-position/object-fit属性
  19. springboot mybatis pagehelper 分页问题
  20. DevExpress WPF v18.2新版亮点(七)

热门文章

  1. WPF Menu控件自定义Style
  2. WPF黑色背景下常用控件样式
  3. Npgsql使用入门(三)【批量导入数据】
  4. 单元测试之Mock
  5. 离线安装ADT和sdk
  6. form表单提交三种方式,demo实例详解
  7. Visual Studio 2015中 安卓环境 cannot find adb.exe in specified sdk path
  8. spring cloud(二) zuul
  9. atom安装与插件配置
  10. Co-prime HDU - 4135_容斥计数