Подключение Php к Oracle

Процесс подключения разбивается на 2 больших этапа:

  1. Настройка PL/SQL Developer
  2. Настройка OpenServer

Настройка PL/SQL Developer

PL/SQL Developer – это очень популярный редактор\просмотр баз для Oracle (для МуSQL аналог по функционалу PhpMyAdmin)

Я использовал PL/SQL Developer 10.0.3 (ищем на всех торрентах страны).

Хоть у меня стоит и Windows x64, но все модули, клиенты и т.д. нужно качать только для версии x32

Чтобы получить доступ к базе Oracle 10.2.0.5.0 по адресу 192.168.1.10 необходимо установить библиотеки подключения Oracle Instant Client. А точнее Instant Client for Microsoft Windows (32-bit)

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html (Параллельно проходим миниквест под названием регистрация на сайте Оракла 🙂 )

Я скачал клиентские библиотеки и распаковал в папку c:\instantclient_12_1_2  (это важная папка запомните её)

В переменных системы (Компьютер-> (Правая кнопка мыши)Свойства системы -> Дополнительные параметры системы->Дополнительно->Переменные среды)

прописать 3 переменных:

ORACLE_HOME  путь до папки с клиентом оракла

TNS_ADMIN - путь до файла tnsnames.ora

NLS_LANG кодировка для подключения к базе AMERICAN_AMERICA.AL32UTF8 или RUSSIAN_CIS.CL8MSWIN1251 (зависит от настроек конкретной базы) (если ошибётесь вместо русских букв будут крякозябры 🙂 )

и добавить путь к переменной PATH

Подключение Php к Oracle

Подключение Php к Oracle

Положить файл tnsnames.ora  в папку клиента оракла c:\instantclient_12_1_2\ следующего содержания

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

 

Напрямую прописать путь до клиента оракла в PL/SQL Developer

Подключение Php к Oracle

Настроить соединение так

Подключение Php к Oracle

Если всё верно настроили подключаемся к базе и выполняем запросы.

Настройка OpenServer

За основу взят вот этот мануал http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html

Я использую следующие настройки OpenServer

Подключение Php к Oracle

В файле c:\OpenServer\userdata\config\path.txt пишем c:\instantclient_12_1_2
В файле c:\OpenServer\modules\php\PHP-5.6\php.ini
раскомментируем строку

extension=php_oci8_12c.dll
Перезапускаем OpenServer.
Всё!

Смотрим phpinfo

Ищем

OCI8 Supportenabled

Если находим всё хорошо.

Создаем php-файл для проверки

<?php
if ($c=OCILogon("hr", "oracle", "//192.168.1.10:1521/orcl"))
/* Логин\пароль "по вкусу" */
{
  echo "Successfully connected to Oracle.\n";
  OCILogoff($c);
} else {
  $err = OCIError();
  echo "Oracle Connect Error " . $err[text];
}

или

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$conn = oci_connect('hr', 'oracle', "//192.168.1.10:1521/orcl");
/* Логин\пароль "по вкусу" */
$stid = oci_parse($conn, 'select * from jobs');
oci_execute($stid);
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "  <td>".($item !== null ? htmlspecialchars($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Подключение Php к Oracle

5 комментариев “Подключение Php к Oracle”

  1. Маргарита
    Маргарита:

    Здравствуйте! This performs the same query with different prefetch sizes. Prefetching is a form of internal row buffering. The number of rows in the buffer is the prefetch value. The larger the prefetch value, the fewer the number of physical database access are needed to return all data to PHP, because each underlying physical request to the database returns more than one row. This can help improve performance. PHP code does not need to change to handle different prefetch sizes. The buffering is handled by Oracle code.

Добавить комментарий