Соединения с базой данных Oracle - какие поля мне нужно заполнить?

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

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

Главная
Hostname
порт
SID
Наименование услуги

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

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

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

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

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

Спасибо!

2 ответа

Решение
Home:     ORACLE_HOME, переменная среды, которая указывает на местоположение 
двоичных файлов Oracle (экземпляр местоположения запускается на сервере или клиенте
работает от клиента)
Имя хоста: имя сервера
Порт: Порт, на котором слушатель прослушивает соединения Oracle
SID:      **S**ervice **ID**entifier. Название базы данных. Это
один из идентификаторов, который будет выставлен слушателем
Имя службы: альтернативный идентификатор, который может быть раскрыт слушателем.

На существующем настроенном сайте самый простой способ найти эти сведения - это файл tnsnames.ora на клиенте (или сервере), с которого можно устанавливать соединения с базой данных. Посмотрите в разделе $ORACLE(подчеркивание)HOME/network/admin. Найдите ORACLE (подчеркивание) HOME с помощью команды set (Windows) или env (Unix). Файл tnsnames.ora также может находиться в местоположении, указанном переменной $TNS_ADMIN.

Если файл tnsnames.ora не может быть найден и у вас есть доступ к серверу, попробуйте следующую команду, обычно как пользователь Oracle

статус lsnrctl

lsnrctl - это слушатель Статус покажет идентификаторы SID и Service Names, о которых он знает (и пару других деталей)

Или найдите файлы listener.ora и sqlnet.ora в каталоге $ORACLE_HOME/network/admin или в каталоге, указанном переменной env$TNS_ADMIN.

Обычно для каждого хоста будет один прослушиватель, поэтому один порт для каждого хоста (может быть больше, но это не распространено)

Чтобы подключиться к Oracle, вы должны указать клиенту на приемнике в месте, указанном комбинацией имя хоста / порт, и указать ему, какой SID или служба также подключаться.

Комментарий DCookie по поводу SID в сравнении с именем службы по существу верен.

SID можно найти с помощью (в зависимости от версии)

выберите db_unique_name из базы данных v$
   или же
выберите имя_базы_данных из базы данных v$

Или просматривая файл $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
Другие вопросы по тегам