Как подключиться к серверу Oracle без указания имени базы данных
Мое приложение имеет функцию для подключения к 4 различным серверам баз данных (MS SQL, MySql, SQLite и Oracle), и если база данных не существует, она создаст новую с указанным именем базы данных. Эта логика работает на всех серверах, кроме Oracle. Если база данных существует, я могу подключиться к ней на всех четырех серверах, так что я думаю, что проблема не связана с моим tns, неправильным dll или чем-то подобным, но, возможно, моя строка подключения неверна в этом случае.
Версия сервера Oracle - 11.0.0.1, и я установил необходимые драйверы odac. На моем компьютере установлен tns, и все работает правильно, когда база данных существует. В этом случае строка подключения выглядит так:
User Id=<myuser>; Password=<mypassword>; POOLING=true; Connection Lifetime=15;
Connection Timeout=15; incr pool size=10; Data Source=
(
DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=<myserveraddress>)
(PORT=<myport>)
)
(
CONNECT_DATA=
(SID=<mysid>)
(SERVICE_NAME=<mydatabasename>)
)
);
Теперь, если я удаляю секцию servicename из строки подключения, я получаю сообщение "ORA-12505: TNS: слушатель в настоящее время не знает об SID, указанном в дескрипторе соединения".
Что мне делать, если я хочу подключиться только к серверу, но не напрямую к базе данных?
2 ответа
Вы неправильно понимаете, что здесь происходит.
В Oracle вы не создаете базу данных в вашем случае, но пользователь / табличное пространство.
Oracle:
Сервер> экземпляр (база данных) > табличное пространство
Другой:
Сервер> экземпляр> база данных
Концепция создания базы данных Oracle отличается от других баз данных.
Пожалуйста, нажмите на следующую ссылку
http://docs.oracle.com/cd/E16655_01/index.htm
и выберите опцию "2-дневный DBA"
лучший способ создать базу данных - использовать графический интерфейс, предоставляемый oracle, т.е. начать с dbca.bat.