闪回数据库(基础实例讲解)

一、
查看闪回数据库功能是否开启
SQL> select flashback_on from v$database;
闪回数据库实例:
1、
查询当前的时间
SQL> select to_char(sysdate,'yy-mm-dd hh24:mi:ss') time from dual;
TIME
-----------------
13-05-30 01:02:40
2、
创建一张表,并插入数据,然后查询当前的时间
SQL> create table t (id int);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> commit;
Commit complete.
SQL>  select to_char(sysdate,'yy-mm-dd hh24:mi:ss') time from dual;
TIME
-----------------
13-05-30 01:04:23
3、
发生checkpoint和switchlog
SQL> alter system checkpoint;
System altered.
SQL> alter system switch logfile;
System altered.
4、
关闭数据库然后打开数据库到mount状态:
shutdown immediate
startup mount
5、
闪回数据库到创建表之前的状态
SQL> flashback database to timestamp to_timestamp('13-05-30 01:02:40','yy-mm-dd hh24:mi:ss');
Flashback complete.
6、
闪回之后,打开数据库用resetlogs的方式
SQL> alter database open resetlogs;
Database altered.
7、打开数据库,查询表t是否存在(不存在的话就对了)
SQL> select * from t;
select * from t
              *
ERROR at line 1:
ORA-00942: table or view does not exist
警告:
闪回数据库需要注意的问题:
1、必须在归档模式下
2、必须在mount状态下闪回数据库
3、必须以resetlog的方式打开
4、闪回数据库日志默认放在闪回恢复区
5、如果闪回恢复区满了,那么数据库就会hang住
 

二、
闪回数据库,用SCN的方法
1、
查询当前的系统改变号(两种方法)
方法一:
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     678771
方法二:
select timestamp_to_scn(sysdate)  from dual;
TIMESTAMP_TO_SCN(SYSDATE)
-------------------------
                   678772
2、
查询表中的数据
SQL> select * from t;
        ID
----------
         1
删除表中的数据
delete from t;
1 row deleted.
然后查询当前的scn
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     679055
3、
在mount状态下去闪回数据库
SQL> flashback database to scn 678799;
Flashback complete.
4、
打开数据库,并查询表中的数据是否存在
SQL> alter database open resetlogs;
Database altered.
SQL> select * from t;
        ID
----------
         1
注意:
之间不能有ddl操作
 

三、
闪回数据库,模拟闪回日志丢失
1、
关闭数据库
shutdown immediate
2、
切到闪回恢复区
cd /u01/app/oracle/flash_recovery_area/ORCL/
干掉所有的闪回日志
rm -rf *
3、
启动数据库到mount
SQL> startup mountORACLE instance started.
Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size             113247632 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
Database mounted.
打开数据库(发现出错了)
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-38760: This database instance failed to turn on flashback database
4、
解决办法:
先关闭闪回数据库功能
SQL> alter database flashback off;
Database altered.
5、
打开数据库
SQL> alter database open;
Database altered.
6、
查看闪回数据库是否开启
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29107230/viewspace-769175/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29107230/viewspace-769175/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值