How to Define PDB Listeners With Different Ports In A Multitenant Setup Goal
This Note will discuss the necessary steps to create and configure listeners for a Pluggable Database (PDB) in a Multitenant environment.
Solution
1. Using netca create a 2nd listener on a unique port
This creates a listener.ora file in the ?/network/admin directory similar to:
PDB_LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = test))
(ADDRESS = (PROTOCOL = TCP)(HOST = host.us.oracle.com)(PORT = 1524))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1524))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_PDB_LISTENER=ON # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_PDB_LISTENER=SUBNET # line added by Agent
2. Within the PDB issue the following statement:
alter system set listener_networks='(( NAME=net1)(LOCAL_LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.us.oracle.com)(PORT=1524)))))' scope=spfile;
Remarks:
- use scope=memory for testing only
- LOCAL_LISTENER and REMOTE_LISTENER parameters are not PDB modifiable.
3. modify the PDB service definition in tnsnames.ora to point to the correct port
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host.us.oracle.com)(PORT = 1524))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1)
)
)
4. The LREG process will automatically register the service with the listener after executing the command from section 2.
Connections and lsnrctl service/status pdb_listener output are all correct for the connection.
[oracle@host admin]$ lsnrctl service pdb_listener
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-DEC-2014 13:18:01
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=test)))
Services Summary...
Service "pdb1" has 1 instance(s).
Instance "CDB1", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: host.us.oracle.com, pid: 35460>
(ADDRESS=(PROTOCOL=tcp)(HOST=host.us.oracle.com)(PORT=24804))
"DEDICATED" established:2 refused:0 state:ready
LOCAL SERVER
The command completed successfully
[oracle@host admin]$ lsnrctl status pdb_listener
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-DEC-2014 13:27:59
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=test)))
STATUS of the LISTENER
------------------------
Alias PDB_LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 01-DEC-2014 12:41:36
Uptime 0 days 0 hr. 46 min. 24 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.1.0.2/dbhome/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/host/pdb_listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=test)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host.us.oracle.com)(PORT=1524)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1524)))
Services Summary...
Service "pdb1" has 1 instance(s).
Instance "CDB1", status READY, has 2 handler(s) for this service...
The command completed successfully