2011-01-10 21 views
5

Я пытаюсь подключиться к базе данных Oracle через код (Ruby/DBI, но это не имеет значения), используя строку соединения EasyConnect. Во всей документации Oracle указывается строка подключения как // hostname: port/service_name. У меня нет имени_сервера для базы данных, к которой мне нужно подключиться, вместо этого у меня есть SID. Есть ли способ создать строку соединения EasyConnect с использованием SID вместо имени службы?Строка соединения Oracle EasyConnect с использованием SID?

Мой код подключения выглядит следующим образом:

DBI.connect("DBI:OCI8://localhost:9000/the_sid", "username here", "password here")

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

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor (DBI::DatabaseError) 
ORA-12154: TNS:could not resolve the connect identifier specified (DBI::DatabaseError) 
+0

Вам действительно нужно имя хоста и номер порта? Сообщение об ошибке, похоже, указывает на то, что у вас запущен прослушиватель TNS. Если имена TNS правильно настроены, ваша строка соединения может быть «DBI: OCI8: the_sid». – Codo

+0

У меня нет настроенных имен TNS. –

ответ

2

ли вам попробуйте SID в качестве имени службы? Обычно вы можете указать SID, где запрашивается услуга. Обычно SERVICE_NAMES по умолчанию имеет значение SID. В командной строке SQL введите:

SQL> show parameter service 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
service_names      string  sid 

SQL> 

Значение (ы) в колонке VALUE является/являются имя службы (s) база данных зарегистрирована в качестве.

+0

Когда я запускаю эту команду от Oracle SQL Developer, я не получаю никакого вывода (возможно, у меня нет разрешения на выполнение этой команды?) –

+0

Я считаю, что это команда SQL * Plus, поэтому вам нужно запустить ее оттуда , –

+0

Это команда SQL * Plus. Попробуйте запустить его из SQL * Plus. – DCookie