在某些情况下,需要为一个或多个PDB使用特定的专用监听端口。这就需要创建新的监听,并确保PDB注册到它上面。
在下面的例子中,我们创建新的监听LISTENER_PDB,使用的端口为1522,修改listener.ora文件添加如下内容:
LISTENER_PDB =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.220)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
使用如下命令启动监听LISTENER_PDB:
$ lsnrctl start LISTENER_PDB
在tnsnames.ora中添加如下:
LISTENER_PDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1522))
修改PDB的listener_networks参数:
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 ORCLPDB2 READ WRITE NO
SQL> alter system set listener_networks='((NAME=PDB_NETWORK2)(LOCAL_LISTENER=LISTENER_PDB))' SCOPE=BOTH;
System altered.
注意:listener_address字符串是一个地址(或地址列表),用于解析指定的监听。可以使用别名,本例中就使用了别名,尽管这需要在tnsnames.ora文件中添加地址条目。
[oracle@server admin]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-APR-2019 17:53:04
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.80.220)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias