以前也看过很多类似的文章 一直没有做过实验,最近在qq群里有人提出类似问题,于是照葫芦画瓢做了个实验,
关键步骤是需要修改SID和servicename ,例如我原来SID和servicename都是sxtsioms 后来分别改成instest和test重启数据库后发现sxtsioms和test都可以作为连接符,而且lister。org和tnsname。org内容并没有改变。
总之个人感觉是能用静态的最好不要用动态的毕竟修改sid也不是一件很有趣的事情
原文如下:
一、静态注册
静态注册指实例启动时读取listener.ora配置文件,将实例和服务注册到监听程序。无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务。
SID_LIST_LISTENER =
( SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = Ora8)
(SID_NAME = test)
)
)LISTENER =
( DESCRIPTION =
(ADDRESS = (HOST = 192.168.0.88)(PROTOCOL = TCP)(PORT = 1522))
)
这是一个最简单的静态监听配置文件,SID_LIST_LISTENER部分的GLOBAL_DBNAME表示向外提供的服务名,SID_NAME是提供注册的实例。
在tnsnames.ora文件中的CONNECT_DATA部分,可分别选择SERVICE_NAME=Ora8或SID=test为客户端提供连接。
对于配置非1521监听端口,只能选择静态注册方式。
二、动态注册
动态注册不需要显示的配置listener.ora文件,实例启动的时候,PMON进程根据instance_name,service_name参数将实例和服务动态注册到listerer中。如果没有设定instance_name,将使用db_name初始化参数值。如果没有设定service_names,将拼接db_name和db_domain参数值来注册监听。
SQL> show parameter service_name
NAME TYPE VALUE
———————————— ———– ——————————
service_names string test
SQL> show parameter instance_nameNAME TYPE VALUE
———————————— ———– ——————————
instance_name string testLSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 – Production
Start Date 24-SEP-2008 16:50:01
Uptime 0 days 0 hr. 0 min. 33 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test1)(PORT=1521)))
Services Summary…
Service “test” has 1 instance(s).
Instance “test”, status READY, has 1 handler(s) for this service…
Service “test_XPT” has 1 instance(s).
Instance “test”, status READY, has 1 handler(s) for this service…
The command completed successfullySQL> alter system set service_names=’oratest’ scope=both;
System altered.
SQL> alter system set instance_name=’instest’ scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 96468992 bytes
Fixed Size 1217884 bytes
Variable Size 88083108 bytes
Database Buffers 4194304 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 – Production
Start Date 24-SEP-2008 16:52:44
Uptime 0 days 0 hr. 1 min. 52 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test1)(PORT=1521)))
Services Summary…
Service “oratest” has 1 instance(s).
Instance “instest”, status READY, has 1 handler(s) for this service…
Service “test” has 1 instance(s).
Instance “instest”, status READY, has 1 handler(s) for this service…
Service “test_XPT” has 1 instance(s).
Instance “instest”, status READY, has 1 handler(s) for this service…
The command completed successfully
可以看到,监听注册的服务和实例已发生了相应的变化。同静态监听,这里也可以分别使用SERVICE_NAME=oratest或SID=instest来进行客户端的连接。