分类: Oracle
2009-05-25 09:19:05
1.首先测试的是动态注册下的情况
1.1 环境
[oracle@localhost admin]$ ll
total 48
-rw-r----- 1 oracle oinstall 468 May 22 02:19 listener.ora.bak
-rw-r----- 1 oracle oinstall 531 May 22 05:38 listener.ora.bak2
drwxr-x--- 2 oracle oinstall 4096 May 21 06:57 samples
-rw-r----- 1 oracle oinstall 172 Dec 26 2003 shrept.lst
-rw-r----- 1 oracle oinstall 167 May 21 07:00 sqlnet.ora
-rw-r----- 1 oracle oinstall 599 May 22 04:17 tnsnames.ora.bak
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string bal
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string bal
1.2 还未启动listener时状态
LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
1.3 重启实例(让PMON注册信息到listener)
SQL> startup force
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1218820 bytes
Variable Size 75499260 bytes
Database Buffers 176160768 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
1.4 再次查看listener状态(已关闭常用的sidXDB,sid_XPT服务)
LSNRCTL> service
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "bal" has 1 instance(s).
Instance "bal", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully
(READY代表动态注册, UNKONW代表静态注册)
2. 动态注册+静态注册
2.1 写入listener.ora
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /oracle/10g/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/10g)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = bal)
(ORACLE_HOME = /oracle/10g)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
)
2.2 重启listener
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
LSNRCTL> start
Starting /oracle/10g/bin/tnslsnr: please wait...(以下省略)
重启listener后,Pmon不会马上将注册信息写入listener
此时强行注册下
SQL> alter system register;
System altered.
此时看下这时的服务:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "bal" has 2 instance(s).
Instance "bal", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "bal", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully
(READY代表动态注册, UNKONW代表静态注册)
说明此时有2个instance注册信息,动态+静态
动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向非默认监听注册,则需要配置local_listener参数!
3. 下面测试动态注册在非默认的监听上
3.1 首先更改listener.ora
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /oracle/10g/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain )(PORT =1522))
)
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/10g)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = bal)
(ORACLE_HOME = /oracle/10g)
)
)
3.2 重启listener
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
LSNRCTL> start listener2
Starting /oracle/10g/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /oracle/10g/network/admin/listener.ora
Log messages written to /oracle/10g/network/log/listener2.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias listener2
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 22-MAY-2009 12:03:39
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/10g/network/admin/listener.ora
Listener Log File /oracle/10g/network/log/listener2.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1522)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "bal" has 1 instance(s).
Instance "bal", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
SQL> alter system register;
System altered.
LSNRCTL> service listener2
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "bal" has 1 instance(s).
Instance "bal", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
说明此时只有静态注册的一个,没有动态注册。要动态注册就要改local_listener
SQL>alter system set local_listener=
'(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1522))';
System altered.
SQL> alter system register;
System altered.
LSNRCTL> service listener2
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "bal" has 2 instance(s).
Instance "bal", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "bal", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully
此时已经加入动态信息
如果要实现动态注册,我们在对初始化文件还有有一定的设置,必须设置instance_name和service_names参数(我试了一下,其实只要设置了service_names就能实现动态注册的,并且用这个服务名对外提供服务)。
SQL> alter system set service_names='bal,ora';
System altered.
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string bal,ora
SQL>
SQL> alter system register;
System altered.
看这时的service
LSNRCTL> service listener2
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "bal" has 2 instance(s).
Instance "bal", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "bal", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "ora" has 1 instance(s).
Instance "bal", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully