分别在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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
##创建文件mn_gg_status.sql
delete DB_SJJHPT.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;
- 1
- 2
- 3
- 4
##若业务库进行安全加固,"/as sysdba"这语法需要修改为
sqlplus -S system/sdfdsf @/goldengate/data/mn_gg_status.sql <<EOF
- 1
##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
- 1
- 2
- 3
- 4
##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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
##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)
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
-----------------【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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
##3.2创建文件 #mn_gg_status.sql#
delete DB_SJJHPT.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;
- 1
- 2
- 3
- 4
##3.3创建文件 #infoall.oby#
info all
- 1
##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
- 1
- 2
- 3
#4在Windows#设置定时调度计划
开始-任务计划程序
##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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
##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)
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
</div>