使用FLASHBACK,必须将初始化参数undo_management设置为AUTO,合理设置初始化参数undo_retention。
*****使用FLASHBACK查询实现行级恢复*****
SQL> select * from a;
A B
---------- ----------
1 2000
2 2000
SQL> select * from a as of timestamp
to_timestamp('2010-08-26 14:45:00','yyyy-mm-ff hh24:mi:ss') ;
A B
---------- ----------
1 1
2 3
SQL>
SQL> select * from a as of scn 1295000 ;
A B
---------- ----------
1 1
2 3
SQL>
1、模拟用户误操作
SQL> ho date
当前日期: 2010/08/26
输入新日期: (年月日)
SQL> ho time
当前时间: 14:59:45.31
输入新时间:
SQL> delete from a ;
已删除2行。
SQL> commit;
提交完成。
SQL>
2、使用FLASHBACK查询取得早期时间点表行数据
SQL> select * from a as of timestamp
to_timestamp('2010-08-26 14:59:00','yyyy-mm-ff hh24:mi:ss') ;
A B
---------- ----------
1 1
2 3
3、使用FLASHBACK查询恢复表行数据
SQL> insert into a select * from a as of timestamp
to_timestamp('2010-08-26 14:59:00','yyyy-mm-ff hh24:mi:ss') ;
已创建2行。
SQL> commit;
*****使用FLASHBACK恢复表到先前状态*****
1、激活行移动特征
SQL> alter table a enable row movement;
2、模拟用户DML操作
SQL> select * from b ;
A B
---------- ----------
1 1
2 3
SQL> update a set b=b*11 ;
已更新2行。
SQL> select * from a ;
A B
---------- ----------
1 11
2 33
3、使用FLASHBACK TABLE 恢复表数据到先前时间点
SQL> flashback table a to timestamp
2 to_timestamp('2010-08-26 15:39:00','yyyy-mm-dd hh24:mi:ss');
闪回完成。
SQL> select * from a ;
A B
---------- ----------
1 1
2 3
*****使用FLASHBACK TABLE恢复被删除表*****
1、显示当前用户的回收站对像
SQL> show recyclebin ;
select * from recyclebin;
2、显示数据库的所有回收站对像
select * from dba_recyclebin;
3、清除回收站对像
SQL>purge table a; 清除表及对像
SQL>purge BIN$jeaHohcCQ4+lFiKEzq/Y4g==$0 ;
purge index idx_a_id; 清除索引
purge tablespace user01; 清除特定对像表空间的所有对像
purge tablespace users user scott;
purge recyclebin 清除当前用户回收站的所有对像
purge dba_recyclebin; 清除数据库的所有回收站对像
*****恢复被删除表*****
1、模拟用户误操作
drop table a;
2、显示回收站对像
SQL> show recyclebin
3、恢复被删除表
SQL> flashback table a to before drop ;
闪回完成。
SQL> flashback table a to before drop rename to b ; 通过rename to 改变删除表的名称
闪回完成。
*****使用FLASHBACK DATABASE恢复数据库到先前状态*****
1、配置数据支持
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145750508 bytes
Database Buffers 25165824 bytes
Redo Buffers 262144 bytes
数据库装载完毕。
SQL> alter database flashback on;
数据库已更改。
SQL> alter system set db_flashback_retention_target=3600;
系统已更改。
SQL> alter database open ;
数据库已更改。
注意:如果禁止特定表空间的FLASHACK特征,执行 alter tablespace test1 flashbacj off;
2、模拟用户误操作
SQL> select current_scn from v$database ;
SQL> drop table scott.emp;
3、确定FLASHBACK DATABASE可以恢复到的最早SCN值或时间
SQL> select * from v$flashback_database_log;
4、使用FLASHBACK DATABASE命令恢复数据库到先前状态
(1)、在SQL*PLUS中使用FLASHBACK DATABASE命令
SQL>shutdown immediate
SQL>startup mount
SQL> flashback database to scn 1306023 ;
SQL> alter database open resetlogs ;
(2)、在RMAN中使用FLASHBACK DATABASE命令
c:\set nls_date_format=yyyy-mm-dd hh24:mi:ss
c:\rman nocatalog
RMAN>shutdown immediate
RMAN>startup mount
RMAN>flashback database to time '2010-08-27 10:52:02';
RMAN>alter database open resetlogs;
阅读(879) | 评论(0) | 转发(0) |