一、Oracle 监控指标
Oracle数据库常见性能指标主要有:当前登录数、非阻塞锁数、当前死锁数、阻塞锁数、当前锁数、会话数等内容,如下图所示。
注意:以下是 Oracle 监控所需要的指标,具体根据需要监控哪些、超阈值而定。
1.1 新建主机群组
1.2 新建模板
1.3 创建主机
1.1 新建主机群组
1.1.1 主机群组 —> 创建主机组
1.1.2 新建一个主机组 My_Oracle
1.2 新建模板
注意:A_Oracle模板是没监控项和触发器的,如何创建下面会说到
1.2.1 模板 —> 创建模板
1.2.2 模板名称为:A_Oracle、模板组选择 Templates
1.3 创建主机
1.3.1 主机 —> 创建主机
1.3.2 主机名称为:TESTDB_192.168.111.139、主机群组选择 My_Oracle、添加接口选择Agent
1.3.3 添加宏
{$ORACLE.DSN} ---- > 对应odbc.ini文件中的DSN
{$ORACLE.USER} ---- > 监控用户
{$ORACLE.PASSWORD} ---- > 监控用户密码
{$ORACLE.PORT} ---- > 数据库端口
二、创建监控项、触发器
2.1 在A_Oracle模板下创建监控项 :Oracle 阻塞会话数、触发器:Oracle 阻塞会话数大于50
2.1.1 模板 —> 监控项 —> 创建监控项
2.1.2 填入相应的信息
名称:Oracle 阻塞会话数
类型:数据库监控
键值:db.odbc.select[db_lock,"{
$ORACLE.DSN}"]
用户名称:{
$ORACLE.USER}
密码:{
$ORACLE.PASSWORD}
SQL查询:select count(1) from (select inst_id, DECODE(request,0,' Holder: ','Waiter: ')||sid Xmode, id1, id2, lmode, request, type from gV$LOCK where (id1, id2, type) in (select id1, id2, type from gV$LOCK where request>0) order by request,id1);
2.1.3 创建触发器:模板 —> 选择新建的模板 A_Oracle —> 触发器 —> 创建触发器
2.1.4 填入相应的信息
名称:Oracle 阻塞会话数大于 50
表达式:last(/A_Oracle/db.odbc.select[db_lock,"{
$ORACLE.DSN}"])>50
2.1.5 查看是否可用
可以获取到值则可用
2.2 在A_Oracle模板下创建监控项 :Oracle 长事务数
2.2.1 模板 —> 监控项 —> 创建监控项
2.2.2 填入相应的信息
名称:Oracle 长事务数
类型:数据监控
键值:db.odbc.select[oracle_long_query,"{
$ORACLE.DSN}"]
用户名称:{
$ORACLE.USER}
用户密码:{
$ORACLE.PASSWORD}
sql查询:select count(1) from gv$session a, gv$sql b where a.inst_id=b.inst_id and a.sql_address=b.address and a.sql_hash_value=b.hash_value and a.sql_child_number=b.child_number and a.status='ACTIVE' and a.type='USER' and (sysdate-a.SQL_EXEC_START)*24*60>10
2.2.3 创建触发器:模板 —> 选择新建的模板 A_Oracle —> 触发器 —> 创建触发器
2.2.4 填入相应的信息
名称:Oracle 存在超过 10 分钟的长事务
表达式:last(/TESTDB_192.168.111.139/db.odbc.select[oracle_long_query,"{
$ORACLE.DSN}"])>0
2.2.5 查看是否可用
可以获取到值则可用
2.3 在A_Oracle模板下创建监控项 :Oracle 表空间使用率超过90%且剩余空间小于50G
2.3.1 模板 —> 监控项 —> 创建监控项
2.3.2 填入相应的信息
名称:Oracle 表空间使用率超过90%且剩余空间小于50G
类型:数据库监控
键值:db.odbc.select[db_tablespace_90,"{
$ORACLE.DSN}"]
SQL查询:select count(*) count from (select tablespace_name , sum(bytes)/1024/1024 free from dba_free_space where tablespace_name not like '%UNDO%' group by tablespace_name) a,(select tablespace_name , sum(bytes)/1024/1024 total ,AUTOEXTENSIBLE from dba_data_files where tablespace_name not like '%UNDO%' group by tablespace_name,AUTOEXTENSIBLE) b where a.tablespace_name(+)=b.tablespace_name and round((b.total-a.free)/b.total*100,2) > 90 and a.free < 51200
2.3.3 创建触发器:模板 —> 选择新建的模板 A_Oracle —> 触发器 —> 创建触发器
2.3.4 填入相应的信息
名称:Oracle 表空间使用率超过 90% 且剩余空间小于 50G
表达式:last(/A_Oracle/db.odbc.select[db_tablespace_90,"{
$ORACLE.DSN}"])>0
2.3.5 查看是否可用
获取到值则可用
2.4 在A_Oracle模板下创建监控项 :Oracle 表空间使用率超过75%且剩余空间小于200G
2.4.1 模板 —> 监控项 —> 创建监控项
2.4.2 填入相应的信息
名称:Oracle 表空间使用率超过75%且剩余空间小于200G
类型:数据库监控
键值:db.odbc.select[db_tablespace,"{
$ORACLE.DSN}"]
用户名称:{
$ORACLE.USER}
密码:{
$ORACLE.PASSWORD}
sql查询:select count(*) count from (select tablespace_name , sum(bytes)/1024/1024 free from dba_free_space where tablespace_name not like '%UNDO%' group by tablespace_name) a,(select tablespace_name , sum