Подключение к базе данных Oracle 18c с помощью OCI8 - PullRequest
0 голосов
/ 25 января 2019

Я настроил базу данных Oracle 18c и пытаюсь подключиться к ней из php-файла, но когда я запускаю простой тест соединения, я получаю сообщение об ошибке сервера, где не удается установить соединение. Я запустил print_r(getLoaded_extensions()); и из выходного массива показывает, что в настоящее время я не использую расширение oci8, как я хотел. Мой файл теста соединения содержит следующее

#!/usr/local/bin/php
<?php
putenv("ORACLE_HOME=/usr/lib/oracle/18.3/client64")

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.*.**)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;

    if($c = OCILogon("username", "password", $db))
    {
        echo "Successfully connected to Oracle.\n";
        OCILogoff($c);
    }
    else
    {
        $err = OCIError();
        echo "Connection failed." . $err[text];
    }

Я не уверен, правильно ли я установил в свой putenv () правильное расположение файла oci.dll или мне нужно установить расширение в первую очередь. Спасибо

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Поскольку вы сказали, что проверили используемые в настоящее время расширения, а OCI8 нет, я бы хотел установить модуль и включить его на вашем сервере

0 голосов
/ 26 января 2019

Скорее всего, при установке 18c по умолчанию создается Контейнерная БД (CDB) с именами ORCL и PDB1 (подключаемая БД). Запустите lsnrctl stat, чтобы найти созданные сервисы. затем в соединении с БД используйте service_name вместо SID для соединения. Значение service_name можно увидеть в выводе lsnrctl stat

Пример.

 $db = "(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = pdb1.domain.com)
        )
      )" ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...