Соединения с базой данных 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