dg报表的cron监控时间出现异常。缘由是dg后台的cron“6 * * * * /etc/paic/shell/odg_mon_stat_dg.sh”在每一个小时06分会连入monitor更新数据。dg报表有300多个dg,每一个dg至少链接monitor3次,经ssc分析这是一个链接风暴。
对monitor监听实施监听负载平衡的方案,经过多个监听器的负载均衡和冗余,能够实现对listener crash问题的workaround,若是再次遇到该问题,当LISTENER监听器异常crash时,新链接会自动经过另外一个监听器链接,客户端新建链接不会感受到切换,能够避免客户体验下降。 shell
现有listener: MONITOR = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1530)(queuesize=1024)) ) ) 考虑到目前dg报表中有300个dg库,每一个库至少同时链接3次monitor,从长远看,往后还会增长同城dg和上海dg,所以添加至5个listener。 vi listener.ora 添加以下内容: SID_LIST_MONITOR2 = (SID_LIST = (SID_DESC = (ORACLE_HOME = /paic/app/oracle/rdbms/11g/11.2.0.2_1) (SID_NAME = monitor ) ) ) MONITOR2 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1531)) ) ) SID_LIST_MONITOR3 = (SID_LIST = (SID_DESC = (ORACLE_HOME = /paic/app/oracle/rdbms/11g/11.2.0.2_1) (SID_NAME = monitor ) ) ) MONITOR3 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1532)) ) ) SID_LIST_MONITOR4 = (SID_LIST = (SID_DESC = (ORACLE_HOME = /paic/app/oracle/rdbms/11g/11.2.0.2_1) (SID_NAME = monitor ) ) ) MONITOR4 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1533)) ) ) SID_LIST_MONITOR5 = (SID_LIST = (SID_DESC = (ORACLE_HOME = /paic/app/oracle/rdbms/11g/11.2.0.2_1) (SID_NAME = monitor ) ) ) MONITOR5 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1534)) ) )
lsnrctl start MONITOR2 lsnrctl start MONITOR3 lsnrctl start MONITOR4 lsnrctl start MONITOR5 Lsnrctl Status 查看都为ready,则进行下一步。
3. 修改monitor主机的tns 数据库
备份: cp tnsnames.ora tnsnames.ora.0807bk Vi tnsnames.ora LOCAL_MONITOR = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1530)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1531)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1532)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1533)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1534)) ) ) MONITOR = (DESCRIPTION = (LOAD_BALANCE = yes) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1530)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1531)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1532)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1533)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.30.64)(PORT = 1534)) (CONNECT_DATA = (SERVICE_NAME = monitor) ) )
4. 修改参数 oracle
alter system set local_listener='LOCAL_MONITOR' scope=both;
6. 配置监听的HA切换脚本
6.1 /oracle_grid/11.2.0/grid/crs/public/monitor增长资源切换的act_lsnr.ksh脚本。
act_lsnr.ksh脚本的做用就是资源切换的时候,起停监听。增长几组act_lsnr.ksh脚本,将每一个脚本中的监听名字指定为对应的monitor新增的监听。用以控制新监听的起停。如act_lsnr2.ksh中修改监听名字为monitor2
新增脚本: act_lsnr.ksh act_lsnr2.ksh act_lsnr3.ksh act_lsnr4.ksh act_lsnr5.ksh
6.2 测试脚本可以正常起停新的监听。
6.3 将脚本增长到集群的全部节点上,保持一致。
6.3 通知主机组增长monitor的资源控制,将几个监听都配置好资源管理。
6.3 安排monitor切换测试,验证listeners的正常起停。 app
7. 在dg client端修改monitor的链接串以下: 负载均衡
MONITOR = (DESCRIPTION = (LOAD_BALANCE = yes) (ADDRESS = (PROTOCOL = TCP)(HOST = monitor.db.paic.com.cn)(PORT = 1530)) (ADDRESS = (PROTOCOL = TCP)(HOST = monitor.db.paic.com.cn)(PORT = 1531)) (ADDRESS = (PROTOCOL = TCP)(HOST = monitor.db.paic.com.cn)(PORT = 1532)) (ADDRESS = (PROTOCOL = TCP)(HOST = monitor.db.paic.com.cn)(PORT = 1533)) (ADDRESS = (PROTOCOL = TCP)(HOST = monitor.db.paic.com.cn)(PORT = 1534)) (CONNECT_DATA = (SERVICE_NAME = monitor) ) )