Мгновенное подключение клиента Oracle 11 к удаленному серверу Oracle 8i: ошибка ORA-12514


Я столкнулся с проблемой, на устранение которой потратил несколько часов. Вот в чем проблема:

Я пытаюсь подключиться к удаленному серверу Oracle 8i с помощью Мгновенный клиент Oracle 11: вот моя строка подключения на PHP:

$conn =oci_connect('db_user', 'db_pass', "db_ip/db_service");

Db_ip - это ip-адрес сервера, например "12.34.56.78".
db_service - это служба сервера, такая как "тест".

Показанная ошибка

ORA-12514: TNS: прослушиватель в настоящее время не знает об услуге, запрошенной в дескрипторе подключения

Я мог бы использовать тот же клиент для подключения к другому серверу Oracle 10g. php-код тот же, только измените db_user или db_pass или db_ip.db_service не предоставляется.

Я не использую tnsnames.ora ни для сервера oracle 10g, ни для сервера oracle 8i. Я просто использую простой IP-адрес сервера. Имеет ли это значение?

Server using: Windows Server 2008 R2
PHP: php 5.2.17
Oracle Instant Client: 11_2

Любые идеи будут оцененный.

Обновлено Php также может работать сейчас. Моя папка php находится в разделе Programfiles (x86), скобки не допускаются. Поэтому я переместил всю папку в C:\php, и настройте IIS для изменения версии php. Ссылка: http://stackoverflow.com/вопросы/9215983/php-не могу подключиться-но-sqlplus-могу

Обновлено Большое спасибо за помощь Джастина. Это работает!!! Я просто изменил sid на scblive вместо SCBLIVE. Их база данных называется scblive. Я все еще использую 10.2.0.1, используя sqlplus, я могу подключиться как к oracle 10g, так и к oracle 8i. Оооочень большое спасибо!!

Это имена tns, которые работают для oracle 8i:

Scblive= (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (ХОСТ = [ip oracle 8i])(ПОРТ = 1521)) (СОЕДИНЕНИЕ_ДАННЫЕ = (СЕРВЕР = ВЫДЕЛЕННЫЙ) (SID = scblive) ) )

Обнаружена еще одна проблема, в коде php, она показывает ту же ошибку либо для oracle 10g, либо для oracle 8i.

ОРА-12154: TNS: не удалось разрешить указанный идентификатор подключения

Я просто использовал следующую строку подключения:

$conn =oci_connect('имя_пользователя', 'пропуск', 'scblive');

Для oracle 10g, если я использовал ту же строку подключения, что и раньше, ошибка все равно отображается:

$conn =oci_connect('имя_пользователя', 'пропуск', [ip oracle 10g]);

Есть идеи?

Более раннее обновление: Спасибо за помощь @Justin. пробовали 10.2.0.5, 10.2.0.4 или 10.1.0.0, ни один из них не мог работать. Я видел матрицу. похоже, что instant client 8.1.7 или instant client 9.0.1 могут работать как для oracle 10g, так и для oracle 8i. У кого-нибудь есть ссылка на эти файлы? Oracle может предоставить только 10.1.0.5 и более поздние версии.

Author: user1631658, 2012-08-29

2 answers

Это ожидаемое поведение. Клиент 11.2 не сертифицирован для подключения к какой-либо версии Oracle 8i. Вам потребуется, по крайней мере, база данных Oracle 9.2.0.4. Если вы хотите подключиться к базе данных и 8.1.7, вам понадобится клиент Oracle 10.2 или более ранней версии. Начальные версии клиента 10.2 не были совместимы с системой Windows Server 2008 R2, но должна быть возможность установить набор исправлений клиента 10.2.0.5. Если вы хотите подключиться к базе данных Oracle, которая ранее, чем 8.1.7, вам потребуется более ранняя версия клиента Oracle, которая, вероятно, потребует установки более ранней версии Windows.

Если у вас есть доступ к Metalink, Metalink 207303.1 - это матрица взаимодействия клиента и сервера .

Если у вас действительно установлен полный клиент 10.2.0.5, ваш псевдоним TNS должен использовать идентификатор безопасности. Имена служб не существовали в версии 8.1.7. Вероятно, вы захотите скопировать псевдоним TNS с компьютера, который может подключаться к версии 8.1.7. база данных. Я предполагаю, что вы хотите

SCBLIVE = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = [ORACLE 8i IP])(PORT = 1521)) 
    (CONNECT_DATA = (SERVER = DEDICATED)(SID = SCBLIVE)) 
  )

Если это не сработает, в командной строке введите tnsping scblive и скопируйте и вставьте результаты.

 4
Author: Justin Cave, 2012-08-31 01:05:45

Я копирую папку ora моего предыдущего клиента Oracle 9/8.... и все соответствующие библиотеки dll в определенную папку и помещаю эти две папки в переменную path. В то же время мне удается подключиться к Oracle 8.1.7 с помощью oci на php.

 0
Author: Scott Chu, 2013-08-05 03:51:33