Oracle Database Monitoring with Orabbix Integration

First, create a dedicated monitoring user in the Orracle database:

CREATE USER DB_MONITOR
IDENTIFIED BY <YOUR_PASSWORD>
DEFAULT TABLESPACE SYSTEM
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;

-- Grant necessary roles
GRANT CONNECT TO DB_MONITOR;
GRANT RESOURCE TO DB_MONITOR;
ALTER USER DB_MONITOR DEFAULT ROLE ALL;

-- System privileges for monitoring
GRANT SELECT ANY TABLE TO DB_MONITOR;
GRANT CREATE SESSION TO DB_MONITOR;
GRANT SELECT ANY DICTIONARY TO DB_MONITOR;
GRANT UNLIMITED TABLESPACE TO DB_MONITOR;

For minimal privilege configuration:

CREATE USER DB_MONITOR
IDENTIFIED BY <YOUR_PASSWORD>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;

GRANT ALTER SESSION TO DB_MONITOR;
GRANT CREATE SESSION TO DB_MONITOR;
GRANT CONNECT TO DB_MONITOR;
ALTER USER DB_MONITOR DEFAULT ROLE ALL;

-- Specific table access grants
GRANT SELECT ON V_$INSTANCE TO DB_MONITOR;
GRANT SELECT ON DBA_USERS TO DB_MONITOR;
GRANT SELECT ON V_$LOG_HISTORY TO DB_MONITOR;
GRANT SELECT ON V_$PARAMETER TO DB_MONITOR;
GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO DB_MONITOR;
GRANT SELECT ON V_$LOCK TO DB_MONITOR;
GRANT SELECT ON DBA_REGISTRY TO DB_MONITOR;
GRANT SELECT ON V_$LIBRARYCACHE TO DB_MONITOR;
GRANT SELECT ON V_$SYSSTAT TO DB_MONITOR;
GRANT SELECT ON V_$LATCH TO DB_MONITOR;
GRANT SELECT ON V_$PGASTAT TO DB_MONITOR;
GRANT SELECT ON V_$SGASTAT TO DB_MONITOR;
GRANT SELECT ON V_$PROCESS TO DB_MONITOR;
GRANT SELECT ON DBA_DATA_FILES TO DB_MONITOR;
GRANT SELECT ON DBA_TEMP_FILES TO DB_MONITOR;
GRANT SELECT ON DBA_FREE_SPACE TO DB_MONITOR;
GRANT SELECT ON V_$SYSTEM_EVENT TO DB_MONITOR;

For Oracle 11g databases, execute addtiional network ACL commands:

BEGIN
    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
        acl => 'monitor_acl.xml',
        description => 'Monitoring ACL',
        principal => 'DB_MONITOR',
        is_grant => true,
        privilege => 'resolve'
    );
    
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
        acl => 'monitor_acl.xml',
        host => '*'
    );
    COMMIT;
END;
/

Verifying Local Connectivity

Test network resolution capability:

SELECT UTL_INADDR.GET_HOST_NAME('127.0.0.1') FROM DUAL;

Importing Orabbix Templates

Import the template files from the orabbix template directory into your Zabbix server.

Configuring Orabbix Server

Deploy orabbix on the monitoring server:

/etc/init.d/orabbix
/opt/orabbix/run.sh

Update the hosts file with server information:

192.168.205.156 monitoring-server-01

Configure the orabbix properties file:

vi /opt/orabbix/conf/config.props

# Zabbix server configuration
ZabbixServerList=monitoring-server-01
monitoring-server-01.Address=192.168.xxx.xxx
monitoring-server-01.Port=10051

# Database monitoring targets
DatabaseList=prod-db-01,test-db-02
test-db-02.Url=jdbc:oracle:thin:@192.168.xxx.xxx:1521:orcl
test-db-02.User=db_monitor
test-db-02.Password=db_monitor
test-db-02.MaxActive=10
test-db-02.MaxWait=100
test-db-02.MaxIdle=1
test-db-02.QueryListFile=./conf/query.props

Start and stop the orabbix service:

/etc/init.d/orabbix start
/etc/init.d/orabbix stop

Client Configuration

Install and configure Zabbix Agent 2 on monitored hosts:

rpm -ivh zabbix-agent2-6.0.4-1.el7.x86_64.rpm

Edit the agent configuration file:

vi /etc/zabbix/zabbix_agent2.conf
Server=monitoring-server-01
ListenPort=10050

Restart the agent service:

systemctl restart zabbix-agent2.service

Tags: Oracle Database Monitoring Orabbix Zabbix JDBC

Posted on Wed, 05 Aug 2026 16:21:04 +0000 by aaron_mason