日期:2014-05-16  浏览次数:20423 次

谈谈Oracle 10g备库闪回空间设置
Oracle 10g新特性之一就是推出了数据库级别的闪回功能,当然这个闪回功能有诸多限制,如在闪回设置期间,如果数据库建构发生变化(数据文件增删),控制文件重做等,闪回都将失效,而且打开数据库打开闪回之后,IO层面的影响必须是考虑的范畴之一。尤其是IO层面的影响使得在IO操作比较多的生产库上很少打开闪回,但Oracle 10g允许在备库上打开闪回,即如果客户有dataguard,在空间允许的前提下,如果备库打开闪回之后,Oracle进行mrp合成归档日志时,Oracle利用另一后台进程rvwr将变化过的数据块写至闪回日志文件中。通过这一功能进一步提高了生产库的可用性,看起来似乎还不错,但是当闪回空间不足时,mrp进程将挂起,不能应用归档日志,同时后台alert日志将出现如下提示:
引用
Media recovery opens logfile:
  Thread: 1 Sequence: 877 Logfile name: /Tbackup/mcstar/archlog/1_877_750351136.dbf
Tue May 10 15:32:34 2011
Errors in file /ora10g/app/admin/mcstar/bdump/mcstar_rvwr_21661.trc:
ORA-38701: Flashback database log 119 seq 119 thread 1: "/dbra9/MCSTAR/flashback/o1_mf_6wktjl28_.flb"
ORA-27091: unable to queue I/O
ORA-27072: File I/O error
Linux Error: 9: Bad file descriptor
Additional information: 4
Additional information: 385
Additional information: 569344
Tue May 10 15:32:34 2011
Deleted Oracle managed file /dbra9/MCSTAR/flashback/o1_mf_6wktjl28_.flb

一旦mrp挂起,那生产库的高可用性将不能得到保证。闪回空间使用率也成了我们必须监控项之一。Oracle 10g在备份端打开闪回共分为2种:
1、简单打开闪回数据库级别闪回
2、设置restore point闪回,其中restore point闪回可以分为普通和强制两种
需要注意的是以上2种闪回可以混合使用,本文仅仅介绍强制restore point的监控。
首先取得查看闪回空间参数设置大小
引用
SQL> select value from v$parameter where name='db_recovery_file_dest_size';

VALUE
--------------------------------------------
10737418240

查看当前闪回空间大小
引用
SQL> select RETENTION_TARGET,FLASHBACK_SIZE from v$FLASHBACK_DATABASE_LOG;

RETENTION_TARGET FLASHBACK_SIZE
---------------- --------------
            1440      319488000

比较db_recovery_file_dest_size和,FLASHBACK_SIZE。如果两者接近,或者闪回空间占用率显示达到95%以上(以上指标可以通过阀值设定),删除可以按闪回点产生时间先后顺序删除restore point,释放闪回空间。这里需要指出的是删除闪回点也就意味着闪回点对应的时刻不能闪回,但是在mrp不能应用和不能闪回之间,在一般情况下,优先级肯定考虑满足mrp应用日志,闪回在很大程度上是锦上添花的事情。通过以上分析,我们可以得到另外的建议,除了部署必要的监控之外,就是闪回空间和归档存放空间最好不要放在同一文件系统中,防止空间相互争用。因为当业务高峰期,随着归档量的增加,如果使得闪回空间得不到满足,mrp应用将挂起。