Соединения с базой данных Oracle - какие поля мне нужно заполнить? - PullRequest
2 голосов
/ 09 июня 2009

Я привык к использованию SQL Server и теперь сталкиваюсь с подключением к Oracle. Могу ли я получить совершенно однозначные описания того, какие поля мне нужно заполнить?

В частности, я хочу понять, что это:

Главная * * 1005 Hostname
Порт
SID
Название услуги

Псевдоним сети
Идентификатор подключения

Я понимаю, что имя хоста - это тот, на котором он сидел, но отличается ли это от домашнего? Порт - это порт TCP, и по умолчанию он равен 1521 - это кажется довольно ясным.

Мне нужно только указать SID или имя службы? А какая разница - почему один или другой?

Если у меня есть файл TNS, что такое сетевой псевдоним и идентификатор подключения? Являются ли они в любом случае такими же, как другие поля, которые у меня есть, если я не использую файл TNS?

Извините, что я такой нуб, но мои предварительные поиски, чтобы получить ответы, все еще приводят меня в замешательство.

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 июня 2009
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 и Service Names, о которых он знает (и пару других деталей)

Или найдите файлы 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

и отмечая последнюю часть имени процесса, например, ора (подчеркивание) PMON (подчеркивание) SID

1 голос
/ 09 июня 2009

Если вы используете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...