本节包含有关创建 Oracle 数据库以及配置数据库与 Zabbix server、proxy 和 agent 之间的连接的说明。
假设有一个密码为 password的 zabbix 数据库用户,并且有权在 Oracle 数据库上的 ORCL 服务中创建数据库对象。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
# stop here if you are creating database for Zabbix proxy
sqlplus> @images.sql
sqlplus> @data.sql
请设置初始化参数以达到最佳的性能。 CURSOR_SHARING=FORCE
Zabbix支持两种类型的连接标识符(连接方法):
Zabbix server 和 Zabbix proxy的连接配置参数可以在配置文件中设置。server和proxy的重要参数是 DBHost, DBUser, DBName 和DBPassword。相同的参数对于前端很重要: $DB["SERVER"], $DB["PORT"], $DB["DATABASE"], $DB["USER"], $DB["PASSWORD"].
Zabbix 使用以下连接字符串语法:
<connect_identifier> 可以以以下形式指定 "Net Service Name" 或 "Easy Connect".
Easy Connect 使用以下参数连接到数据库:
例: 在server 或 proxy 配置文件中设置的数据库参数 (zabbix_server.conf and zabbix_proxy.conf):
Zabbix 用于建立连接的字符串:
在 Zabbix 前端安装过程中,在安装向导的Configure DB connection步骤中设置相应的参数:
或者,可以在前端配置文件 (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开始,可以使用net service name连接到Oracle。
<net_service_name> 是解析为连接描述符服务的简单名称。
为了使用服务名称创建连接,必须在位于数据库服务器和客户端系统上的 tnsnames.ora 文件中定义此服务名称。确保连接成功的最简单方法是在TNS_ADMIN环境变量中定义 oftnsnames.ora 文件的位置。tnsnames.ora 文件的默认位置为:
一个简单的 tnsnames.ora 文件示例:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
若要设置"Net Service Name"连接方法,请使用下列选项:
在第二种情况下,必须设置TWO_TAKS环境变量。它指定默认的远程 Oracle 服务(服务名称)。定义此变量后,连接器将使用接受连接请求的 Oracle 监听连接到指定的数据库。此变量仅在 Linux 和 UNIX 上使用。 Microsoft Windows 使用 LOCAL 环境变量
例:
使用设置为 ORCL 和默认端口的 Net Service Name 连接到数据库。在 server 或 proxy 配置文件(zabbix_server.conf 和 zabbix_proxy.conf) 中设置的数据库参数:
在 Zabbix 前端安装过程中,在安装向导的Configure DB connection步骤中设置相应的参数:
或者,可以在前端配置文件中设置这些参数 (zabbix.conf.php):
$DB["TYPE"] = 'ORACLE';
$DB["SERVER"] = '';
$DB["PORT"] = '0';
$DB["DATABASE"] = 'ORCL';
$DB["USER"] = 'myusername';
$DB["PASSWORD"] = 'mypassword';
Zabbix 用于建立连接的字符串:
为了提高性能,您可以将字段类型从 nclob 转换为 nvarchar2,请参阅已知问题。