Назад | Перейти на главную страницу

oci_connect (): Ошибка при попытке получить текст для ошибки ORA-28547

У меня есть эта строка подключения на более старом сервере, который отлично работает и подключается к удаленному серверу Oracle.

На этом новом сервере я установил oracle Instant Client simple and devel и php pecl oci8. Ниже приведен скриншот файла oci8.

Вот код, который я использую для подключения

$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $ORACLE_HOST . ")(PORT=" . $ORACLE_PORT . ")))(CONNECT_DATA=(SID=" . $ORACLE_DB . ")))";
$this->dbh = oci_connect($ORACLE_USER, $ORACLE_PASS, $db);

Но когда я пытаюсь подключиться к Oracle, я получаю эту ошибку

oci_connect(): Error while trying to retrieve text for error ORA-28547

Если я ввожу случайное имя хоста, я получаю ORA-12154 ошибка, которая имеет смысл. Если я ввожу случайный SID, я получаю ORA-12514 ошибка, которая имеет смысл. Если я ввожу случайный порт, я получаю ORA-12545 ошибка, которая имеет смысл, если я nc сервер и порт я получаю этот результат

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.10.40.21:1521.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.

Я использую систему Centos 7 64bit, php 5.6.

Кто-нибудь знает, почему это могло произойти?

Кажется, хотя phpinfo может обнаружить клиент Oracle версии 18.5, но не может получить ORACLE_HOME каталог

Если вы только установите

SetEnv ORACLE_HOME "/usr/lib/oracle/18.5/client64/lib"

в файле конфигурации виртуального хоста клиента

/etc/httpd/conf/sites-available/client.vhost

Это добавляет ORACLE_HOME к PHP Variables только который имеет НЕТ ЭФФЕКТА устранение проблемы

Вместо

Вам нужно добавить

env[ORACLE_HOME] = /usr/lib/oracle/18.5/client64/lib

в клиентском php-fpm файл конфигурации

/etc/php-fpm.d/client.conf

Это добавляет ORACLE_HOME под обоими PHP Variables и Environment что устраняет проблему.

У вас две проблемы:

  • Oracle не может получить правильный перевод ошибки ORA-28547. Вероятно, это из-за неправильной установки / настройки. Ваш echo $ORACLE_HOME устанавливать?
  • Но настоящая проблема - это ошибка ORA-28547, которая означает «сбой подключения к серверу», вероятно, ошибка администратора Oracle Net ».

Ваш sqlnet.ora настроить для удобного подключения? (Находится в $ORACLE_HOME//network/admin) Проверять, выписываться Документация по Oracle Net Services по настройке; у вас должна быть строка, похожая на:

NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)

Также см. Это руководство по устранению неполадок.