Подключения к базе данных Oracle – какие поля мне нужно заполнить?

StackOverflow https://stackoverflow.com/questions/970253

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top