13 Oracle 数据库设置

概述

本节包含创建Oracle数据库以及配置数据库与Zabbix server、proxy和前端之间连接的说明。

数据库创建

我们假设已存在一个密码为passwordzabbix数据库用户, 且该用户拥有在位于主机 Oracle数据库服务器上的ORCL服务中创建objects的权限。Zabbix要求数据库使用Unicode字符集和UTF8国家字符集。请检查当前设置:

sqlplus> select parameter,value from v$nls_parameters where parameter='NLS_CHARACTERSET' or parameter='NLS_NCHAR_CHARACTERSET';

现在准备数据库:

cd /path/to/zabbix-sources/database/oracle
       sqlplus zabbix/password@oracle_host/ORCL
       sqlplus> @schema.sql
       # 如果正在为Zabbix proxy创建数据库,请在此处停止
       sqlplus> @images.sql
       sqlplus> @data.sql

为获得最佳性能,请将初始化参数CURSOR_SHARING设置为FORCE。

连接建立

Zabbix支持两种类型的连接标识符(连接方式):

  • Easy Connect(简易连接)
  • Net Service Name(网络服务名)

Zabbix server和Zabbix proxy的连接配置参数可在配置文件中设置。服务器和proxy的关键参数包括DBHostDBUserDBNameDBPassword。前端同样需要以下重要参数:$DB["SERVER"]$DB["PORT"]$DB["DATABASE"]$DB["USER"]$DB["PASSWORD"]

Zabbix使用以下连接string语法:

{DBUser/DBPassword[@<connect_identifier>]} 

<connect_identifier>可以指定为"Net Service Name"(网络服务名)或"Easy Connect"(简易连接)形式:

@[[//]主机[:Port]/<service_name> | <net_service_name>]

Easy Connect

Easy Connect 使用以下参数连接数据库:

  • 主机 - 数据库服务器计算机的主机名称或IP地址(配置文件中的DBHost参数)
  • 端口 - 数据库服务器监听端口(配置文件中的DBPort参数;若未设置则使用默认1521端口)
  • <service_name> - 要访问的数据库服务名(配置文件中的DBName参数)

示例:

server 或 proxy配置文件(zabbix_server.conf和zabbix_proxy.conf)中设置的数据库参数:

DBHost=localhost
       DBPort=1521
       DBUser=myusername
       DBName=ORCL
       DBPassword=mypassword

Zabbix建立连接时使用的string:

DBUser/DBPassword@DBHost:DBPort/DBName

在Zabbix前端安装过程中,于安装向导的配置数据库连接步骤设置对应参数:

  • 数据库主机:localhost
  • 数据库端口:1521
  • 数据库名称:ORCL
  • 用户:myusername
  • 密码:mypassword

这些参数也可在前端配置文件(zabbix.conf.php)中设置:

$DB["TYPE"]                     = 'ORACLE';
       $DB["SERVER"]                   = 'localhost';
       $DB["PORT"]             = '1521';
       $DB["DATABASE"]                 = 'ORCL';
       $DB["USER"]                     = 'myusername';
       $DB["PASSWORD"]                 = 'mypassword';

网络服务名称

自Zabbix 5.4.0版本起,可通过网络服务名连接Oracle数据库。

<net_service_name>是解析为连接描述符的简单服务名称。要使用该服务名建立连接,需在数据库服务器和客户端系统的tnsnames.ora文件中定义此服务名。确保连接成功的最简单方法是在TNS_ADMIN环境变量中指定tnsnames.ora文件位置,其默认路径为:

$ORACLE_HOME/network/admin/

tnsnames.ora文件示例:

ORCL =
         (DESCRIPTION =
           (ADDRESS = (PROTOCOL = TCP)(主机 = localhost)(PORT = 1521))
           (CONNECT_DATA =
             (SERVER = DEDICATED)
             (SERVICE_NAME = ORCL)
           )
         )

配置"网络服务名"连接方式的参数选项:

  • 置空DBHost参数并按常规设置DBName:
DBHost=
       DBName=ORCL
  • Set both parameters and leave both empty:
DBHost=
       DBName=

第二种情况需设置TWO_TASK环境变量,该变量指定默认的远程Oracle服务(服务名)。定义此变量后,连接器将通过接受连接请求的Oracle监听器连接指定数据库。此变量仅适用于Linux和UNIX系统,Windows系统应使用LOCAL环境变量。

示例:

使用网络服务名ORCL(默认端口)连接数据库。server 或 proxy配置文件(zabbix_server.conf和zabbix_proxy.conf)中的参数设置:

DBHost=
       #DBPort=
       DBUser=myusername
       DBName=ORCL
       DBPassword=mypassword

Zabbix前端安装时,在安装向导的配置数据库连接步骤设置对应参数: - 数据库主机: - 数据库端口:0 - 数据库名称:ORCL - 用户名:myusername - 密码:mypassword

或在前端配置文件(zabbix.conf.php)中设置:

$DB["TYPE"]                     = 'ORACLE';
       $DB["SERVER"]                   = '';
       $DB["PORT"]           = '0';
       $DB["DATABASE"]                 = 'ORCL';
       $DB["USER"]                     = 'myusername';
       $DB["PASSWORD"]                 = 'mypassword';

Zabbix建立连接时使用的string格式:

DBUser/DBPassword@ORCL

已知 问题

为提高性能,您可以将字段类型从nclob转换为nvarchar2,详见oracle-配置同步缓慢