oracle dataguard redo gap问题的解决

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 14:30 点击:

 在redo传输有发生中断的时候,redogap就会产生。
      一般情况下,当redo 传输服务恢复后,oracle会自动检测gap并自行解决。修复缺口需要的时间,直接取决于gap的尺寸,和redo源的数据库和redo目的地数据库之间的网络状况。如果经常出现gap,则可以考虑如下的优化办法:
    1、用compression方式传送,可以再log_archive_dest_n参数中,加入compression参数。
    2、启用日志传输的并行方式,在log_archive_dest_n参数中,设置max_connections参数,使之大于1。
     在主库不可用的情况下,可能需要手工干预,修复redo gap,步骤如下:
对于物理备库:
执行如下的语句,确定备库是否存在redogap:
SQL> SELECT * FROM V$ARCHIVE_GAP;
假设结果如下:
THREAD#   LOW_SEQUENCE#   HIGH_SEQUENCE#
-----------    -------------        --------------
1                     7                      10
结果表明,线程1的7-10号redo,是一个缺口,在主库上执行如下查询,确定需要的归档日志:
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND -
> DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;
NAME
--------------------------------------------------------------------------------
/primary/thread1_dest/arcr_1_7.arc
/primary/thread1_dest/arcr_1_8.arc
/primary/thread1_dest/arcr_1_9.arc
这里,假设主库的dest_1是本地归档路径。
将查到的这些文件,拷贝至备库的适当位置,并使之属主为oracle:oinstall,备库执行如下命令,将这些归档日志注册:
SQL> ALTER DATABASE REGISTER LOGFILE -
> '/physical_standby1/thread1_dest/arcr_1_7.arc';
SQL> ALTER DATABASE REGISTER LOGFILE -
> '/physical_standby1/thread1_dest/arcr_1_8.arc';
SQL> ALTER DATABASE REGISTER LOGFILE -
> '/physical_standby1/thread1_dest/arcr_1_9.arc';
执行这些语句后,重新执行语句:
SQL> SELECT * FROM V$ARCHIVE_GAP;
看是否有别地gap存在,如果有,重复上面的步骤,直到没有gap存在。
对于逻辑备库:
备库上做如下查询,确定是否有gap存在:
SQL> COLUMN FILE_NAME FORMAT a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L -
> WHERE NEXT_CHANGE# NOT IN -
> (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#) -
> ORDER BY THREAD#, SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------
1                 6             /disk1/oracle/dbs/log-1292880008_6.arc
1                 10           /disk1/oracle/dbs/log-1292880008_10.arc
对于每个THREAD,如果有多余一条记录返回,则表明有gap存在。确实的归档日志为尾号7-9的文件。从主库上找到这些文件,拷贝至备库,并执行如下命令:
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE -
> '/disk1/oracle/dbs/log-1292880008_7.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE -
> '/disk1/oracle/dbs/log-1292880008_8.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE -
> '/disk1/oracle/dbs/log-1292880008_9.arc';
完成以后,重新执行第一步的查询,看是否有新的gap产生,直到没有gap,修复完毕。

作者“Oracle之爬虫”

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1