Настройка сети (Настройка слущающего процесса Listener)
2 конфигурационных файла отвечают за подключение к Oracle.
Один обязательный (listener.ora) и один скорее для удобства, но для работы некоторых программ, он также может быть обязательным
(tnsnames.ora).
По умолчанию файлы хранятся:
/u01/app/oracle/product/11.2/network/admin
listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number"))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = SID1)
(ORACLE_HOME = /u01/app/oracle/product/11.2)
(SID_NAME = SID1)
)
(SID_DESC =
(GLOBAL_DBNAME = SID2)
(ORACLE_HOME = /u01/app/oracle/product/11.2)
(SID_NAME = SID2)
)
)
tnsnames.ora
В данном файле описываются подробности подключения к базе данных. Т.о, становится возможным явно не указывать некоторые параметры. (Например, хост, порт и др.). И сразу обращаться по имени.
SID1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number"))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SID1)
)
)
SID2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number"))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SID2)
)
)
// Должен работать (Но это не точно)
$ tnsping SID2
В следующем примере, происходит подключение к базе данных с использованием записи с именем orcl в файле tnsnames.ora.
Т.е. для подключения к базе, не приходится дополнительно вводить host, port, sid
Основные команды службы слушателя (Listener):
$ lsnrctl status
$ lsnrctl stop
$ lsnrctl start
$ lsnrctl restart
Информация о Listener из командной строки:
$ ps -edf | grep tns
root 13 2 0 Aug09 ? 00:00:00 [netns]
oracle12 6604 1 0 Aug09 ? 00:00:02 /u01/oracle/grid/12.1/bin/tnslsnr LISTENER -no_crs_notify -inherit
oracle12 16991 14456 0 09:26 pts/1 00:00:00 grep tns
$ lsnrctl services
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 15-AUG-2015 15:09:04
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "orcl12XDB" has 1 instance(s).
Instance "orcl12", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: piter.localdomain, pid: 8805>
(ADDRESS=(PROTOCOL=tcp)(HOST=piter.localdomain)(PORT=60254))
Service "slave" has 1 instance(s).
Instance "orcl12", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "slave_DGB" has 1 instance(s).
Instance "orcl12", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully
Информация о Listener из консоли sqlplus:
SQL> show parameter local_listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LISTENER_ORCL12
SQL> show parameter listener
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
listener_networks string
local_listener string
remote_listener string
SQL> alter system set local_listener='(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = moscow.localdomain)(PORT = 1521)))' scope=both;
OFFTOPIC Listener для grid
$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): piter
$ srvctl config listener
Name: LISTENER
Type: Database Listener
Home: /u01/oracle/grid/12.1
End points: TCP:1521
Listener is enabled.
Способ настроить tnsnames, предложенный в чате:
connect / as sysdba
alter session set container=pdb_a;
alter system register;
После этого она зарегается в листенере, если до этого её не было.
В tnsnames.ora: (ip адрес только поправь)
pdb_a =
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=10.1.1.14) (PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=pdb_a)))
https://t.me/oracle_dba_ru/7971