[comment]: # ({526dbeba-710cea74})
# 13 Oracle 数据库设置

[comment]: # ({/526dbeba-710cea74})

[comment]: # ({c3411fd2-c3411fd2})
#### 概述

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

[comment]: # ({/c3411fd2-c3411fd2})

[comment]: # ({25ccb612-2fd36a67})
### 数据库创建

我们假设已存在一个密码为*password*的*zabbix*数据库用户
且该用户对位于*主机* 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
    # stop here if you are creating database for Zabbix proxy
    sqlplus> @images.sql
    sqlplus> @data.sql

::: notetip
为获得最佳性能，请将初始化参数
CURSOR\_SHARING设置为FORCE。

:::

[comment]: # ({/25ccb612-2fd36a67})

[comment]: # ({db4ecc98-db4ecc98})
### 连接建立

Zabbix支持两种类型的连接标识符（连接方式）：

-   Easy Connect
-   Net Service Name

Zabbix server和Zabbix proxy的连接配置参数可在配置文件中设置。服务器和proxy的重要参数包括*DBHost*、*DBUser*、*DBName*和*DBPassword*。前端同样重要的参数有：*$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>]

[comment]: # ({/db4ecc98-db4ecc98})

[comment]: # ({ed80a373-ed80a373})
#### Easy Connect

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

-   *主机* - 数据库服务器计算机的主机名称或IP地址
    (配置中的DBHost参数file)。
-   *Port* - 数据库服务器上的监听端口（DBPort参数）
    在配置 file 中；如果未设置，将使用默认的1521端口
    已使用).
-   <service\_name> - 您想要连接的数据库服务名称

    access (DBName parameter in the configuration file).

**示例:**

在server 或 proxy配置file中设置的数据库参数
(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
-   Password: mypassword

![](../../../../assets/en/manual/appendix/install/oracle_easy_connect.png){width="600"}

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

    
$DB["TYPE"]                     = 'oracle数据库';
    $DB["SERVER"]                   = 'localhost';
    $DB["PORT"]             = '1521';
    $DB["DATABASE"]                 = 'ORCL';
    $DB["USER"]                     = 'myusername';
    $DB["PASSWORD"]                 = 'mypassword';

[comment]: # ({/ed80a373-ed80a373})

[comment]: # ({9f0ccdfd-fe8fa72a})
#### 网络服务名称

自Zabbix 5.4.0起，可通过net方式连接Oracle数据库
服务名称

<net\_service\_name> 是一个用于解析服务的简单名称
到一个连接描述符。

为了使用服务名称创建连接，该服务
必须在位于两端的tnsnames.ora file中定义名称
数据库服务器与客户端系统。确保的最简单方法
连接成功的关键在于定义位置
tnsnames.ora file 位于 TNS\_ADMIN 环境变量中。默认
tnsnames.ora file 的位置是:

    $ORACLE_HOME/network/admin/

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

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

为"Net Service Name"连接设置配置参数
方法，使用以下选项之一：

-    设置一个空参数DBHost并正常设置DBName:

```{=html}
<!-- -->
```
DBHost=
    DBName=ORCL

-  将两个参数都设置为空值并保留为空:

```{=html}
<!-- -->
```
DBHost=
    DBName=
数据库名称=

在第二种情况下，必须设置TWO\_TASK环境变量。
指定默认的远程Oracle服务（服务名称）。当此
变量已定义时，连接器将连接到指定的数据库
使用接受连接请求的Oracle监听器。该变量
仅适用于Linux和UNIX系统。请使用LOCAL环境变量
适用于Microsoft Windows。

**示例:**

使用Net Service Name设置为ORCL并默认连接到数据库
port. 在server 或 proxy配置file中设置的数据库参数
(zabbix\_server.conf 和 zabbix\_proxy.conf):

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

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

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

![](../../../../assets/en/manual/appendix/install/oracle_service_name.png){width="600"}

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

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

Zabbix用于建立连接的连接string

    
数据库用户/数据库密码@ORCL

[comment]: # ({/9f0ccdfd-fe8fa72a})

[comment]: # ({74be0d8b-b56155a3})
#### 已知 问题

为提高性能，您可以将字段类型从*nclob*转换为*nvarchar2*，参见[oracle-配置同步缓慢](/manual/installation/known_issues#oracle-配置同步缓慢)。

[comment]: # ({/74be0d8b-b56155a3})
