可以为oracle数据库添加多个监听吗? 答案是可以滴,只是,一般没人这样做吧,下面试试,如何为oracle配置多个监听?
1.本地先确定使用哪些端口用于监听
[root@xuan1 ~]# netstat -tlnp|grep -e 1521 -e 1152 -e 1158 -e 1222 -e 15210
tcp 0 0 :::1521 :::* LISTEN 2653/tnslsnr
tcp 0 0 :::1158 :::* LISTEN 3109/java
[root@xuan1 ~]# netstat -tlnp|grep -E "1521|1152|1222|1158|15210"
tcp 0 0 :::1521 :::* LISTEN 2653/tnslsnr
tcp 0 0 :::1158 :::* LISTEN 3109/java
----好了,1521端口是目前数据库使用的监听端口,1152和1222及15210端口号是没有使用的,我们就将15210、1152、1222端口用于数据库的监听端口
2.配置监听
[oracle@xuan1 ~]$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 15210))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 1152))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 1222))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
----监听配置好后重新启动监听
[oracle@xuan1 ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-JUL-2016 00:36:56
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/xuan1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=15210)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1152)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1222)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.11.111)(PORT=15210)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 18-JUL-2016 00:36:56
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/xuan1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=15210)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1152)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1222)))
The listener supports no services
The command completed successfully
---- 查看下这些端口号工作情况
[root@xuan1 ~]# netstat -tlnp|grep -E "1521|1152|1222|1158|15210"
tcp 0 0 192.168.11.111:1152 0.0.0.0:* LISTEN 4757/tnslsnr
tcp 0 0 192.168.11.111:1222 0.0.0.0:* LISTEN 4757/tnslsnr
tcp 0 0 192.168.11.111:15210 0.0.0.0:* LISTEN 4757/tnslsnr
tcp 0 0 :::1158 :::* LISTEN 3109/java
----如果服务器中有多个网卡,需要任意的网卡都监听,那么就把监听配置文件中host的地址改为0.0.0.0即可
3.配置TNS
----监听虽然配置好了,但是并不是启动之后就能使用,还需要在参数中设置local_listener参数,这里先在tns中设置好别名,然后在添加到local_listener中
[oracle@xuan1 ~]$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 15210))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 1152))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.111)(PORT = 1222))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
4.设置local_listener参数
SQL> alter system set local_listener=orcl;
SQL> alter system register;
----最后看一下监听是否已经注册上
[oracle@xuan1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-JUL-2016 00:46:07
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.11.111)(PORT=15210)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 18-JUL-2016 00:36:56
Uptime 0 days 0 hr. 9 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/xuan1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=15210)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1152)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.111)(PORT=1222)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
----查看监听日志,找客户端针对不同端口进行登录测试
[oracle@xuan1 ~]$ find $ORACLE_BASE -name listener.log |xargs tail -f
----ps 如果设置了 local_listener 参数,那么在数据库启动的时候,local_listener指向的监听服务器需要先启动
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30130773/viewspace-2122954/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30130773/viewspace-2122954/