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

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

На этом новом сервере я установил простой клиент oracle Instant и 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

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

enter image description here

0
задан 20 March 2019 в 15:04
3 ответа

Кажется, даже несмотря на то, что 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 только в которых NO EFFECT исправляет проблему

Вместо

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

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

в php-файл клиента php-файл . fpm config file

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

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

enter image description here

1
ответ дан 4 December 2019 в 15:44

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

NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)

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

.
0
ответ дан 4 December 2019 в 15:44

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

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

Теги

Похожие вопросы