闪回种类及其使用资源:
闪回查询(UNDO)。
闪回删除(UNDO)。
闪回数据(UNDO)。
闪回版本查询(UNDO)。
闪回事物(UNDO)。
闪回数据库(闪回日志)。
一,闪回查询:基于SCN或者timestamp,查询当时的数据状态。
模拟步骤。
–alter system set undo_retention = 1800;
–alter tablespace undotbs1 retention guarantee;
–delete from tbl1;
–Commit;
–insert into tbl1 values(100);
–select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;
记录时间
–Delete from tbl1;
–Commit;
–select * from tbl1 as of timestamp to_timestamp(‘记录时间',
'yyyy-mm-dd hh24:mi:ss');
'yyyy-mm-dd hh24:mi:ss');
二,闪回删除:闪回drop
之后的表。注意sys用户不支持。
–create table test_drop(id number);
insert into test_drop values(100);
select * from test_drop;
drop table test_drop;
flashback table test_drop to before drop;
select * from test_drop;
insert into test_drop values(100);
select * from test_drop;
drop table test_drop;
flashback table test_drop to before drop;
select * from test_drop;
闪回顺序:
–create table t(id number);
–insert into t values(100);
–drop table t;
–create table t(id number);
–insert into t values(200);
–drop table t;
–create table t(id number);
–insert into t values(300);
–drop table t;
flashback table t to before drop;
三,闪回数据:
•00:38:20 SQL> create table t(id number);
•00:38:26 SQL> insert into t values(100);
•00:38:32 SQL> insert into t values(200);
•00:38:36 SQL> commit;
•00:38:39 SQL>
•00:38:39 SQL> insert into t values(300);
•00:38:46 SQL> commit;
•00:38:47 SQL> delete from t;
•00:38:57 SQL> commit;
第一次闪回
•00:40:01 SQL> alter table t enable row movement;
•00:38:59 SQL> flashback table t to timestamp
to_timestamp('2012-03-15 00:38:38','yyyy-mm-dd hh24:mi:ss')
•flashback table t as of timestamp to_timestamp('2012-03-15 00:38:38','yyyy-mm-dd hh24:mi:ss')
•00:40:38 SQL> select * from t;
第二次闪回
•00:40:42 SQL> flashback table t to timestamp
to_timestamp('2012-03-15 00:38:47','yyyy-mm-dd hh24:mi:ss');
•00:41:30 SQL> select * from t;
四,闪回版本查询:
–Create table T(id number);
–Insert into t values(100);
–Insert into t values(200);
–Update t set id=300 where id=100;
–Update t set id=400 where id=200;
–Update t set id=500 where id=300;
–Update t set id=600 where id=400;
–select versions_startscn,
versions_endscn,
versions_xid,
versions_operation,
id
from t
versions between scn(timestamp)minvalue and maxvalue;
versions_endscn,
versions_xid,
versions_operation,
id
from t
versions between scn(timestamp)minvalue and maxvalue;
五,闪回事务:
•select * from flashback_transaction_query wheretable_name='T‘;
•Commit_scn=versions_endscn;
六,数据库闪回:
把数据库回滚到过去的时间点,在没有闪回技术之前,大多数情况我们通过的是不完全恢复的方法,遵循恢复和还原的步骤执行的,之后再用resetlogs 打开数据库,这时候
DBA应该对数据库做全库冷备比较安全。补充一点:恢复过程中会用到日志(online的或者archive log)这里面记录的是数据库里面的变化。而闪回技术用的不是常规的
日志,是闪回日志,这里面记录的是数据库变化的逆操作。相当于UNDO里面的内容。但是闪回之后的数据库依然需要resetlogs才能打开。
七,相关语句:
•FLASHBACK DATABASE TO TIMESTAMP(SYSDATE-1/24);
•FLASHBACK DATABASE TO SCN 53943;
•相关参数:
•db_recovery_file_dest:闪回区位置。
•db_recovery_file_dest_size:闪回区大小。
•相关查询:
•SELECT estimated_flashback_size,flashback_size FROM V$FLASHBACK_DATABASE_LOG;查看闪回日志大小,决定是否需要增加闪回区。
•SELECT oldest_flashback_scn, oldest_flashback_time FROM V$FLASHBACK_DATABASE_LOG;查看最早能闪回到哪个SCN。
•select * from v$flashback_database_stat;查询一段时间内的信息。
select * from v$flash_recovery_area_usage;查询闪回去使用情况