笔者们先测试比较盛名的Orabbix,上传到您的 Zabbix Server

Orabbix介绍

监察和控制Oracle数据库大家须求设置第②方提供的Zabbix插件,大家先测试比较著名的Orabbix,http://www.smartmarmot.com/product/orabbix/

图片 1

从布局架构图上能够看到,orabbix是由此JDBC去老是被监察和控制数据库的,其实不是必须在数据库主机上设置Agent,而运作orabbix的主机,能够是Zabbix
Server,也能够是数据库主机和zabbix
server之外的妄动一台主机,为了测试方便,大家将orabbix安装在Zabbix
Server上。

 

修改orabbix配置文件

#cd /opt/orabbix/conf

#cp config.props.sample config.props

据说实际的配置景况修改文件,比如:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1

ZabbixServer1.Address=192.168.0.41 ##Zabbix服务器地址

ZabbixServer1.Port=10051 ##Zabbix服务器端口

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid

#frequency of item’s refresh

OrabbixDaemon.Sleep=300

#MaxThreadNumber should be >= than the number of your databases

OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list

DatabaseList=DB1,DB2,DB3 ##数据库列表,名称随便起

#Configuration of Connection pool

#if not specified Orabbis is going to use default values (hardcoded)

#Maximum number of active connection inside pool

DatabaseList.MaxActive=10

#The maximum number of milliseconds that the pool will wait

#(when there are no available connections) for a connection to be
returned

#before throwing an exception, or <= 0 to wait indefinitely.

DatabaseList.MaxWait=100

DatabaseList.MaxIdle=1

#define here your connection string for each database

DB1.Url=jdbc:oracle:thin:@192.168.0.31:1521:test1 ##数据库连接串

DB1.User=zabbix ##监察和控制数据库用户名

DB1.Password=welcome1 ##监督数据库口令

保留配置文件,然后重启orabbix。

自定义SQL检查

Orabbix提供了表空间的监察,监察和控制项对应的SQL:

tbl_space.Query=SELECT * FROM ( \

select ‘- Tablespace ->’,t.tablespace_name ktablespace, \

‘- Type->’,substr(t.contents, 1, 1) tipo, \

‘- Used(MB)->’,trunc((d.tbs_size-nvl(s.free_space, 0))/1024/1024)
ktbs_em_uso, \

‘- ActualSize(MB)->’,trunc(d.tbs_size/1024/1024) ktbs_size, \

‘- MaxSize(MB)->’,trunc(d.tbs_maxsize/1024/1024) ktbs_maxsize, \

‘- FreeSpace(MB)->’,trunc(nvl(s.free_space, 0)/1024/1024)
kfree_space, \

‘- Space->’,trunc((d.tbs_maxsize – d.tbs_size + nvl(s.free_space,
0))/1024/1024) kspace, \

‘- Perc->’,decode(d.tbs_maxsize, 0, 0,
trunc((d.tbs_size-nvl(s.free_space, 0))*100/d.tbs_maxsize)) kperc \

from \

( select SUM(bytes) tbs_size, \

SUM(decode(sign(maxbytes – bytes), -1, bytes, maxbytes)) tbs_maxsize,
tablespace_name tablespace \

from ( select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes,
tablespace_name \

from dba_data_files \

union all \

select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
\

from dba_temp_files \

) \

group by tablespace_name \

) d, \

( select SUM(bytes) free_space, \

tablespace_name tablespace \

from dba_free_space \

group by tablespace_name \

) s, \

dba_tablespaces t \

where t.tablespace_name = d.tablespace(+) and \

t.tablespace_name = s.tablespace(+) \

order by 8) \

where kperc > 93 \

and tipo <>’T’ \

and tipo <>’U’

tbl_space.NoDataFound=none

其一SQL会回去93%满的表空间音信,而相应那一个监控项,orabbix也定义了触发器,因为监控项的再次来到值是文本,而从不满足条件的笔录时重返字符串“none“,所以监察和控制项对应的触发器会检查重返值初阶是或不是none,假使不是,就报告警方,那样,用户除外收受预先警告消息,还是能从重临值的具体值中看到实际时哪个表空间快满了。

当然,超过50%小时监察和控制项会重临none,所以我们无法画出健康未满的表空间的空中占据时间曲线。唯有抢先93%慢时,大家才明白具体的挤占意况。

若是想采访并保留越来越多消息,就需求动用自定义查询,方法正是在query.props文件中加入你想检查的SQL,比如大家想了开胃空间新闻,就再说下SQL:

customtbl.Query=select ‘TBL:’||a.tablespace_name||’,’ TBL, \

‘Total Size:’||trunc(sum(a.tots) / 1024 / 1024, 2)||’,’ Tot_Size_mb,
\

‘Free MB:’||round(sum(a.sumb) / 1024 / 1024, 2)||’,’ Tot_Free_mb, \

‘PCT Free:’||round(sum(a.sumb) * 100 / sum(a.tots), 2)||’,’ Pct_Free,
\

‘Max Free MB:’||round(sum(a.largest) / 1024 / 1024, 2)||’,’
Max_Free_mb, \

‘Chunks Free:’||sum(a.chunks)||’,’ Chunks_Free \

from (select tablespace_name, \

0 tots, \

sum(bytes) sumb, \

max(bytes) largest, \

count(*) chunks \

from dba_free_space a \

group by tablespace_name \

union \

select tablespace_name, sum(bytes) tots, 0, 0, 0 \

from dba_data_files \

group by tablespace_name) a \

group by a.tablespace_name

customtbl.NoDataFound=none

然后在orabbix对应的模板中增长这一个监察和控制项customtbl就足以了,上边时从最新数据菜单查看的SQL的归来结果:

图片 2

本来,大家要做越来越的解析和出示,就须求选用其他工具或许开发工具来做了,这些就不是那篇作品研商的限定了。

Orabbix不足

始于测试,感觉orabbix有2点分明瑕疵:

1.
被监督数据库音讯要每一个写进配置文件,固然数据库个数相比较多,管理会比较劳碌

2.
被监督数据库的账号音讯是写在配置文件中,而且口令是公然存款和储蓄,有非常大的安全隐患

  1. 对RAC的支撑照旧很初级
下载软件及安装服务

Ø 下载 Orabbix ,上传到你的 Zabbix Server

Ø unzip 软件到那几个目录: /opt/orabbix

Ø 安装服务:

Ø 复制运行脚本

#cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix

Ø 运转权限:

#chmod +x /etc/init.d/orabbix

#chmod +x /opt/orabbix/run.sh

Ø #chkconfig –add orabbix

确立监控用户及授权

CREATE USER ZABBIX

IDENTIFIED BY welcome1

DEFAULT TABLESPACE SYSTEM

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

REM 2 Roles for ZABBIX

GRANT CONNECT TO ZABBIX;

GRANT RESOURCE TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

REM 5 System Privileges for ZABBIX

GRANT SELECT ANY TABLE TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

GRANT UNLIMITED TABLESPACE TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

一经是11g数据库,执行下列语句:

exec dbms_network_acl_admin.create_acl(acl =>
‘resolve.xml’,description => ‘resolve acl’, principal =>’ZABBIX’,
is_grant => true, privilege => ‘resolve’);

exec dbms_network_acl_admin.assign_acl(acl => ‘resolve.xml’, host
=>’*’);

commit;

Orabbix介绍

监察和控制Oracle数据库大家供给设置第贰方提供的Zabbix插件,大家先测试相比盛名的Orabbix,http://www.smartmarmot.com/product/orabbix/

图片 3

从陈设架构图上得以看看,orabbix是通过JDBC去老是被监察和控制数据库的,其实不是必须在数据库主机上安装Agent,而运营orabbix的主机,能够是Zabbix
Server,也足以是数据库主机和zabbix
server之外的随机一台主机,为了测试方便,我们将orabbix安装在Zabbix
Server上。

下载软件及安装服务

Ø 下载 Orabbix ,上传到你的 Zabbix Server

Ø unzip 软件到那一个目录: /opt/orabbix

Ø 安装服务:

Ø 复制运行脚本

#cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix

Ø 运营权限:

#chmod +x /etc/init.d/orabbix

#chmod +x /opt/orabbix/run.sh

Ø #chkconfig –add orabbix

修改orabbix配置文件

#cd /opt/orabbix/conf

#cp config.props.sample config.props

听大人讲实际的配置意况修改文件,比如:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1

ZabbixServer1.Address=192.168.0.41 ##Zabbix服务器地址

ZabbixServer1.Port=10051 ##Zabbix服务器端口

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid

#frequency of item’s refresh

OrabbixDaemon.Sleep=300

#MaxThreadNumber should be >= than the number of your databases

OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list

DatabaseList=DB1,DB2,DB3 ##数据库列表,名称随便起

#Configuration of Connection pool

#if not specified Orabbis is going to use default values (hardcoded)

#Maximum number of active connection inside pool

DatabaseList.MaxActive=10

#The maximum number of milliseconds that the pool will wait

#(when there are no available connections) for a connection to be
returned

#before throwing an exception, or <= 0 to wait indefinitely.

DatabaseList.MaxWait=100

DatabaseList.MaxIdle=1

#define here your connection string for each database

DB1.Url=jdbc:oracle:thin:@192.168.0.31:1521:test1 ##数据库连接串

DB1.User=zabbix ##监督检查数据库用户名

DB1.Password=welcome1 ##监察数据库口令

封存配置文件,然后重启orabbix。

导入模板

在orabbix的软件包里面有4各模板文件,导入下边途中那个模板文件就足以了,包含了任何兼具模板文件的内容。

图片 4

Orabbix不足

开端测试,感觉orabbix有2点分明缺陷:

1.
被监督数据库信息要每种写进配置文件,尽管数据库个数相比较多,管理会比较费心

2.
被监控数据库的账号信息是写在部署文件中,而且口令是当面存款和储蓄,有十分大的安全隐患

  1. 对RAC的支撑依然很初级
自定义SQL检查

Orabbix提供了表空间的监督,监察和控制项对应的SQL:

tbl_space.Query=SELECT * FROM ( \

select ‘- Tablespace ->’,t.tablespace_name ktablespace, \

‘- Type->’,substr(t.contents, 1, 1) tipo, \

‘- Used(MB)->’,trunc((d.tbs_size-nvl(s.free_space, 0))/1024/1024)
ktbs_em_uso, \

‘- ActualSize(MB)->’,trunc(d.tbs_size/1024/1024) ktbs_size, \

‘- MaxSize(MB)->’,trunc(d.tbs_maxsize/1024/1024) ktbs_maxsize, \

‘- FreeSpace(MB)->’,trunc(nvl(s.free_space, 0)/1024/1024)
kfree_space, \

‘- Space->’,trunc((d.tbs_maxsize – d.tbs_size + nvl(s.free_space,
0))/1024/1024) kspace, \

‘- Perc->’,decode(d.tbs_maxsize, 0, 0,
trunc((d.tbs_size-nvl(s.free_space, 0))*100/d.tbs_maxsize)) kperc \

from \

( select SUM(bytes) tbs_size, \

SUM(decode(sign(maxbytes – bytes), -1, bytes, maxbytes)) tbs_maxsize,
tablespace_name tablespace \

from ( select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes,
tablespace_name \

from dba_data_files \

union all \

select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
\

from dba_temp_files \

) \

group by tablespace_name \

) d, \

( select SUM(bytes) free_space, \

tablespace_name tablespace \

from dba_free_space \

group by tablespace_name \

) s, \

dba_tablespaces t \

where t.tablespace_name = d.tablespace(+) and \

t.tablespace_name = s.tablespace(+) \

order by 8) \

where kperc > 93 \

and tipo <>’T’ \

and tipo <>’U’

tbl_space.NoDataFound=none

那个SQL会重临93%满的表空间新闻,而相应那几个监察和控制项,orabbix也定义了触发器,因为监察和控制项的再次来到值是文件,而并未满意条件的笔录时回来字符串“none“,所以监控项对应的触发器会检查再次来到值开端是否none,倘诺不是,就报告警方,这样,用户除了收取预先警告音信,仍是能够从再次来到值的具体值中见到实际时哪个表空间快满了。

自然,超过59%时刻监察和控制项会重返none,所以我们鞭长莫及画出健康未满的表空间的空间占据时间曲线。唯有超越93%慢时,大家才领悟具体的占据情状。

一旦想征集并保存越多音信,就须求选用自定义查询,方法正是在query.props文件中参加你想检查的SQL,比如大家想了然毒空间新闻,就再说下SQL:

customtbl.Query=select ‘TBL:’||a.tablespace_name||’,’ TBL, \

‘Total Size:’||trunc(sum(a.tots) / 1024 / 1024, 2)||’,’ Tot_Size_mb,
\

‘Free MB:’||round(sum(a.sumb) / 1024 / 1024, 2)||’,’ Tot_Free_mb, \

‘PCT Free:’||round(sum(a.sumb) * 100 / sum(a.tots), 2)||’,’ Pct_Free,
\

‘Max Free MB:’||round(sum(a.largest) / 1024 / 1024, 2)||’,’
Max_Free_mb, \

‘Chunks Free:’||sum(a.chunks)||’,’ Chunks_Free \

from (select tablespace_name, \

0 tots, \

sum(bytes) sumb, \

max(bytes) largest, \

count(*) chunks \

from dba_free_space a \

group by tablespace_name \

union \

select tablespace_name, sum(bytes) tots, 0, 0, 0 \

from dba_data_files \

group by tablespace_name) a \

group by a.tablespace_name

customtbl.NoDataFound=none

然后在orabbix对应的模板中加上那些监察和控制项customtbl就足以了,上面时从最新数据菜单查看的SQL的回到结果:

图片 5

当然,大家要做尤其的辨析和浮现,就须要利用其余工具或许开发工具来做了,这一个就不是那篇小说商讨的限制了。

创造监察和控制用户及授权

CREATE USER ZABBIX

IDENTIFIED BY welcome1

DEFAULT TABLESPACE SYSTEM

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

REM 2 Roles for ZABBIX

GRANT CONNECT TO ZABBIX;

GRANT RESOURCE TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

REM 5 System Privileges for ZABBIX

GRANT SELECT ANY TABLE TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

GRANT UNLIMITED TABLESPACE TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

假如是11g数据库,执行下列语句:

exec dbms_network_acl_admin.create_acl(acl =>
‘resolve.xml’,description => ‘resolve acl’, principal =>’ZABBIX’,
is_grant => true, privilege => ‘resolve’);

exec dbms_network_acl_admin.assign_acl(acl => ‘resolve.xml’, host
=>’*’);

commit;

 

导入模板

在orabbix的软件包里面有4各模板文件,导入上边途中这几个模板文件就能够了,包含了别样兼具模板文件的内容。

图片 6

适用Orabbix

在zabbix界面上配置数据库监察和控制时,要小心,orabbix是把每种数据库都陈设成3个“主机”的,那块望着有点别扭,而且,注意在布局主机时,名称一定要和config.props文件中布署的数据库名称一致,比如作者那边正是DB1:

图片 7

前方说了,这么些“主机”的地址能够随便写,因为被监控的主机端不须要自然有agent,但是为了方便管理,作者认为依旧写上Oracle主机的地址相比较好。

概念了主机后,就足以适用模板中预订义的监督项、触发器和图片了。

譬如图片:

图片 8

图片 9

比如说最简便易行的自笔者批评数据库适用可用的触发器:

图片 10

自然,对应触发器的动作依然必要自个儿布署。

适用Orabbix

在zabbix界面上安顿数据库监察和控制时,要注意,orabbix是把种种数据库都布置成3个“主机”的,那块望着有点别扭,而且,注目的在于配备主机时,名称一定要和config.props文件中安排的数据库名称一致,比如自个儿这里就是DB1:

图片 11

前方说了,那个“主机”的位置能够不管写,因为被监督的主机端不必要肯定有agent,然而为了方便管理,作者认为照旧写上Oracle主机的地方相比较好。

概念了主机后,就足以适用模板中预订义的督察项、触发器和图表了。

比如说图片:

图片 12

图片 13

例如最简便易行的反省数据库适用可用的触发器:

图片 14

自然,对应触发器的动作还是必要团结配置。

相关文章