如何部署goldengate进程状态监控脚本

分别在liunx、aix和Windows系统部署OGG监控,实现全自动准实时获取OGG进程状态、延迟时间。

总体步骤:
1、确定OGG数据库IP
2、确定服务器OGG安装路径
3、在服务器建立监控脚本文件
4、建立专用用户,建监控表存储收集的OGG进程状态
5、设置定时调度,一般5-10分钟执行一次

-----------------【Liunx、AIX系统】OGG监控部署配置----------------------------------

OGG监控步骤:

1、确定OGG数据库IP

2、在服务器确定OGG安装路径/goldengate
根据实际路径更改。
3、在服务器ORACLE用户下建监控脚本
/goldengate/data/mn_gg_status.sh,mn_gg_status.sql并授权chmod 755

4、在服务器ORACLE用户下建定时计划

5、在数据库创建用户DB_SJJHPT

6、在数据库创建监控表DB_SJJHPT.T_OGG_MN_STATUS

#各个部署OGG的服务器,创建监控脚本,采集各进程状态

##3创建监控脚本

#mn_gg_status.sh
    vi   /goldengate/data/mn_gg_status.sh 
     ##在特定路径下创建监控脚本;--根据实际环境修改存放mn_gg_status.sh的路径/gglog
    . /home/oracle/.profile;         
    ##此处需对应oracle的profile文件(AIX /HP-UX系统是.profile、LIUNX系统是.bash_profile)
    >/goldengate/data/ggsci.log             ##清空文件;--根据实际环境修改路径/gglog
    cd /goldengate             ##进入进程目录--根据实际环境修改路径/software
    ggsci <<EOF >/goldengate/data/ggsci.log         ##重新生成文件;根据实际环境修改路径/gglog
    info all
    quit
    EOF
    cat /goldengate/data/ggsci.log | grep :  | grep -v Oracle   >/gglog/data/ggsinfo.log       
    ##根据实际环境修改路径/gglog
    >/goldengate/data/mn_gg_status.sql                   
    echo "delete DB_SJJHPT.T_OGG_MN_STATUS;" >> /goldengate/data/mn_gg_status.sql       
    cat /goldengate/data/ggsinfo.log| while read line                                     
    do
    set  -- $line
    echo 
    "insert into DB_SJJHPT.T_OGG_MN_STATUS(name,status,time,program,lagtime,chkpttime) values('$3','$2',sysdate,'$1','$4','$5');" >>  /goldengate/data/mn_gg_status.sql     
    done
    echo "commit;" >> /goldengate/data/mn_gg_status.sql                                   
    sqlplus -S  "/as sysdba" @/goldengate/data/mn_gg_status.sql <<EOF                     
    exit;
    EOF

chmod 755 /goldengate/data/mn_gg_status.sh             
##对监控脚本授权,根据实际环境修改路径/gglog

##创建文件mn_gg_status.sql

delete DB_SJJHPT.T_OGG_MN_STATUS; 
insert into ggt.T_OGG_MN_STATUS(name,status,time,program,lagtime,chkpttime) values('RFPFX001','RUNNING',sysdate,'REPLICAT','00:00:00','00:00:03'); 
commit; 
exit; 

##若业务库进行安全加固,"/as sysdba"这语法需要修改为

sqlplus -S system/sdfdsf @/goldengate/data/mn_gg_status.sql <<EOF

##4对OGG监控脚本设置任务调度计划,每五分钟执行一次
##任务调度

crontab -e            

0,5,10,15,20,25,30,35,40,45,50,55 * * * *  /goldengate/data/mn_gg_status.sh > /dev/null 2>&1      
 ##根据实际环境修改监控脚本路径/gglog

##5创建DB_SJJHPT 用户

create user DB_SJJHPT identified by "**"
  default tablespace TS_QAS_DATA
  temporary tablespace TEMP
  profile DEFAULT;
grant connect to DB_SJJHPT;
grant resource to DB_SJJHPT;
grant select any dictionary to DB_SJJHPT;
grant select any table to DB_SJJHPT;
grant unlimited tablespace to DB_SJJHPT;
grant select ,delete ,insert,update on  

##6创建监控表

create table DB_SJJHPT.T_OGG_MN_STATUS          ##根据实际修改监控表用户
(name        varchar2(8) ,
  status      varchar2(10) ,
  time        timestamp(6),
  dbid        number(6) default '500034',          ##这个ID暂无实际作用,可以任意值
  dbname      VARCHAR2(64) default '管理系统',   ##填写需监控的库名
  serverip    VARCHAR2(32) default '150.17.x.x',    ##填写需监控的库IP
  PROGRAM   VARCHAR2(10),
  LAGTIME   VARCHAR2(20),
  CHKPTTIME VARCHAR2(20)
);

-----------------【Windows系统】OGG监控部署配置----------------------------

OGG监控步骤:

1、确定OGG数据库IP

2、在服务器确定OGG安装路径/goldengate

3、在服务器建监控脚本gg_mn_status.bat/mn_gg_status.sql/infoall.oby/insert.bat共4个文件

4、在服务器建定时计划

5、在数据库创建DB_SJJHPT用户

6、在数据库创建监控表DB_SJJHPT.T_OGG_MN_STATUS

##3.1在各个部署OGG的服务器,创建监控脚本,采集各进程状态
##创建文件 #gg_mn_status.bat#

 rem 不显示命令行本身
@echo off

rem 清空ggsci.log文件,注意所有文件的路径,根据实际选择
echo off >D:\software\gglog\ggsci.log

rem 进入D盘
cd D:
rem 进入ggs
cd D:\software\ggs

rem 命令执行的所有结果全部追加到ggsci.log文件
ggsci paramfile D:\software\gglog\infoall.oby >D:\software\gglog\ggsci.log

rem 把ggsci.log的档案内容输入ggsinfo.log这个档案里
rem copy ggsci.log ggsinfo.log
echo off >D:\software\gglog\ggsinfo.log
echo off >D:\software\gglog\ggsinfo_temp.log
D:
cd D:\software\gglog
@findstr /v "Oracle" "ggsci.log">>ggsinfo_temp.log
findstr "[:]" ggsinfo_temp.log>>ggsinfo.log

rem 清空mn_gg_status.sql脚本
echo off >D:\software\gglog\mn_gg_status.sql

rem 删除表数据
echo delete DB_SJJHPT.T_OGG_MN_STATUS; >> D:\software\gglog\mn_gg_status.sql


rem 按行读取ggsinfo.log文件内容,调用insert.bat拼凑insert语句,写入mn_gg_status.sql文件,注意insert.bat的路径
setlocal enabledelayedexpansion
for /f "delims=" %%i in (ggsinfo.log) do (
    set /a b+=1
    echo %%i
    call D:\software\gglog\insert.bat %%i
)

rem 提交
echo commit; >> D:\software\gglog\mn_gg_status.sql
rem 退出
echo exit; >> D:\software\gglog\mn_gg_status.sql

rem 执行mn_gg_status.sql文件,注意登陆数据库的用户名、密码、SID
sqlplus "/ as sysdba" @D:\software\gglog\mn_gg_status.sql

##3.2创建文件 #mn_gg_status.sql#

delete ggt.T_OGG_MN_STATUS; 
insert into DB_SJJHPT.T_OGG_MN_STATUS(name,status,time,program,lagtime,chkpttime) values('RFPFX001','RUNNING',sysdate,'REPLICAT','00:00:00','00:00:03'); 
commit; 
exit; 

##3.3创建文件 #infoall.oby#

info all

##3.4创建文件 #insert.bat#

@echo off
rem 注意mn_gg_status.sql的路径
echo insert into DB_SJJHPT.T_OGG_MN_STATUS(name,status,time,program,lagtime,chkpttime) values('%3','%2',sysdate,'%1','%4','%5'); >>  D:\software\gglog\mn_gg_status.sql

#4在Windows#设置定时调度计划
开始-任务计划程序
如何部署goldengate进程状态监控脚本

如何部署goldengate进程状态监控脚本
如何部署goldengate进程状态监控脚本
##5创建DB_SJJHPT 用户

create user DB_SJJHPT identified by "**"
  default tablespace TS_QAS_DATA
  temporary tablespace TEMP
  profile DEFAULT;
grant connect to DB_SJJHPT;
grant resource to DB_SJJHPT;
grant select any dictionary to DB_SJJHPT;
grant select any table to DB_SJJHPT;
grant unlimited tablespace to DB_SJJHPT;
grant select ,delete ,insert,update on  

##6创建监控表

create table DB_SJJHPT.T_OGG_MN_STATUS          ##根据实际修改监控表用户
(name        varchar2(8) ,
  status      varchar2(10) ,
  time        timestamp(6),
  dbid        number(6) default '500034',          ##这个ID暂无实际作用,可以任意值
  dbname      VARCHAR2(64) default '管理系统',   ##填写需监控的库名
  serverip    VARCHAR2(32) default '150.17.x.x',    ##填写需监控的库IP
  PROGRAM   VARCHAR2(10),
  LAGTIME   VARCHAR2(20),
  CHKPTTIME VARCHAR2(20)
);