oracle 闪回技术 flashback

Flashback有四种类型:flashback databaseflashback queryflashback drop 和 flashback vesion

 

闪回区的管理:

  如果没有规定闪回区,闪回区放在db_recovery_file_dest里面,当然db_recovery_file_dest里面不仅仅是存放闪回数据文件,他还存放flashback的使用目录,rman、归档日志等。关于此区域的备份oracle提供了两条特殊的命令:

    1backup recovery area

      用来备份db_recovery_dest目录里面的文件;

    2backup recovery files

      扩展第一个命令,可以用来备份全的的恢复文件

    3、将某个表空间的闪回功能失效:

      SQL> alter tablespace tablespace_name flashback off;

 

Flashback database

  配置flashback database

  Flashback只能恢复逻辑错误,不能恢复物理错误。

    1、启用archivelog模式,flashback database 只能处于归档模式。

      SQL> shutdowm immediate;

      SQL> alter database mount;

      SQL>alter database archivelog on;

    2、建立闪回区

      SQL> alter system set db_recovery_file_dest='/u01/pracle/flashback_area';

      SQL> alter system set db_recovery_file_size=3G;

    3、设置闪回数据库的生存周期为一天,以分钟为单位

      SQL> alter system set db_flashback_retention_target=1440;

    4、启用闪回日志

      SQL> shutdowm immediate;

      SQL> alter database mount;

      SQL>alter database aflashback on;

    5、查询是否成功启用flashback databse

      SQL> select flashback_on from V$database;

 

闪回数据库使用后必须使用resetlogs来重新打开数据库。

 

Flashback table (必须启用row movement)

  闪回表空间用例:

    1、创建一个表空间做测试用:

      SQL>  create tablespace pioncare_test datafile '+DATA/prod/datafile/pioncare_test.dbf' size 10m;

      SQL>  create table pioncare_test tablespace pioncare_test as select * from all_user;

    2、删除表空间pioncare_test

      SQL>  alter session set nls_data_format='yyyy-mm-dd hh24:mi:ss'

      SQL>  select sysdata from dual;

      SQL>  drop tablespace pioncare_test including contents and datafiles;

    3、执行闪回表空间

      SQL>  startup force mount

      SQL>  flashback database to timestamp to_timestamp('2011-11-14 10:22:32', 'yyyy-mm-dd hh24:mi:ss');

    4、创建恢复数据文件

      SQL> alter database create datafile 6 as '+DATA/prod/datafile/pioncare_test.dbf' size 10m;

      SQL> alter database datafile 6 online;

    5、完成闪回数据表空间

      SQL> alter database open resetlogs;

 

Flashback database闪回表的错误事物

    1、创建一张表pioncare_test1用来模拟闪回结果

      SQL>  create table pioncare_test1 tablespace pioncare_test as select * from all_user;

      SQL>  select count(*) from pioncare_test1

    2、分部删除这张表的数据,并记录每次删除的系统时间。

      SQL>  alter session set nls_data_format='yyyy-mm-dd hh24:mi:ss'

      SQL>  select sysdata from dual;

      SQL>  delete from pioncare_test1 where rownum<=10;

      SQL>  commit;

      SQL>  select count(*) from pioncare_test1;

    再执行另外一个删除动作:

      SQL>  select sysdata from dual;

      SQL>  delete from pioncare_test1 ;

      SQL>  commit

      SQL>  select count(*) from pioncare_test1;

    3、现在我们想闪回到第二删除动作之前标的状态,即第一删除是正确的,第二次删除是错误的;

      SQL>  startup froce mount;

      SQL>  alter session set nls_data_format='yyyy-mm-dd hh24:mi:ss';

      SQL> flashback database to timestamp to_timestamp('2011-11-14 10:22:32', 'yyyy-mm-dd hh24:mi:ss');

      SQL>  alter database open read only;

      SQL>  selece count(*) from fb_test;

      SQL>  startup force mount;

      SQL>  alter database open resetlogs;

 

 

Flashback drop

  Flashback drop不需要配置,默认已经启用,由于oracle10g里面delete不是真正的删除而是重命名,

    1、使用drop table删除的表,可以在回收站中查询到

      SQL>  select object_name,original_name,type from user_recyclebin;

    2、恢复drop table删除的表(表放在回收站中会以BIN$开头)

      SQL>  flashback table "BIN$*******" to before drop;

    3、注意:flashback drop闪回的表命名还是没有修改过来需要重新rename修改;

 

  如果想真正的删除表可以使用 purge选项:

    SQL>  drop table table_name purge;

    SQL>  purge table table_name

 

Flashback query

  闪回查询:

      SQL>  select * from table_name as of timestamp to_timestamp('2011-11-14 11:12:22',' yyyy-mm-dd  hh24:mi:ss')

  开启记录转移:

      SQL>  alter table table_name enable row movement;

  闪回表:

      SQL>  flashback table table_name to timestamp to_timestamp('2011-11-14 11:12:22',' yyyy-mm-dd  hh24:mi:ss')

 

Flashback versions query

      SQL>  select col,version_startime from hek_prod versions between scn minvalue and maxvalue;

 

Flashback transaction query

转载于:https://www.cnblogs.com/rhino1030/archive/2011/11/14/2248114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值