Показаны сообщения с ярлыком DB. Показать все сообщения
Показаны сообщения с ярлыком DB. Показать все сообщения

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.

24 января 2013 г.

Файлы базы данных Paradox и работа с ними используя PHP

Появилась необходимость подружить древние и мало-кем используемые файлы формата Paradox (*.px + *.db) с веб-приложением.

Попытка установить расширение PECL для работы с этими файлами на виртуальный Debian провалилась, не смотря на следование разным инструкциям, опубликованных добрыми людьми. Убил я на это час или два.

Наверное убил бы больше, если бы необходимость в этом веб-приложении не ушла в сторону, на время или навсегда. Но данные дернуть из файлов все же потребовалось, дабы проанализировать их хотя-бы визуально и стал я копать дальше.

Наткнулся на интересный инструмент под Linux-like системы — pxtools от некоего Jan Kneschke. С помощью него можно конвертировать вышеуказанные файлы в добрые SQL, CSV или XML, которые затем легко использовать, в том числе в разработке/работе веб-приложений.

Установка утилиты не вызвала никаких проблем:

wget http://jan.kneschke.de/assets/projects/pxtools/pxtools-0.0.20.tar.gz
tar xvfz pxtools-0.0.20.tar.gz
cd pxtools-0.0.20
./configure
make
make install

Чтобы убедиться в том, что наши файлы подходят для препарирования сим инструментом, можно выполнить команду:

pxinfo -f  /path/to/db/file.db

И достать данные, сохранив в формате MySQL:

pxsqldump -d mysql -f /path/to/db/file.db > /path/to/saving/file.sql

Или csv:

pxcsvdump -f /path/to/db/file.db > /path/to/saving/file.csv

Конечно-же все это дело можно теперь автоматизировать и обрабатывать как угодно много файлов  — работает быстро, в т.ч. используя PHP.