Подключения к базе данных Oracle – какие поля мне нужно заполнить?
-
13-09-2019 - |
Вопрос
Я привык использовать SQL Server, и теперь мне приходится подключаться к Oracle.Могу ли я получить совершенно недвусмысленные описания всех полей, которые мне нужно заполнить?
В частности, я хочу понять, что это такое:
Дом
Имя хоста
Порт
SID
Наименование услуги
Сетевой псевдоним
Идентификатор подключения
Насколько я понимаю, имя хоста — это имя хоста, на котором он установлен, но отличается ли оно от дома?Порт — это TCP-порт, по умолчанию он равен 1521 — это кажется довольно очевидным.
Мне нужно указать только SID или имя службы?И какая разница – почему тот или другой?
Если у меня есть файл TNS, каков псевдоним сети и идентификатор подключения?Являются ли они такими же, как и другие поля, которые у меня есть, если я не использую файл TNS?
Извините, что я такой нуб, но мои предварительные поиски ответов все еще меня очень смущают.
Спасибо!
Решение
Home: ORACLE_HOME, an environment variable that points to the location of the Oracle binaries (either location Instance runs from on server or client runs from on client) Hostname: name of the server Port: Port on which the Listener is listening for Oracle connections SID: **S**ervice **ID**entifier. The name of the the Database. This is one of the identifiers that the Listener will expose Service name: An alternate identifier that may be exposed by the Listener
На существующем настроенном сайте проще всего найти эти сведения из файла tnsnames.ora на клиенте (или сервере), с которого можно осуществлять подключения к базе данных.Посмотрите $ORACLE(подчеркивание)HOME/network/admin.Найдите ORACLE(подчеркивание)HOME с помощью команды set (Windows) или env (Unix).Файл tnsnames.ora также может находиться в месте, на которое указывает переменная $TNS_ADMIN.
Если файл tnsnames.ora не найден и у вас есть доступ к серверу, попробуйте выполнить следующую команду, обычно от имени пользователя Oracle.
lsnrctl status
lsnrctl — это прослушиватель.В статусе будут показаны известные ему SID и имена служб (а также несколько других деталей).
Или найдите файлы Listener.ora и sqlnet.ora в $ORACLE_HOME/network/admin или в месте, указанном переменной env $TNS_ADMIN.
Обычно на каждом хосте будет один прослушиватель, поэтому на каждый хост будет один порт (может быть и больше, но это не часто).
Чтобы подключиться к Oracle, вам необходимо указать клиенту прослушиватель в месте, указанном комбинацией имени хоста/порта, и указать ему, к какому SID или службе подключиться.
Комментарий DCookie о SID и имени службы по существу верен.
SID можно найти с помощью (в зависимости от версии)
select db_unique_name from v$database or select db_name from v$database
Или просмотрев файл $ORACLE_HOME/dbs/init(SID NAME).ora или выполнив
ps -ef | grep pmon
и отметив последнюю часть имени процесса, например.ora(подчеркивание)pmon(подчеркивание)SID
Другие советы
Если вы используете Oracle 10g
или выше, используйте Easy Connect
синтаксис:
//servername/dbname
, как в:
sqlplus scott/tiger@//servername/dbname
Если вам нужно использовать TNS
, вот пример TNSNAMES.ORA
:
XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
В CONNECT_DATA
, вы можете использовать либо SERVICE_NAME
(который является идентификатором экземпляра, зарегистрированного в прослушивателе) или SID
(это идентификатор базы данных).
В двух словах:
SERVICE_NAME
является идентификатором экземпляра:бегOracle
исполняемый файл, к которому вы подключитесьSID
— идентификатор базы данных:набор файлов, в которых хранятся ваши данные.
Одна база данных может использоваться несколькими Oracle
экземпляры.
В случае сомнений используйте SERVICE_NAME
.
В этом случае выполните подключение следующим образом:
sqlplus scott/tiger@XE