flashback database
??????????????????flashback?database ? 1.??配置flashback?database 1)查看数据库的归档模式以及闪回是否启用 SQL>?select?log_mode,open_mode,flashback_on?from?v$database; LOG_MODEOPEN_MODEFLASHBACK_ON ------------?--------------------?------------------ NOARCHIVELOG?READ?WRITENO --flashback?database要求数据库必须处于归档模式,且闪回之后必须使用resetlogs打开数据库 2)数据库开归档 alter?system?set?log_archive_dest_2='location=/archive'; alter?system?set?log_archive_format='orcl_%t_%s_%r.arc'?scope=spfile; 3)置闪回目录、闪回目录空间大小 SQL>?show?parameter?db_recover NAMETYPEVALUE ------------------------------------?-----------?------------------------------ db_recovery_file_deststring/u01/app/oracle/fast_recovery_ area db_recovery_file_dest_sizebig?integer?4977M alter?system?set?db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'; --可以用该命令来给恢复目录设置新路径(闪回目录中可存放:归档的日志文件,controlfile?和spfile?的备份文件,闪回日志,和rman的备份集。) alter?system?set?db_recovery_file_dest_size=4977m; --用该命令来指定恢复目录的的大小 4)?设置闪回保留目标生存期 show?parameter?db_flashback alter?system?set?db_flashback_retention_target=60;--设置保留时间为1小时 5)?在mount状态下来启用flashback?database如在open状态下则出现下列错误提示ORA-38759 SQL>?startup?mount; ORACLE?instance?started. Total?System?Global?Area839282688?bytes Fixed?Size2233000?bytes Variable?Size478154072?bytes Database?Buffers356515840?bytes Redo?Buffers2379776?bytes Database?mounted. SQL>?alter?database?archivelog; Database?altered. --开归档 SQL>?alter?database?flashback?on; Database?altered. --开flashback?database 2.??flashback?database?相关视图 1)v$flashback_database_log; select?oldest_flashback_scn?old_flhbck_scn,oldest_flashback_time?old_flhbck_tim, retention_target?rete_trgt,flashback_size/1024/1024?flhbck_siz, estimated_flashback_size/1024/1024?est_flhbck_size from?v$flashback_database_log; OLDEST_FLASHBACK_SCN?保留的最低系统改变号 --查看数据库可以恢复到的最早时间点或scn,查看flashback_size已使用大小,和预计大小闪回区大小 2)v$flashback_database_stat alter?session?set?nls_date_format='yyyy-mm-dd?hh24:mi:ss'; select?*from?v$flashback_database_stat; BEGIN_TIME?一个时间间隔的开始 --说简单点就是根据间隔时间(1小时)内数据库的活动情况,来估计保证预估满足你设定的保留时间(db_flashback_retention_target),所需的闪回去大小 3)v$recovery_file_dest; col?name?format?a50; select?name,space_limit/1024/1024?sp_limt, space_used/1024/1024?sp_usd,space_reclaimable/1024/1024?sp_recl, number_of_files?num_fils?from?v$recovery_file_dest; --查看闪回区的实际使用情况(闪回去空间不足会导致数据库hung住) 在数据库运行过程中,oracle?自动向该区域写入文件,当剩余空间不足15%的时候,它就会在alert?中增加警告,提示你空间不足。但此时不会影响数据库的正常运转,直到所有空间统统被用掉之后,oracle?首先尝试删除寻些过期的文件,冗余文件(备份策略之外的备份集或归档等)以及闪回日志,如果这些做完了,还是没有空闲空间的话,数据库就被hang住了 4)v$sgastat select?*?from?v$sgastat?where?name?like?'flashback%'; --查看sga中分配的闪回空间大小 3.??使用flashback?database闪回数据库 步骤(前提归档日志可用) 关闭数据库 启动数据库到mount状态(exclusive模式) 闪回至某个时间点,SCN或log?sequence?number 使用resetlogs打开数据库 1)使用sqlplus实现闪回 可以接受一个时间标记或一个系统改变号实参 sqlplus几种常用的闪回数据库方法 FLASHBACK?[STANDBY]?DATABASE?[<database_name>]TO?[BEFORE]?SCN?<system_change_number>?--基于SCN闪回 FLASHBACK?[STANDBY]?DATABASE?[<database_name>]?TO?[BEFORE]?TIMESTMP?<system_timestamp_value>--基于时间戳闪回 FLASHBACK?[STANDBY]?DATABASE?[<database_name>]?TO?[BEFORE]?RESTORE?POINT?<restore_point_name>--基于时点闪回 如下面的示例: a.基于时间戳闪回 SQL>?flashback?database?to?timestamp('2010-10-24?13:04:30','yyyy-mm-dd?hh24:mi:ss'); b.基于scn SQL>?flashback?database?to?scn?918987; c.基于闪回点 SQL>?flashback?database?to?restore?point?b1_load; 2)使用RMAN进行flashback?database 使用RMAN进行闪回数据库的几种常用办法 a.RMAN>?flashback?database?to?scn=918987; b.RMAN>?flashback?database?to?sequence=85?thread=1; 4.??flashback?database使用注意事项 1)闪回区没有空间会导致数据库hung住 --闪回目录中可存放:归档的日志文件,controlfile?和spfile?的备份文件,闪回日志,和rman的备份集。(且归档和备份集默认放在闪回区中) 2)Flashback?Database?不能解决Media?Failure 3)一旦关闭闪回数据库,flashback?recovery?area中的闪回日志将自动全部删除 4)如果闪回数据库的时间点之间进行了控制文件的恢复或重建,数据文件的收缩,或删除了某个表空间,则闪回将失败 5)即便以闪回后resetlogs打开数据库,当前闪回日志里的内容仍然保留,仍然可以继续进行闪回到其他的scn以restlogs方式打开数据库。之所以考虑以read?only方式打开数据库,主要是因为以resetlog方式打开数据库后,用户即可操作数据库,无法保证校验闪回的准确性。另外,当闪回数据库与DATA?GUARD结合后,当主库发生逻辑损坏,我们可以闪回备库,然后以read?only方式打开备库,将数据从备库中导出后导入到主库中,这样将对数据和业务的影响减小到最小。 6)闪回日志在出现空间压力的情况下,oracle会自动删除闪回日志,则有可能导致无法闪回到指定的时间点。如果希望闪回到指定的时间点,可进行如下操作 SQL>?create?restore?point?must_to_flashback?guarantee?flashback?database; 这样我们就给当前时间点取must_to_flashback这个名字,确保能闪回到该时间点上 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |