Logical Standby日常维护与性能优化(一)―日常维护与故障排除

Logical Standby日常维护与性能优化(一)―日常维护与故障排除
2011年09月01日
  本篇主要讲述logical stanby日常管理维护中的检查和故障排除要点,不涉及性能问题。性能问题和相关调整将在下篇中单独阐述。
  Logical Standby日常维护与性能优化(二)―性能诊断与优化
  10gR2大大简化了logical stanby的创建步骤,从physical到logical的转换步骤异常简单,不再对搭建过程过多描述。
  因为Logical standby是SQL语句的逻辑运用,而standby是block级别的recover,从故障角度上将,Logical standby比standby stanby有更多的故障机会出现。
  常用的用于维护和排查logical standby的视图几乎都是已”dba_logstdby_*”和“v$logstdby_*”开头,常用的包以”dbms_logstdby.*”开 头,具体含义根据字面意思也不难理解,不赘述(下文有部分提及)。当然,用于physical standby的部分视图,对排查逻辑备库也同样适用。
  1. APPLY状态的检查和诊断
  Apply进程是逻辑SQL运用的核心。Apply进程遇到错误会自动终止,需要处理后手工重新启动。因此,监控apply进度和状态是监控逻辑备库同步与否的关键,如同物理DG监控日志同步。
  (1) 监控备库上各个进程的状态
  可以查询v$logstdby_process视图,用于得到与SQL APPLY相关的各进程的状态情况.
  如果没有返回值,表示APPLY进程没有启动或者已停止。如果是后者,可以从alert.log文件或者dba_logstdby_events中得到更多的错误信息用于后续处理。
  (2) Apply 进度
  监控Apply进度可以得到备库的恢复进展以及同步状态。关联查询v$logstdby_progress 和dba_logstdby_log,得出目前SQL APPLY的apply scn/time以及log sequence。如果apply进程正常而主备之间同步有很大差异,需要做进一步排查。
  2. SQL Apply的异常事务处理
  SQL Apply的异常事务会记录到dba_logstdby_events视图中,对于能够进行手工fix的异常,可以处理后重新运行apply进程。对于 某些无法处理或者修复后需要忽略的异常,通过dbms_logstdby.skip*一系列包做标记以便让apply进程跳过。比如,我们可以对特定的错 误事务进行标记,通过dbms_logstdby.skip_transaction标记指定的事务而忽略该事务的运用。
  在10G中,oracle提供了带skip failed transaction子句的 SQL apply启动语句,可以方便的对当前记录的错误事务全部跳过。
  SQL>alter database start logical standby apply skip failed transaction;
  3.SKIP策略
  Logical standby提供skip的策略,可根据实际情况跳过不想被apply的对象或者跳过特定对象上的所有错误事务。
  dbms_logstdby.skip: 用于指定对象的DML DDL skip
  dbms_logstdby.skip_error: 用于指定对象上的错误事务 skip
  dbms_logstdby.skip_transaction: 用于指定事务 skip
  4. UNSKIP与初始化
  Unskip是与skip相反的操作,用于已skip操作的撤销。对于unskip的对象,需要进行手工构造或者初始化。
  Oracle提供dbms_logstdby.instantiate_table包来对指定的table初始化。我们也可以手工来构造一个当前apply scn时刻的闪回查询版本来初始化数据。
  5. DDL handle
  Logical standby中提供DDL handle的功能,用于自定义的一些DDL语句处理,比如一些表对象的重命名。
  需要注意的是,在逻辑备库中,db_file_name_convert/ log_file_name_convert参数并不生效。对于路径不同的主备体系,添加数据文件和表空间会引起逻辑备库的apply错误,可以通过 DDL handle可以实现文件路径的重命名。
  ORACLE联机文档上的一个例子:
  CREATE OR REPLACE PROCEDURE SYS.HANDLE_TBS_DDL (
  OLD_STMT IN VARCHAR2,
  STMT_TYP IN VARCHAR2,
  SCHEMA IN VARCHAR2,
  NAME IN VARCHAR2,
  XIDUSN IN NUMBER,
  XIDSLT IN NUMBER,
  XIDSQN IN NUMBER,
  ACTION OUT NUMBER,
  NEW_STMT OUT VARCHAR2
  ) AS
  BEGIN
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值