14 Oracle数据库配置

概述

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

自 Zabbix 7.0 起,对 Oracle DB 的支持已被弃用。

数据库创建

我们假设存在一个 zabbix 数据库用户,其密码为 password,并且该用户有权限访问位于 主机 Oracle 数据库服务器上的 ORCL 服务中的 create 数据库 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> 可以以“网络服务名称”或“简易连接”的形式指定。

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

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

  • 主机 - 主机 数据库服务器计算机的名称或IP地址 (配置文件中的 DBHost 参数)。
  • 端口 - 数据库服务器上的监听端口(DBPort 参数 在配置文件中;如果未设置,则将使用默认的1521端口 使用量)。
  • <service_name> - 你想要监控的数据库的服务名称 在配置文件中指定的数据库名(DBName参数)。

示例

数据库参数在 server 或 proxy 配置中设置 file (zabbix_server.conf 和 zabbix_proxy.conf):

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

连接 string 用于 Zabbix 建立连接:

数据库用户/数据库密码@数据库主机:数据库端口/数据库名称

在安装 Zabbix 前端时,设置相应的参数。 配置数据库连接步骤的设置向导:

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

或者,这些参数也可以在前端配置中进行设置 file(zabbix.conf.php):

`$DB["TYPE"]                     = 'oracle数据库';`
       `$DB["SERVER"]`                   = 'localhost';
       `$DB["PORT"]             = '1521';`
       `$DB["DATABASE"]` 的值设置为 `'ORCL'`
       `$DB["USER"]`                     = 'myusername';
       $DB["PASSWORD"]                 = 'mypassword';
网络服务名称

可以通过使用网络服务名称(net service name)连接到Oracle。

<网络服务名称> 是解析为连接描述符的服务的简单名称。

为了使用服务名称创建连接,必须在数据库服务器和客户端系统上的tnsnames.ora file 中定义此服务名称。确保连接成功的最简单方法是将tnsnames.ora file 的位置定义在TNS_ADMIN环境变量中。tnsnames.ora file 的默认位置是:

$ORACLE_HOME/network/admin/

一个简单的tnsnames.ora file 示例:

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:
{=html}
       <!-- -->
DBHost=
       DBName=

在第二种情况下,必须设置TWO_TASK环境变量。它指定默认的远程Oracle服务(服务名称)。当定义此变量时,连接器通过使用接受连接请求的Oracle监听器连接到指定的数据库。此变量仅适用于Linux和UNIX。对于Microsoft Windows,请使用LOCAL环境变量。

示例

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

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

在Zabbix前端安装期间,在安装向导的“配置数据库连接”步骤中设置相应的参数:

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

或者,可以在前端配置file(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-配置同步缓慢