#14 Oracle 数据库设置

概述

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

自 Zabbix 7.0 起,不再支持 Oracle DB。

数据库创建

假设有一个密码为 passwordzabbix 数据库用户,并且有权在 Oracle 数据库上的 ORCL 服务中创建数据库对象。Zabbix 需要一个 Unicode 数据库字符集和一个 UTF8字符集。检查当前的设置:

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

现在准备数据库:

shell> cd /path/to/zabbix-sources/database/oracle
       shell> sqlplus zabbix/password@oracle_host/ORCL
       sqlplus> @schema.sql
       # stop here if you are creating database for Zabbix proxy
       sqlplus> @images.sql
       sqlplus> @data.sql

请设置初始化参数以达到最佳的性能 CURSOR_SHARING=FORCE

连接设置

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

  • Easy Connect
  • Net Service Name

Zabbix server 和 Zabbix proxy的连接配置参数可以在配置文件中设置。server和proxy的重要参数是 DBHost, DBUser, DBNameDBPassword。相同的参数对于前端很重要: $DB["SERVER"], $DB["PORT"], $DB["DATABASE"], $DB["USER"], $DB["PASSWORD"].

Zabbix 使用以下连接字符串语法:

{DBUser/DBPassword[@<connect_identifier>]} 

<connect_identifier> 可以以以下形式指定 "Net Service Name" 或 "Easy Connect".

@[[//]Host[:Port]/<service_name> | <net_service_name>]

Easy Connect

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

  • Host - 数据库服务器的主机名或 IP 地址(配置文件中的 DBHost 参数)。
  • Port - 数据库服务器上的监听端口(配置文件中的 DBPort 参数;如果未设置,将使用默认的 1521 端口)
  • <service_name> - 要访问数据库的服务名称(配置文件中的 DBName 参数)。

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

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

Zabbix 用于建立连接的字符串:

DBUser/DBPassword@DBHost:DBPort/DBName

在 Zabbix 前端安装过程中,在安装向导的Configure DB connection步骤中设置相应的参数:

  • Database host: localhost
  • Database port: 1521
  • Database name: ORCL
  • User: myusername
  • Password: mypassword

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

$DB["TYPE"]                     = 'ORACLE';
       $DB["SERVER"]                   = 'localhost';
       $DB["PORT"]             = '1521';
       $DB["DATABASE"]                 = 'ORCL';
       $DB["USER"]                     = 'myusername';
       $DB["PASSWORD"]                 = 'mypassword';
网络服务名称

可以使用网络服务名称连接到 Oracle。

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

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

$ORACLE_HOME/network/admin/

一个简单的 tnsnames.ora 文件示例:

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

要设置“Net Service Name”连接方法的配置参数,请使用以下选项之一:

  • 设置一个空参数 DBHost 并像往常一样设置 DBName:

DBHost= DBName=ORCL

  • 设置两个参数并将两个参数都留空:

DBHost= DBName=

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

示例

使用设置为 ORCL 的 Net Service Name 和默认端口连接到数据库。在server 或proxy 配置文件(zabbix_server.conf 和 zabbix_proxy.conf)中设置的数据库参数:

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

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

  • 数据库主机:
  • 数据库端口: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 用于建立连接的连接字符串:

DBUser/DBPassword@ORCL

已知问题

为了提高性能,您可以将字段类型从 nclob 转换为 nvarchar2,请参阅已知问题