Строка подключения Oracle EasyConnect с использованием SID?

Я пытаюсь подключиться к базе данных Oracle с помощью кода (Ruby / DBI, но это не имеет значения), используя строку подключения EasyConnect. Во всей документации Oracle говорится, что строку подключения следует указывать как // hostname: port / service_name. У меня нет service_name для базы данных, к которой мне нужно подключиться, вместо этого у меня есть SID. Есть ли способ создать строку подключения 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)

person Jon Kruger    schedule 10.01.2011    source источник
comment
Вы уверены, что вам вообще нужно имя хоста и номер порта? Сообщение об ошибке указывает на то, что у вас запущен прослушиватель TNS. Если имена TNS настроены правильно, то ваша строка подключения может быть DBI: OCI8: the_sid.   -  person Codo    schedule 10.01.2011
comment
У меня не настроены имена TNS.   -  person Jon Kruger    schedule 11.01.2011


Ответы (1)


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

SQL> show parameter service

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

SQL> 

Значение (я) в столбце VALUE - это имя (я) службы, под которым зарегистрирована база данных.

person DCookie    schedule 10.01.2011
comment
Когда я запускаю эту команду из Oracle SQL Developer, я не получаю никаких выходных данных (может быть, у меня нет разрешения на выполнение этой команды?) - person Jon Kruger; 10.01.2011
comment
Я считаю, что это команда SQL * Plus, поэтому вам нужно запустить ее оттуда. - person a_horse_with_no_name; 10.01.2011
comment
Как я могу запустить SQL * Plus, если я не знаю, как написать строку подключения для подключения к базе данных? :) Кроме того, это не база данных, которой я владею, поэтому, если мне нужны привилегированные права для чего-либо из этого, я не буду говорить о правах. - person Jon Kruger; 10.01.2011
comment
Можете ли вы запустить: sqlplus user @ 'hostname / sid' и получить запрос на ввод пароля? - person DCookie; 10.01.2011
comment
Когда я это делаю, я получаю эту ошибку: ORA-12504: TNS: слушателю не было предоставлено SERVICE_NAME в CONNECT_DATA - person Jon Kruger; 10.01.2011
comment
Можете ли вы подключиться с помощью: sqlplus user @ '(description = (address_list = (address = (PROTOCOL = TCP) (HOST = hostname) (port = 9000)) (connect_data = (sid = your_sid)))'. - person DCookie; 11.01.2011
comment
Вы вошли на сервер базы данных? Если это так, вы можете полностью обойти SQL * Net, установив ORACLE_SID = your_sid и запустив sqlplus user / pw - person DCookie; 11.01.2011
comment
Когда я пытаюсь подключиться с помощью длинной строки подключения, я просто получаю текст использования sqlplus (без сообщений об ошибках, без запроса имени пользователя). - person Jon Kruger; 11.01.2011
comment
Извините, проблема с синтаксисом: sqlplus user / pw @ (description = (address_list = (address = (protocol = TCP) (host = theHOST) (port = thePORT))) (connect_data = (sid = theSID))) - person DCookie; 11.01.2011
comment
Когда я это сделаю, я получаю: ORA-12162: TNS:net service name is incorrectly specified. Как будто он все еще пытается подключиться к имени службы, хотя я явно пометил его как sid. - person Jon Kruger; 11.01.2011
comment
В какой ОС вы выполняете эти команды? Какая у вас версия Oracle? Вы запускаете эти команды на сервере? - person DCookie; 11.01.2011
comment
Я работаю на Ubuntu 10.07 (Lucid Lynx). Oracle - это Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64-разрядная версия. Я не запускаю эти команды на сервере. - person Jon Kruger; 11.01.2011
comment
Вы устанавливаете ORACLE_SID в своей среде на клиенте? Если да, снимите его. - person DCookie; 11.01.2011
comment
И вам обязательно нужно заключить эту строку подключения в кавычки, поскольку скобки интерпретируются оболочкой. - person DCookie; 11.01.2011