GOAL
How the CDB Database services and PDB Database services registers with the listener in different Db modes. ( open mode & mount mode )
SOLUTION
Condition 1 : CDB in mount mode :
a) When a CDB is in mounted mode, there are 2 other components remains in mount mode
CDB Mount mode :
select cdb,name,open_mode from v$database;SQL>
CDB NAME OPEN_MODE
--- --------- --------------------
YES ORCL1220 MOUNTED
PDB$SEED and PDB also in mount mode :
select name,open_mode from v$pdbs;
NAME OPEN_MODE
--------------- ---------------
PDB$SEED MOUNTED
PDB1 MOUNTED
Check the DB_Active Services :
select con_id,service_id,name,network_name,pdb from v$services;
CON_ID SERVICE_ID NAME NETWORK_NAME PDB
----------- ---------- -------------------- -------------------- ---------------
1 0 orcl12201cdbXDB CDB$ROOT
1 0 SYS$BACKGROUND CDB$ROOT
1 0 SYS$USERS CDB$ROOT
1 0 orcl12201cdb orcl12201cdb CDB$ROOT
Result :
Only CDB service-name will get registered to the listener.
The PDB remains in mount mode and none of the PDB-Service can be registered to the listener as CDB is in mount mode.
Listener status LISTENER :
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 12-APR-2019 14:58:04
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=extproc)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 12-APR-2019 14:12:58
Uptime 0 days 0 hr. 45 min. 5 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /refresh/home/app/12.2.0.1/oracle/product/12.2.0.1/dbhome3/network/admin/listener.ora
Listener Log File /refresh/home/app/12.2.0.1/oracle/diag/tnslsnr/<hostname>/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>.oracle.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>.oracle.com)(PORT=1530)))
Services Summary...
Service "extproc" has 1 instance(s).
Instance "extproc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl12201cdb" has 1 instance(s). ==============================================> Only CDB service-name will get registered to the listener
Instance "orcl12201cdb", status READY, has 1 handler(s) for this service...
Condition 2: CDB is open_mode:
b) When the CDB is in open mode ( read-write or read-only ) then the PDB-service mode are still in mount mode or to their respective saved_state
However the PDB-services becomes active and registers with the listener with the help of LREG process.
CDB Mode Check :
select cdb,name,open_mode from v$database;
CDB NAME OPEN_MODE
--- --------- --------------------
YES ORCL1220 READ WRITE
PDB Mode Check :
select name,open_mode from v$pdbs;SQL>
NAME OPEN_MODE
-------------------- ---------------
PDB$SEED READ ONLY
PDB1 MOUNTED
Check the DB Active Services :
select con_id,service_id,name,network_name,pdb from v$services;
SQL>CON_ID SERVICE_ID NAME NETWORK_NAME PDB
----------- ---------- -------------------- -------------------- ---------------
1 1 SYS$BACKGROUND CDB$ROOT
1 2 SYS$USERS CDB$ROOT
1 5 orcl12201cdbXDB orcl12201cdbXDB CDB$ROOT
3 0 pdb1 pdb1 PDB1
1 6 orcl12201cdb orcl12201cdb CDB$ROOT
PDB service is active now though the PDB is in mount mode
LISTENER STATUS :
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 12-APR-2019 15:17:01
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=extproc)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 12-APR-2019 14:12:58
Uptime 0 days 1 hr. 4 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /refresh/home/app/12.2.0.1/oracle/product/12.2.0.1/dbhome3/network/admin/listener.ora
Listener Log File /refresh/home/app/12.2.0.1/oracle/diag/tnslsnr/<hostname>/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>.oracle.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>.oracle.com)(PORT=1530)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>.oracle.com)(PORT=2205))(Presentation=HTTP)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>.oracle.com)(PORT=5505))(Security=(my_wallet_directory=/home/app/12.2.0.1/oracle/admin/orcl12201cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "5779b9ed9b0630ade053c432410af1b4" has 1 instance(s).
Instance "orcl12201cdb", status READY, has 1 handler(s) for this service...
Service "extproc" has 1 instance(s).
Instance "extproc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl12201cdb" has 1 instance(s). ================================================>CDB service-name will get registered to the listener
Instance "orcl12201cdb", status READY, has 1 handler(s) for this service...
Service "orcl12201cdbXDB" has 1 instance(s).
Instance "orcl12201cdb", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s). ================================================> PDB service-name will get registered to the listener
Instance "orcl12201cdb", status READY, has 1 handler(s) for this service...
The command completed successfully