12. Настройка базы данных Oracle
Обзор
В этом разделе содержатся инструкции по созданию базы данных Oracle и настройке соединений между базой данных и Zabbix сервером, прокси и веб-интерфейсом.
Создание базы данных
Мы предполагаем, что существует пользователь базы данных zabbix с паролем password, и он имеет разрешения на создание объектов базы данных в службе ORCL, расположенной на сервере хост базы данных Oracle. Zabbix требует базу данных с набором символов Unicode и кодировкой UTF8. Проверить текущие настройки:
sqlplus> select parameter,value from v$nls_parameters where parameter='NLS_CHARACTERSET' or parameter='NLS_NCHAR_CHARACTERSET';
Теперь подготовьте базу данных:
cd /путь/к/исходникам-zabbix/database/oracle
sqlplus zabbix/password@oracle_host/ORCL
sqlplus> @schema.sql
# остановитесь здесь, если вы создаёте базу данных для Zabbix прокси
sqlplus> @images.sql
sqlplus> @data.sql
Пожалуйста, установите параметр инициализации CURSOR_SHARING=FORCE для лучшей производительности.
Настройка соединения
Zabbix поддерживает два вида идентификаторов соединений (методов подключения):
- Лёгкое подключение (Easy Connect)
- Имя сетевой службы (Net Service Name)
Параметры настроек соединения для Zabbix сервера и Zabbix прокси могут быть заданы в их файлах конфигурации. Важнейшими параметрами для сервера и прокси являются DBHost, DBUser, DBName и DBPassword. Те же параметры являются важными и для веб-интерфейса: $DB["SERVER"], $DB["PORT"], $DB["DATABASE"], $DB["USER"], $DB["PASSWORD"].
Zabbix использует следующий синтактис строки подключения (connection string):
{DBUser/DBPassword[@<connect_identifier>]}
<connect_identifier> может быть указан либо в формате "Net Service Name", либо "Easy Connect".
@[[//]Host[:Port]/<service_name> | <net_service_name>]
Лёгкое подключение (Easy Connect)
Лёгкое подключение использует следующие параметры для подключения к базе данных:
- Host — имя хоста или IP адрес компьютера с сервером базы данных (параметр DBHost в файле конфигурации).
- Port — порт, открытый на сервере баз данных (параметр DBPort в файле конфигурации; если не задан, то по умолчанию используется порт 1521).
- <service_name> — имя службы базы данных, к которой Вы хотите иметь доступ (параметр DBName в файле конфигурации).
Пример:
Параметры базы данных заданы в файле конфигурации сервера или прокси (zabbix_server.conf либо zabbix_proxy.conf):
DBHost=localhost
DBPort=1521
DBUser=myusername
DBName=ORCL
DBPassword=mypassword
Строка подключения, используемая Zabbix-ом, чтобы установить соединение:
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';
Имя сетевой службы (Net Service Name)
Начиная с версии Zabbix 5.4.0, возможно подключиться к Oracle, используя имя сетевой службы.
<net_service_name> — это простое имя для службы, которое раскрывается в дескриптор соединения.
Чтобы использовать имя службы для создания подключения, это имя службы должно быть определено в файле tnsnames.ora, расположенном как на сервере базы данных, так и на клиентской системе. Самый лёгкий способ убедиться, что соединение будет установлено успешно, — это определить местоположение файла tnsnames.ora в переменной окружения TNS_ADMIN. По умолчанию местоположение файла tnsnames.ora такое:
$ORACLE_HOME/network/admin/
Простой пример файла tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
Чтобы задать параметры конфигурации для метода подключения «Имя сетевой службы», используйте одну из следующих опций:
- Задайте параметр DBHost пустым, а параметр DBName — как обычно:
<!-- -->
DBHost=
DBName=ORCL
- Задайте оба параметра и оставьте их пустыми:
<!-- -->
DBHost=
DBName=
Во втором случае должна быть установлена переменная окружения TWO_TASK. Она указывает удалённую службу Oracle (имя службы) по умолчанию. Когда эта переменная определена, коннектор подключается к указанной базе, используя Oracle листенер (listener), принимающий запросы на соединения. Эта переменная используется только в Linux и UNIX. Для Microsoft Windows используйте переменную среды LOCAL.
Пример:
Подключиться к базе данных, используя имя сетевой службы, заданное как ORCL, и порт по умолчанию. Параметры базы данных задаются в файле конфигурации сервера или прокси (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-ом, чтобы установить соединение:
DBUser/DBPassword@ORCL
Известные проблемы
Чтобы повысить производительность, вы можете преобразовать типы полей из nclob в nvarchar2, см. известные проблемы.