26 октября 2013 г.

Установка Oracle Instant Client на Linux, привязка к PHP. Без заморочек.


Клиент устанавливаем не самый свежий — 11.2 — используется для нормальной работы со старыми базами Oracle (версии 9). Последний на данный момент релиз 12.1 их уже не поддерживает, но данная инструкция позволяет установить и его.

Сразу ставим эту библиотеку:
aptitude install libaio1

Качаем Oracle Instant Client и прочие необходимые компоненты с сайта.

Копируем из zip архивов содержимое в
/opt/oracle/

В моем случае получилось
/opt/oracle/instantclient_11_2/

Далее по порядку:
TNS_ADMIN=/opt/oracle/network
LD_LIBRARY_PATH=/opt/oracle/
instantclient_11_2/
ORACLE_HOME=/opt/oracle
instantclient_11_2/
PATH=$PATH:$ORACLE_HOME/
export TNS_ADMIN ORACLE_HOME LD_LIBRARY_PATH PATH


Как показывает практика, команды показанные выше, необходимы для работы SQLPlus, но не обязательны для PHP. Еще нужно найти способ, чтобы система эти пути запомнила навсегда, иначе после перезагрузки вам придется прописывать пути заново.

Далее создаем папку network — дочернюю для ORACLE_HOME 

В моем случае:
/opt/oracle/instantclient_11_2/network/

В ней создаем файл

tnsnames.ora 

Содержимое файла в моем случае такое:
NAMEFORUSE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SERVICE_NAME)
    )
  )
В большинстве случаев вам нужно поменять только те значения, что выделены жирным: имя для подключения к базе (используется, например, в PHP), IP адрес сервера, где находится база данных и имя базы данных (сервисное имя).

Также требуется создать папку admin в /opt/oracle/instantclient_11_2/network/ и разместить в ней созданный файл tnsnames.ora 

Создадим файл
/etc/ld.so.conf.d/oracle.conf   
пропишем  путь
/opt/oracle/instantclient_11_2/

Выполним команду:
ldconfig

Привязываем к PHP. Я всегда использую удобный пакет для развертывания Apache, PHP, MySQL — LAMPP.

После установки, вся конфигурация для работы с базами Orcale сводится к вводу команды:
/opt/lampp/lampp oci8
Система попросит указать путь к библиотекам Oracle, в моем случае я ввел:
/opt/oracle/instantclient_11_2/

Все готово для работы, теперь можно соединяться с базами данных, используя PHP.