闪回表专题
1、闪回表的前提
--------需要支持行移动特性
由于闪回表的操作会修改表里的数据,从而有可能引起数据行的迁移。比如某一行数据当前在A数据块里,
而在把表闪回到以前某个时间点时,在那个时间点上,该行数据位于B数据块里。于是在闪回表的操作中,
数据行从当前的A数据块转移到了B数据块,因此在闪回表之前,必须开启数据行的移动特性。
SQL>alter table table_name enable row movement;
取消行移动特性:
SQL>alter table table_name disable row movement;
--------用户需要具有闪回表的权限
SYS>grant execute on dbms_flashback to 用户名;
------------------
为了实验方便而赋予用户的权限
SYS>grant select on v_$database to 用户名;
检查行移动特性是否打开:
SQL>select row_movement from user_tables where table_name='TBNAME';
2、无法闪回表的情况(闪回表不可跨越DDL操作,系统表无法闪回)
在闪回表的操作中,假设当前时间点为B点,需要将表T闪回到历史上的A点。则这时需要注意,如果从A点到B点
这段时间里,对表T进行了任何的DDL操作,则闪回表的操作失败。同时,系统表不能进行闪回操作。
3、闪回表的语句
SQL>flashback table table_name to timestamp to_date('2012-12-24 21:08:26','yyyy-mm-dd hh24:mi:ss');
1、闪回表的前提
--------需要支持行移动特性
由于闪回表的操作会修改表里的数据,从而有可能引起数据行的迁移。比如某一行数据当前在A数据块里,
而在把表闪回到以前某个时间点时,在那个时间点上,该行数据位于B数据块里。于是在闪回表的操作中,
数据行从当前的A数据块转移到了B数据块,因此在闪回表之前,必须开启数据行的移动特性。
SQL>alter table table_name enable row movement;
取消行移动特性:
SQL>alter table table_name disable row movement;
--------用户需要具有闪回表的权限
SYS>grant execute on dbms_flashback to 用户名;
------------------
为了实验方便而赋予用户的权限
SYS>grant select on v_$database to 用户名;
检查行移动特性是否打开:
SQL>select row_movement from user_tables where table_name='TBNAME';
2、无法闪回表的情况(闪回表不可跨越DDL操作,系统表无法闪回)
在闪回表的操作中,假设当前时间点为B点,需要将表T闪回到历史上的A点。则这时需要注意,如果从A点到B点
这段时间里,对表T进行了任何的DDL操作,则闪回表的操作失败。同时,系统表不能进行闪回操作。
3、闪回表的语句
SQL>flashback table table_name to timestamp to_date('2012-12-24 21:08:26','yyyy-mm-dd hh24:mi:ss');