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, см. известные проблемы.