Oracle 11g学习笔记--查询闪回

Oracle 11g学习笔记–查询闪回

如果错误的提交了修改操作,并想查看被修改行原来的值,可以使用查询闪回。然后如果需要,就可以使用查询闪回的结果将这些行手工改回原来的值;

另外,查询闪回可根据一个时间值或系统变更号(scn)进行;数据库使用scn来跟踪对数据进行的修改,因此可以使用它来回闪到数据库中一个特定的scn时的状态;

使用场景:

你可能在某一时间点对某一个表执行了操作,此时如果你想回去查看执行操作之前的数据,你便可以使用闪回操作;

首先,授权,然后指定要闪回的时间点,然后就可以开始查询数据,此时查询的数据都是你在那个时间点以前操作的数据,时间点以后的更新并不会显示;(注意,在这个时间段,只能进行查询操作。)

使用结束后,便可禁用闪回操作,在操作数据库,就是对最新的数据操作了;

1.使用闪回的特权

--以sys身份连接到数据库
connect sys/change_on_install as sysdba
--将对dbms_flashback包的execute权限授予给user_name用户;
grant execute on sys.dbms_flashback to user_name;

2.时间闪回查询

●闪回到十分钟之前

execute dbms_flashback_at_time(sysdate - 10 / 1440);

注意:此处的日期是以天为单位的,而一天有1440分钟,所以会有如上写法;

●禁用闪回操作

execute dbms_flashback.disable();

3.系统变更号查询闪回
因为数据库是根据scn来跟踪对数据所做的变化的,要获取当前的scn,可以执行dbms_flashback.get_system_change_number();

●查询当前变更号

--定义变量
variable current_scn number
--查询scn并赋值给变量
execute: current_scn := dbms_flashback.get_system_change_number();
--输出变量
print current_scn;

●闪回到一个scn的状态

execute dbms_flashback.enable_at_system_change_number(:current_scn);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值