LISTENER에 서비스 등록을 하는 경우, 두가지 방법이 존재한다.
정적 등록 (Static)
SID_LIST_{LISTENER명}을 사용하여 정적으로 서비스 등록.
LISTENER에서 "status UNKOWN"으로 표시된다.
동적 등록 (Dynamic)
LOCAL_LISTENER 파라미터를 통해 오라클 LREG 프로세스가 동적으로 LISTENER에 서비스를 등록.
LISTENER에서 "status READY"로 표시된다.
LOCAL_LISTENER 파라미터의 default는 null로 되어있으며, null인 경우 1521 port를 사용하는 LISTENER를 자동으로 등록한다.
따라서 local_listener 통해 동적으로 DB를 등록하여 사용하고 싶은 경우에는
- local_listener 파라미터 값으로 tnsnames.ora에 등록된 alias를 사용하거나,
- tns syntax를 그대로 적어서 사용할 수 있다.
또한, LOCAL_LISTENER 파라미터는 Multitenant 환경에서는 CDB 파라미터가 아닌 PDB 개별적으로 적용 역시 가능하다.
12c 이후로 LISTENER 관리는 PMON이 하지 않고 LREG 프로세스가 수행한다.출처 : Process Architecture (oracle.com)
참고사항 2.
LISTENER를 수동으로 생성하지 않고 LISTENER 기동을 하는 경우, ORACLE은 1521 포트를 사용하는 LISTENER를 작동 시킨다.상세 내용 참고 : [IT INDEXES: ORACLE] Listener를 생성하지 않고도 사용이 되는 이유. (it-indexes.blogspot.com)\
주의사항 1.
PDB 개별 파라미터는 "V$SYSTEM_PARAMETER" or "V$PARAMETER" 뷰에서 ISPDB_MODIFIABLE 컬럼이 TRUE인 파라미터만 PDB에서 수정 가능하다.
주의사항 2.
PDB에 적용된 파라미터는 CDB에서 pfile 생성시 출력되지 않고, PDB_SPFILE$ 테이블에 저장 된다.
2. 리스너 동적 등록
2.1. 관련 파일설정
[SERVICE_NAME 사용시]
# tnsnames.ora
※ service_name은 cdb_services에서 확인 가능
※ service_name 대신 SID 를 쓰고 싶은 경우, listener.ora에 USE_SID_AS_SERVICE_{LISTENER_NAME}=on 파라미터를 설정해 두어야 한다.
[SID 사용시]
# listener.ora
# tnsnames.ora
2.2. local_listener 설정 및 접속 확인
※ C##은 common user임을 의미함. CDB에 지정된 common_user_prefix에 의해 제어 됨.
3. 리스너 정적 등록
동적 등록을 위한 파라미터인 local_listener 설정 대신에 listener.ora에 SID_LIST 를 추가하여 정적으로 리스너에 등록하여 사용 가능하다.
3.1. 관련 파일 설정
tnsnames.ora의 설정은 동일하다.
# listener.ora
※ 정적 등록이므로 리스너에서 status UNKOWN으로 표시 된다.