local_listener
에 등록된 Listener는 Oracle이 서비스(인스턴스)를 자동으로 등록해줍니다.
참고
'서비스를 등록한다'는 뜻은 '인스턴스를 등록한다'는 의미로 받아들이면 될 것 같습니다.
Listener에 인스턴스를 등록하는 방법은 2가지가 있습니다.
listener.ora
파일에 SID_LIST_...
를 통해 인스턴스(SID_NAME
)를 명시해주는 방법입니다. status가 UNKNOWN
으로 나타납니다.LREG 프로세스
가 Listener에 등록 가능한 인스턴스(SID_NAME
)를 자동으로 등록해주는 방법입니다. status가 READY
로 나타납니다.만약 listener.ora
파일에 아래와 같이 작성한 후 LISTENER_ORACLE
를 시작하면 서비스가 없다는 문구가 나타납니다.
-- listener.ora
LISTENER_ORACLE =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
)
)
)
-- listener 시작
$ lsnrctl start LISTENER_ORACLE
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-AUG-2023 16:16:59
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias LISTENER_ORACLE
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 11-AUG-2023 16:15:45
Uptime 0 days 0 hr. 1 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /ORACLE/app/oracle/product/19.0.0/db_1/network/admin/listener.ora
Listener Log File /ORACLE/app/oracle/diag/tnslsnr/khyup/listener_oracle/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))
The listener supports no services
The command completed successfully
local_listener
를 확인합니다.
show parameter local
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
parallel_force_local boolean FALSE
local_listener
에 Listener를 등록하면 Oracle이 서비스(SID_NAME
)를 자동으로 등록해줍니다.
local_listener
값을 LISTENER_ORACLE
의 HOST와 PORT로 변경합니다.
alter system set local_listener='(description=(address=(protocol=tcp)(host=localhost)(port=1522)))';
show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (description=(address=(protocol=tcp)(host=localhost)(port=1522)))
다시 한번 LISTENER_ORACLE
의 상태를 보면 READY
상태로 서비스가 등록된 것을 확인할 수 있습니다.
참고
status READY
: 동적등록status UNKNOWN
: 정적등록
$ lsnrctl stat LISTENER_ORACLE
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-AUG-2023 16:17:36
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias LISTENER_ORACLE
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 11-AUG-2023 16:15:45
Uptime 0 days 0 hr. 1 min. 50 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /ORACLE/app/oracle/product/19.0.0/db_1/network/admin/listener.ora
Listener Log File /ORACLE/app/oracle/diag/tnslsnr/khyup/listener_oracle/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))
Services Summary...
Service "oracle" has 1 instance(s).
Instance "oracle", status READY, has 1 handler(s) for this service...
Service "oracleXDB" has 1 instance(s).
Instance "oracle", status READY, has 1 handler(s) for this service...
The command completed successfully
한편, tnsnames.ora
에 tnsname을 등록할 경우 local_listener
의 값에는 tnsname을 적어줘도 됩니다.
-- tnsnames.ora
LISTENER_ORACLE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)
-- local_listener 등록
alter system set local_listener=LISTENER_ORACLE;
show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LISTENER_ORACLE
local_listener
에는 여러 Listener를 등록할 수 있습니다.
-- local_listener에 리스너 2개 등록
alter system set local_listener=LISTENER_ORACLE, '(description=(address=(protocol=tcp)(host=localhost)(port=1523)))';
show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LISTENER_ORACLE, (description=(address=(protocol=tcp)(host=localhost)(port=1523)))