Процесс подключения разбивается на 2 больших этапа:
- Настройка PL/SQL Developer
- Настройка 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
Положить файл 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
Настроить соединение так
Если всё верно настроили подключаемся к базе и выполняем запросы.
Настройка OpenServer
За основу взят вот этот мануал http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html
Я использую следующие настройки OpenServer
В файле 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 Support | enabled |
Если находим всё хорошо.
Создаем 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) : " ")."</td>\n"; } echo "</tr>\n"; } echo "</table>\n";
Пожалуйста, расскажите поподробнее..
А о чём конкретно?
Здравствуйте! 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.
Thanks!
Полностью разделяю Ваше мнение. В этом что-то есть и идея хорошая, поддерживаю.