闪回技术之事物级闪回特别篇3

本文详细介绍了闪回表的概念、实现方式及其在数据库操作中的应用,包括如何通过DML语句进行闪回,设置闪回表参数,以及启用数据行移动特性以确保闪回操作的可行性。通过实例演示了在特定时间点恢复表数据的过程,突出了闪回表在数据保护和恢复中的重要性。

事物级别闪回
所谓闪回表就是将数据倒退到历史上的某个时间点,操作的语句是DML语句哈,千万要记到哈,DML操作的才叫事物级别的闪回。
闪回表利用UNDO表空间记录的数据旧映像,如果闪回表超过了und0_retention所指定的值,从而导致该undo数据库被其他事物覆盖,

就不能恢复到指定的位置了。

show parameter undo;  --查看闪回表的参数
NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------
undo_management                      string      AUTO
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS1
我这儿的设置3600秒哈,只是一个小时,我们可以在设置大一点点


启动实验

create table test(id number, name varchar2(20));


begin
for i in 1..100 loop
    insert into test values(i,'小牟');
end loop;
end;
/
循环插入1到100

commit;

SQL> select count(*) from test;

  COUNT(*)
----------
       100

delete from test where id<80;
commit;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2013-10-06 15:09:16
我们查看删除时候的时间大概是在15:07:00

使用闪回特性
flashback table test to timestamp to_date('2013-10-06 15:07:16','yyyy-mm-dd hh24:mi:ss');                *
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表
为什么报错呢,关键时刻来了
闪回表的操作会修改表里的数据,从而可能引起数据行的移动,比如某一行数据当前在A数据库里,而在表闪回到以前的某个时间点上

时,在那个时间点上该行数据位于B数据库里面,因此在闪回表之前需要启用数据行的移动特性。

alter table test enable row movement;

flashback table test to timestamp to_date('2013-10-06 15:07:16','yyyy-mm-dd hh24:mi:ss'); 我闪
SQL> select count(*)  from test;

  COUNT(*)
----------
       100
你看,事物级别的闪回成功

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值