1. 首页
  2. IT资讯

【Flashback】Flashback Database闪回数据库功能实践

Flashback Database闪回数据库功能极大的降低了由于用户错误导致的数据丢失的恢复成本。这是一种以空间换取缩短恢复时间的解决方案,这是值得的。 这里给出闪回数据库的使用方法,体验一下这种恢复操作的便利性。1.使用Flashback Database的前提条件1)启用了flashback database2)必须打开flash recovery area,若为RAC,flash recovery area必须位于共享存储中。3)必须处于archivelog模式,开启FORCE LOGGIN2.一一确认上面的前提条件是否满足1)验证是否启用了flashback database并确认FORCE LOGGIN是否开启SYS@ora11g> select flashback_on,force_logging from v$database;FLASHBACK_ON FOR—————— —YES NO若flashback_on为“NO”,修改方法见《【Flashback】启用Flashback Database闪回数据库功能》(http://space.itpub.net/519536/viewspace-590636)若force_logging为“NO”,请使如下SQL语句开启。SYS@ora11g> alter database force logging;Database altered.SYS@ora11g> select flashback_on,force_logging from v$database;FLASHBACK_ON FOR—————— —YES YES2)验证是否开启flash recovery area此步骤在启用闪回数据库功能时已经确认过。SYS@ora11g> show parameter db_recovery_fileNAME TYPE VALUE————————— ———– ——————————db_recovery_file_dest string /u01/app/oracle/flash_recovery _areadb_recovery_file_dest_size big integer 3852M3)数据库是否处于archivelog模式SYS@ora11g> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 11Next log sequence to archive 13Current log sequence 133.确认数据库可以前滚到的SCN和Time的方法如果需要恢复的数据点比这个时间还要早的话,很不幸,闪回数据库功能将无能为力。SYS@ora11g> alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;Session altered.SYS@ora11g> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI——————– ——————- 1033529 2012-04-02 03:36:404.闪回数据库功能闪亮登场1)创建测试表fd_1、fd_2和fd_3SYS@ora11g> create table fd_1 as select * from dba_objects;Table created.SYS@ora11g> create table fd_2 as select * from fd_1;Table created.SYS@ora11g> create table fd_3 as select * from fd_1;Table created.SYS@ora11g> select count(*) from fd_1; COUNT(*)———- 72465SYS@ora11g> select count(*) from fd_2; COUNT(*)———- 72465SYS@ora11g> select count(*) from fd_3; COUNT(*)———- 72465SYS@ora11g> set time on21:59:40 SYS@ora11g> select sysdate from dual;SYSDATE——————-2012-04-07 21:59:442)truncate表fd_2、drop掉表fd_321:59:44 SYS@ora11g> truncate table fd_2;Table truncated.22:00:06 SYS@ora11g> drop table fd_3;Table dropped.3)使用Flashback Database功能进行恢复到删除前的时间点2012-04-07 21:59:4422:00:17 SYS@ora11g> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.22:02:04 SYS@ora11g> startup mount exclusive;ORACLE instance started.Total System Global Area 313860096 bytesFixed Size 1336232 bytesVariable Size 247467096 bytesDatabase Buffers 58720256 bytesRedo Buffers 6336512 bytesDatabase mounted.22:02:52 SYS@ora11g> Flashback Database to timestamp(to_date(‘2012-04-07 21:59:44′,’yyyy-mm-dd hh24:mi:ss’));Flashback complete.4)闪回后修复数据库两种方式之一:open read only推荐使用这样的方法进行恢复,因为在read only方式打开之后,将需要恢复的表EXP导出,然后通过recover database将数据库恢复到原状态,再将缺失的数据IMP到数据库中。这样操作对数据库的影响可以降低到最小,可以保证其他表没有数据的丢失。read only打开后查看三张表的状态:22:03:57 SYS@ora11g> alter database open read only;Database altered.22:04:33 SYS@ora11g> select count(*) from fd_1; COUNT(*)———- 7246522:04:37 SYS@ora11g> select count(*) from fd_2; COUNT(*)———- 7246522:04:40 SYS@ora11g> select count(*) from fd_3; COUNT(*)———- 72465取消闪回结果,恢复到闪回前状态的方法:22:04:43 SYS@ora11g> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.22:05:09 SYS@ora11g> startup mount;ORACLE instance started.Total System Global Area 313860096 bytesFixed Size 1336232 bytesVariable Size 247467096 bytesDatabase Buffers 58720256 bytesRedo Buffers 6336512 bytesDatabase mounted.22:06:08 SYS@ora11g> recover database;Media recovery complete.22:06:18 SYS@ora11g> alter database open;Database altered.22:06:41 SYS@ora11g> select count(*) from fd_1; COUNT(*)———- 7246522:06:55 SYS@ora11g> select count(*) from fd_2; COUNT(*)———- 022:06:59 SYS@ora11g> select count(*) from fd_3;select count(*) from fd_3 *ERROR at line 1:ORA-00942: table or view does not exist可见,通过上面的recover后,数据库恢复到了闪回前的状态。5)闪回后修复数据库两种方式之二:open resetlogs通过open resetlogs方式打开数据库后,很显然,闪回到时间点之后的数据将全部丢失,慎用!SYS@ora11g> alter database open resetlogs;SYS@ora11g> select count(*) from fd_1; COUNT(*)———- 72465SYS@ora11g> select count(*) from fd_2; COUNT(*)———- 72465SYS@ora11g> select count(*) from fd_3; COUNT(*)———- 724655.小结 这里对Flashback Database闪回数据库的语法进行总结。闪回数据库可以在SQL*Plus环境和RMAN环境下使用。 基于时间戳进行闪回数据库操作方法:Flashback Database to timestamp(to_date(‘2012-04-07 21:59:44′,’yyyy-mm-dd hh24:mi:ss’));Flashback Database to timestamp(sysdate-1/24); 基于SCN进行闪回数据库操作方法:Flashback Database to 1321427;Good luck.secooler12.04.07— The End —

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

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/195244.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code