ITPub博客

首页 > Linux操作系统 > Linux操作系统 > flashback详解

flashback详解

原创 Linux操作系统 作者:ziling2011 时间:2012-03-02 12:20:27 0 删除 编辑
1.flashback query:闪回指定时间点的记录
as of
versions
select * from t versions between scn 6133644154 and 6133644170
select * from t as of scn 6133644154;
select * from t AS OF TIMESTAMP TO_TIMESTAMP('2012-03-02 08:40:00','YYYY-MM-DD HH:MI:SS');
使用flash query可以进行insert,create table,create view等操作将数据写出
insert into t select * from t as of scn 6133644154 where name='ziling';
commit;
2.flashback table
flashback table从undo中通过一致读和回滚事务找回数据,闪回点(SCN,TIMESTAMP)依赖于undo_retention参数,默认是900秒。
需满足以下条件才能flashback table成功
1.表不能是系统表,数据字典表,远程表,CLUSTER表,objects表等
2.在闪回点与当前时间期间表结构不能更改
3.表需要能移动:ALTER TABLE t ENABLE ROW MOVEMENT
4.undo tablespace需有足够空间满足闪回到指定点,这与undo_retention参数有关

flashback table t to scn 6133644154;
flashback table t to TIMESTAMP TO_TIMESTAMP('2012-03-02 08:40:00','YYYY-MM-DD HH:MI:SS');
flashback table t to TIMESTAMP TO_TIMESTAMP('2012-03-02 08:40:00','YYYY-MM-DD HH:MI:SS') ENABLE TRIGGERS;
3.flashback drop- recycle bin
flashback drop是从recycle bin中找回数据,表drop后其依赖的对象如trigger,index等都在recycle bin中,只是名字与以前不一样了,从recyclebin表中可以找到,再rename回去就OK了。
语句:flashback table tablename to before drop;
luoluo@ZILING> select * from tvalue;
NAME
------------------------------

ziling
luoluo
luoluo@ZILING> select index_name from user_indexes where table_name='TVALUE';
INDEX_NAME
------------------------------------------------------------
IDX_TVALUE_NAME
luoluo@ZILING> drop table tvalue;
表已删除。
luoluo@ZILING> flashback table tvalue to before drop;
闪回完成。
luoluo@ZILING> select index_name from user_indexes where table_name='TVALUE';
INDEX_NAME
------------------------------------------------------------
BIN$RZ9m2puEQBCSCCyDbiKsKw==$0
luoluo@ZILING> alter index "BIN$RZ9m2puEQBCSCCyDbiKsKw==$0" rename to idx_tvalue_name;
索引已更改。
luoluo@ZILING> select * from tvalue;
NAME
------------------------------

ziling
luoluo
luoluo@ZILING> select index_name from user_indexes where table_name='TVALUE';
INDEX_NAME
------------------------------------------------------------
IDX_TVALUE_NAME
4.flashback database
flashback database:库级别恢复,数据库要开归档。别Flash Recovery Area:
db_flashback_retention_target
sys@ZILING> alter database flashback on;
sys@ZILING> create restore point before_drop guarantee flashback database;
已用时间:  00: 00: 00.15
sys@ZILING> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
sys@ZILING> startup mount
ORACLE 例程已经启动。
Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             306184656 bytes
Database Buffers          222298112 bytes
Redo Buffers                5804032 bytes
数据库装载完毕。
RMAN> flashback database to restore point before_drop;
启动 flashback 于 02-3月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=135 设备类型=DISK

正在开始介质的恢复
介质恢复完成, 用时: 00:00:07
完成 flashback 于 02-3月 -12
sys@ZILING> alter database open read only;
shutdown immediate
startup mount
sys@ZILING> alter database open resetlogs;
使用时间闪回数据库
MAN> flashback database to time "TO_DATE('2012-03-02 11:28:00','YYYY-MM-DD HH:MI:SS')";
启动 flashback 于 02-3月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=133 设备类型=DISK

正在开始介质的恢复
线程 1 序列 331 的归档日志已作为文件 D:\APP\YICHUNMEI\FLASH_RECOVERY_AREA\ZILING\ARCHIVELOG\2012_03_02\O1_MF_1_331_7O0HLFBT_.ARC
存在于磁盘上
介质恢复完成, 用时: 00:00:03
完成 flashback 于 02-3月 -12
也可以使用SCN号
RMAN> flashback database to scn 6133754463;
启动 flashback 于 02-3月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=135 设备类型=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: flashback 命令 (在 03/02/2012 11:31:49 上) 失败
RMAN-06796: 执行 FLASHBACK 的闪回数据库日志数据不足。

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

请登录后发表评论 登录
全部评论

注册时间:2011-07-18

  • 博文量
    52
  • 访问量
    112137