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;
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从undo中通过一致读和回滚事务找回数据,闪回点(SCN,TIMESTAMP)依赖于undo_retention参数,默认是900秒。
需满足以下条件才能flashback table成功
1.表不能是系统表,数据字典表,远程表,CLUSTER表,objects表等
2.在闪回点与当前时间期间表结构不能更改
3.表需要能移动:ALTER TABLE t ENABLE ROW MOVEMENT
4.undo tablespace需有足够空间满足闪回到指定点,这与undo_retention参数有关
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;
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
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 例程已经启动。
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
数据库装载完毕。
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
使用目标数据库控制文件替代恢复目录
分配的通道: 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;
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')";
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
使用目标数据库控制文件替代恢复目录
分配的通道: 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
存在于磁盘上
介质恢复完成, 用时: 00:00:03
完成 flashback 于 02-3月 -12
也可以使用SCN号
RMAN> flashback database to scn 6133754463;
RMAN> flashback database to scn 6133754463;
启动 flashback 于 02-3月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=135 设备类型=DISK
使用目标数据库控制文件替代恢复目录
分配的通道: 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 的闪回数据库日志数据不足。
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25989950/viewspace-717507/