|
|
ORACLE配置动态和静态监听服务
部分参考:http://blog.sina.com.cn/s/blog_67be3b4501019s01.html
一、动态监听服务
oracle spfile中有这两个参数:service_names,local_listener;
service_names参数默认值是数据库sid,当添加其他值时,pmon进程将自动每分钟在listener中注册此服务;如local_listener未设置,则pmon进程只向默认的1521端口进行监听的注册;如local_listener设置了指定端口,则pmon将在指定端口上进行服务名监听注册。
没有配置listener.ora文件时,动态监听服务会自动注册service_names中的服务名到local_listener指定的端口上;
1、设置参数,添加service_names
SYSTEM@1621>show parameter service;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl
SYSTEM@1621>alter system set service_names='orcl,oral';
SYSTEM@1621oral>show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl,oral
SYS@orcl>show parameter local
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
2、配置tnsnames连接串
[oracle@OL541 admin]$ vi tnsnames.ora
1521orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST =OL541.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
1521oral =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST =OL541.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oral)
)
)
1621oral =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST =OL541.localdomain)(PORT = 1621))
)
(CONNECT_DATA =
(SERVICE_NAME = oral)
)
)
1621orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST =OL541.localdomain)(PORT = 1621))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
1621orbl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST =OL541.localdomain)(PORT = 1621))
)
(CONNECT_DATA =
(SERVICE_NAME = orbl)
3、配置listener.ora
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME=orcl))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(PROGRAM=extproc)))
LISTENER2=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc1))))
4、测试:
当local_listener没有设置参数时,1521orcl和1521oral测试连接有效;
5、设置local_listener参数
SQL>alter system set local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=OL541.localdomain)(PORT=1621))';
SYSTEM@1621oral>show parameter local
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (ADDRESS = (PROTOCOL=TCP)(HOST=OL541.localdomain)(PORT=1621)
6、测试
查看监听状态
[oracle@OL541 ~]$ lsnrctl status listener2
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 06-FEB-2015 15:13:28
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621)))
STATUS of the LISTENER
------------------------
Alias listener2
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 06-FEB-2015 15:10:26
Uptime 0 days 0 hr. 3 min. 1 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/OL541/listener2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc1)))
Services Summary...
Service "oral" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
连接测试:
1521orcl,1621orcl,1621oral都可以连接,只有1521oral不能连接;
二、静态注册
1、在listener.ora中配置监听
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME=orcl))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(PROGRAM=extproc)))
LISTENER2=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc1))))
SID_LIST_LISTENER2=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orbl)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME=orcl))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(PROGRAM=extproc)))
2、tnsnames.ora文件配置还用上面的;
3、将local_listener设置为listener2的值;
alter system set local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=OL541.localdomain)(PORT=1621))';
4、监听状态
LSNRCTL> status listener
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 06-FEB-2015 15:31:18
Uptime 0 days 0 hr. 15 min. 1 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/OL541/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>
LSNRCTL> status listener2
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621)))
STATUS of the LISTENER
------------------------
Alias listener2
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 06-FEB-2015 15:26:32
Uptime 0 days 0 hr. 20 min. 5 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/OL541/listener2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OL541.localdomain)(PORT=1621)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc1)))
Services Summary...
Service "oral" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orbl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
5、测试
SYSTEM@1621orbl>conn system/oracle@1621oral
Connected.
SYSTEM@1621oral>conn system/oracle@1621orbl
Connected.
SYSTEM@1621orbl>conn system/oracle@1621orcl
Connected.
SYSTEM@1621orcl>conn system/oracle@1521orcl
Connected.
SYSTEM@1521orcl>conn system/oracle@1521oral
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
三、总结:
1、在监听状态中,动态监听的状态是status READY,静态监听的状态是status UNKNOWN;
2、动态监听是PMON进程根据service_names参数的值动态注册的,不需要进行手工干预,但是有一定的延迟,在监听启动的之后不会立即生效,对service_names的修改可以稍有延迟的生效,不需要重新启动监听程序。如想加快注册,可执行SQL>alter system regiester;
3、静态监听不同,在listener.ora文件中的配置,会随着监听的启动而随时启动,但是实时的对listener.ora文件的更改不会立即生效,需要重启监听或使用lsnrctl的reload命令;
4、动态监听根据local_listener参数设置的端口来注册服务;静态监听根据listener文件中设置的端口来注册;
|
|