闪回表+查看和修改撤销表空间的信息+闪回表操作语法+闪回表的案例

来源:互联网 发布:python 字符转数字 编辑:程序博客网 时间:2024/06/06 05:38

闪回表( flashback table)
1将表回滚到一个过去的时间点或系统改变号scn上,用来快速恢复表的数据。
2用户对表数据的修改操作,都记录在撤销表空间中
3需要使用到与撤销表空间相关的undo信息。通过show parameeter undo命令可以了解这些信息。

查看和修改撤销表空间的信息

 show parameter undo; alter system set undo_retention=1500 scope=both; show parameter undo;

这里写图片描述

闪回表操作语法
flashback table 【 schema.】 table_name
to {【before drop 【rename to new_table_name】 】|【scn | timestamp 】】
expr 【enable | disable 】 triggers}:

参数说明:
schema:用户模式
before drop:表示恢复到删除之前。
new_table_name :重新定义表名称。
timestamp:时间戳,包括年月日时分秒。
expr:指定一个值或表达式。
enable triggers:触发器恢复后,呈启用状态。
disable triggers:触发器恢复后,呈禁用状态。默认情况下为此选项

闪回表的案例
测试数据

create table sct(id number(4),name varchar2(20));insert into sct values(1,'lili');insert into sct values(2,'lilic');commit;

步骤
1获取数据没有删除前的时间

SQL>  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY-------------------2017-06-06 17:55:08

2删除数据,提交

SQL>SQL> delete from sct where id=1;已删除 1 行。SQL> delete from sct where id=2;已删除 1 行。SQL> commit;

3开启表的移动功能

SQL>  --开启表的移动功能SQL>  alter table   sct enable row movement;表已更改。

4 恢复数据
4.1通过时间点恢复数据

flashback table   sctto  timestamp to_timestamp('2017-06-06 17:55:08','yyyy-mm-dd hh24:mi:ss');select * from sct;

这里写图片描述

4.2通过系统改变号恢复数据

select timestamp_to_scn(to_date(‘2017-06-06 17:55:08’,’yyyy-mm-dd hh24:mi:ss’)) from dual;
delete from sct where id=1;
delete from sct where id=2;
commit;
flashback table sct to scn 6892471;

这里写图片描述

阅读全文
0 0