Заметка посвящена демонстрации на примерах путей подключения к Oracle Database с помощью Service Name.
В современных СУБД Oracle подключение к базе данных осуществляется по имени сервиса (Service Name), а не имени идентификатора Oracle System Identifier (SID) как было ранее. Oracle System Identifier (ORACLE SID) является устаревшим способом подключения. По этой причине, при обновлении СУБД нужно спланировать как следует подключаться после обновлений по Service Name со стороны использующих базу данных систем.
Service Name – указывается после ‘/’ в строке подключения
например
Tune-IT-DB1 -scan:1521/DBService.tune-it.ru
В приведенном примере
- Tune-IT-DB1 -scan – сервер баз данных
- 1521 – порт подключения к СУБД
- DBService.tune-it.ru – Service Name
Если в клиенте указывается в виде отдельных полей то значения из примера указываются отдельными полями.
При использовании устаревшего SID строчка подключения Thin driver выглядела так
jdbc:oracle:thin:@[HOST][:PORT]:SID
В нашем примере с SID
jdbc:oracle:thin:@Tune-IT-DB1 -scan:1521:DBService
С Service Name синтаксис трансформируется в
jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
а пример изменится
jdbc:oracle:thin:@//Tune-IT-DB1 -scan:1521/DBService.tune-it.ru
Ну и Connect Descriptor в tnsnames.ora в приведенном примере будет выглядеть так
DBService =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Tune-IT-DB1 -scan)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DBService.tune-it.ru)
)
)