Oracle最高可用性架构之Data Guard管理

管理日志传输服务
==================================
1.检查日志传输服务
  SQL> select thread#,instance_name from gv$instance;  --检查实例名称对应的线程号
  SQL> select thread#,dest_id,max(sequence#)           --查询每个实例所有目的地生成的日志的最大序列号
       from v$archived_log
       group by thread#,dest_id
       order by thread#;
  (注:dest_id等于1对应初始化参数配置中的log_archive_dest_1,表示本地归档目的地;等于2对应初始化参数配置中的
        log_archive_dest_2,表示远程Standby数据库目的地)
  
  测试例子:
  SQL> alter system archive log current;
  SQL> r
  SQL> select thread#,dest_id,max(sequence#)
       from v$archived_log
       group by thread#,dest_id
       order by thread#;
  (注:RAC所有实例的日志成功归档到所有目的地,证明RAC的日志传送服务工作正常)

  问题排查:
  SQL> select error from v$archive_dest_status;
  (注:如果日志传输服务没有正常工作,可以通过此表查看原因)

2.查看Standby数据库Standby Redo日志的使用情况
  说明:在日志的实时传输过程中,需要使用到Standby数据库的Standby Redo日志。
  SQL> select thread#,sequence#,archived,status from v$standby_log;  --stnadby数据库端执行
  SQL> select thread#,sequence#,status from v$log;  --主数据库端执行
  (注:如果主数据库的current联机Redo日志与Standby数据库的active状态的Standby Redo日志序列号相同,证明启用了实时传输)

3.监控日志传输性能
  a.在Redo源数据库执行以下SQL语句显示目的地2的响应时间柱状图
  SQL> select frequency,duration
       from v$redo_dest_resp_histogram
       where dest_id = 2
       and frequency > 1
  (注:可以看出响应时间为xx秒的命中率为xx秒)

  b.在Redo源数据库执行以下SQL语句显示目的地2的最慢响应时间
  SQL> select max(duration)
       from v$redo_dest_resp_histogram
       where dest_id = 2
       and frequency > 1;

  c.在Redo源数据库执行以下SQL语句显示目的地2的最快响应时间
  SQL> select min(duration)
       from v$redo_dest_resp_histogram
       where dest_id = 2
       and frequency > 1;

4.自动发现和解决日志缺失
  当Redo传送恢复时,Redo传输服务可自动察觉Redo缺失,以下为减少Redo缺失解决时间的方式:
  a.Redo传输压缩
    使用LOG_ARCHIVE_DEST_n参数的COMPRESSION属性,明确在传输到目的地之前压缩Redo数据
  b.并行Redo传输网络会话
    使用LOG_ARCHIVE_DEST_n参数的MAX_CONNECTIONS属性,明确创建更多的会话用于发送Redo,解决Redo缺失

5.手动解决日志缺失
  1)物理Standby数据库日志缺失
    SQL> select * from v$archive_gap;  --在物理Standby数据库执行
    SQL> select name                   --在主数据库执行
         from v$archive_log
         where thread# = 1
         and dest_id = 1
         and sequence# >= 7 and sequence# <= 10;
    拷贝日志到物理Standby数据库,并在物理Standby数据库执行:
    SQL> alter database register logfile '/physical_standby/thread1_dest/arcr_1_7.arc';
    SQL> alter database register logfile '/physical_standby/thread1_dest/arcr_1_8.arc';
    SQL> alter database register logfile '/physical_standby/thread1_dest/arcr_1_9.arc';
    SQL> alter database register logfile '/physical_standby/thread1_dest/arcr_1_10.arc';
  2)逻辑Standby数据库日志缺失
    SQL> select thread#,sequence#,file_name  --在逻辑Standby数据库执行
         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#;
    拷贝日志到逻辑Standby数据库,并在逻辑Standby数据库执行:
    SQL> alter database register logical logfile '/disk1/oracle/dba/log-129880008_7.arc';
    SQL> alter database register logical logfile '/disk1/oracle/dba/log-129880008_8.arc';
    SQL> alter database register logical logfile '/disk1/oracle/dba/log-129880008_9.arc';
    SQL> alter database register logical logfile '/disk1/oracle/dba/log-129880008_10.arc';

6.Redo传输服务等待事件

 
        等待事件                                                        描述   
LNS wait on ATTACH    创建连接到所有ASYNC和SYNC Redo传输目的地的Redo传输会话话费的总时间   
LNS wait on SENDREQ   Redo数据被写到所有ASYNC和SYNC传输目的地话费的总时间   
LNS wait on DETACH     终止连接到所有ASYNC和SYNC Redo传输目的地的传输Redo数据话费的总时间  
  
==================================

监控/管理日志应用服务
==================================
1.检查告警日志
  Fri Sep 21 00:42:36 2012
  alter database recover managed standby database disconnect
  Attempt to start background Managed Standby Recovery process (racdg)
  Fri Sep 21 00:42:36 2012
  MRP0 started with pid=24, OS id=4536 
  MRP0: Background Managed Standby Recovery process started (racdg)
  started logmerger process
  Fri Sep 21 00:42:41 2012
  Managed Standby Recovery not using Real Time Apply
  Parallel Media Recovery started with 8 slaves
  Waiting for all non-current ORLs to be archived...
  All non-current ORLs have been archived.

2.查询数据字典
  SQL> select process,status,thread#,sequence#,block#,blocks  --在Standby数据库执行
       from v$managed_standby where process!='ARCH';
  (注:MRP0为介质恢复进程)

3.启动Redo Apply
  SQL> alter database recover managed standby database;  --在前台启动Redo Apply
  (注:如果开始一个前台会话,控制权不会返回到命令提示符)
  SQL> alter database recover managed standby database disconnect from session;  --在后台启动Redo Apply
  (注:以上语句开始一个单独的服务器进程,立即返回控制权给用户。当恢复进程在后台运行时,执行RECOVER语句的窗口能继续执行其它工作
        disconnect from session选项表示Redo Apply在后台会话中进行,以上两种方式都只会在发生日志切换的时候才应用日志)
  
  SQL> alter database recover managed standby database using current logfile;  --在前台启动实时应用
  (注:using current logfile子句,表示Redo在接收到的时候就应用)
  SQL> alter database recover managed standby database using current logfile disconnect from session;  --在后台启动Redo实时应用

4.停止Redo Apply
  SQL> alter database recover managed standby database cancel;
==================================

修改Data Guard保护模式
==================================
1.验证参数配置
不同保护模式对应LOG_ARCHIVE_DEST_n参数的配置要求
 
最高可用性                      最大性能                    最大保护   
AFFIRM                          NOAFFIRM                    AFFIRM   
SYNC                               ASYNC                       SYNC   
DB_UNIQUE_NAME       DB_UNIQUE_NAME        DB_UNIQUE_NAME  

2.设置数据保护模式
  启动主数据库在MOUNT模式,如果是RAC数据库,关闭所有的节点,只启动一个节点在MOUNT模式
  SQL> alter database set standby database to maximize {availability|performance|protection};  --在主数据库修改
  SQL> alter database open;
  最后打开RAC的其它节点的实例

3.查看数据库保护模式
  SQL> select protection_mode,protection_level from v$database;  --在主数据库执行查看主数据库的保护模式
  SQL> select dest_id,database_mode,recovery_mode,protection_mode  --在主数据库执行查看目的地的数据库模式
       from v$archive_dest_status
       where dest_id = 2;
==================================

快照Standby数据库
==================================
1.将物理Standby数据库转换为快照Standby数据库
步骤1: 停止物理Standby数据库的Redo Apply
步骤2: 如果物理Standby数据库是RAC,关闭所有实例,只保留一个实例
步骤3: 确保Standby数据库在MOUNT模式,且没有被打开
步骤4: 确保闪回恢复区被配置
步骤5: 执行以下命令将物理Standby数据库转换为快照Standby数据库:
SQL> alter database convert to snapshot standby;

2.将快照Standby数据库转换为物理Standby数据库
步骤1: 如果Standby数据库是RAC,关闭所有实例只保留其中一个实例
步骤2: 确保数据库在MOUNT模式,但是没有打开
步骤3: 执行以下命令将快照Standby数据库转换为物理Standby数据库
SQL> alter database convert to physical standby;
(注:转换之后数据库被卸载,必须重启。当Redo Apply开始启用时,快照Standby数据库接收到的Redo数据将自动被应用)
==================================

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

转载于:http://blog.itpub.net/29339097/viewspace-1064842/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值