lisenter 注册
1)动态监听:listener 采用的是默认端口(1521),当实例启动时,由pmon 每分钟自动将service name,本机的1521端口号注册到listener
2)静态监听:当listener 一般使用的是非标准端口(如1522),在listener.ora的文件里手工注册(添加GLOBAL_DBNAME 和instance name)
静态注册:
1)静态注册不需要数据库打开,通过读取listener.ora的静态注册描述完成监听器的注册,因为不需要数据库open,所以如果服务器端一旦启动了静态监听,便可以通过sqlplu以sys用户连接到服务器,实现远程启动/关闭数据库的任务。
2)静态注册可以使用用户指定的端口号(非1521),相对隐蔽,安全。
3)静态注册在一些特殊场合,如使用数据库复制技术时是很有用处的。
动态注册:
1)需要数据库打开才能注册成功,所以动态注册无法使用sysdba身份远程启动数据库。一般都是通过远程TELNET先以root登录服务器,这时你已经在服务器本地了,再转入oracle以sysdba身份打开数据库。之后监听器才可以进行动态注册。
2)可以不使用listener.ora,因为动态注册由PMON后台进程自动注册信息,PMON每60秒查看listener进程是否启动,启动了就注册相关服务器信息。
3)PMON默认1521端口。如果非要PMON注册其他非标准端口,需要设置服务器端的listener.ora和tnsnames.ora, 并设定local_listener,使该值为tnsnames.ora的连接符。
动态注册不需要显示的配置 listener.ora 文件,实例启动的时候, PMON 进程根据 instance_name,service_name 参数将实例和服务动态注册到 listerer 中。如果没有设定 instance_name ,将使用 db_name 初始化参数值。如果没有设定 service_names ,将拼接 db_name 和 db_domain 参数值来注册监听。
第一种 静态和动态都使用1521端口注册。
1)动态监听:listener 采用的是默认端口(1521),当实例启动时,由pmon 每分钟自动将service name,本机的1521端口号注册到listener
2)静态监听:当listener 一般使用的是非标准端口(如1522),在listener.ora的文件里手工注册(添加GLOBAL_DBNAME 和instance name)
静态注册:
1)静态注册不需要数据库打开,通过读取listener.ora的静态注册描述完成监听器的注册,因为不需要数据库open,所以如果服务器端一旦启动了静态监听,便可以通过sqlplu以sys用户连接到服务器,实现远程启动/关闭数据库的任务。
2)静态注册可以使用用户指定的端口号(非1521),相对隐蔽,安全。
3)静态注册在一些特殊场合,如使用数据库复制技术时是很有用处的。
动态注册:
1)需要数据库打开才能注册成功,所以动态注册无法使用sysdba身份远程启动数据库。一般都是通过远程TELNET先以root登录服务器,这时你已经在服务器本地了,再转入oracle以sysdba身份打开数据库。之后监听器才可以进行动态注册。
2)可以不使用listener.ora,因为动态注册由PMON后台进程自动注册信息,PMON每60秒查看listener进程是否启动,启动了就注册相关服务器信息。
3)PMON默认1521端口。如果非要PMON注册其他非标准端口,需要设置服务器端的listener.ora和tnsnames.ora, 并设定local_listener,使该值为tnsnames.ora的连接符。
动态注册不需要显示的配置 listener.ora 文件,实例启动的时候, PMON 进程根据 instance_name,service_name 参数将实例和服务动态注册到 listerer 中。如果没有设定 instance_name ,将使用 db_name 初始化参数值。如果没有设定 service_names ,将拼接 db_name 和 db_domain 参数值来注册监听。
第一种 静态和动态都使用1521端口注册。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) --如果想静态监听起作用的话,此行要删除掉。
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME= oracle11g) --随便起的
(ORACLE_HOME = /u01/oracle)
(SID_NAME = hong)
)
)
第二种,静态注册监听器使用其他端口,如1522端口。
LSN2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
)
)
SID_LIST_LSN2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME= oracle11g)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = hong)
)
)
客户端的tnsnames.ora中的动态注册与静态注册描述
90 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl11)
)
)
90_JT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
( SERVICE_NAME = hong )
)
)
说明:
1、 lisnter.ora中的SID_NAME的值必须与SID的值一致。通过lisnter.ora中的SID_NAME和GLOBAL_DBNAME两个参数以及客户端的tnsnames.ora中的SERVICE_NAME,这三个参数一起作用,可以实现ORACLE客户端与服务端的隔离。
2、客户端tnsnames.ora中静态注册描述时的SERVICE_NAME与服务器端listener.ora中的GLOBAL_DBNAME是对应的;listener.ora中的SID_NAME指的是实例名,与操作系统的环境变量ORACLE_SID也是一致的。
3、客户端tnsnames.ora中动态注册描述时的SERVICE_NAME值应该是SERVICE_NAMES的值(show parameter service_names可查到)。
动态注册的status
例程“hong" :与上面的SID_NAME对应,由INSTANCE_NAME参数值确定。
SQL>alter system set service_names = 'lch' scope=spfile;
修改service_names后的监听状态如下图
静态注册的status
注意:端口是1522,且status UNKNOWN 这两个信息都说明监听是以静态注册的
服务 "oracl11g" :此名称是由GLOBAL_DBNAME参数值决定的,如果未加GLOBAL_DBNAME参数,则此名称就是实例名(hong),如下图
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) --如果想静态监听起作用的话,此行要删除掉。
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME= oracle11g) --随便起的
(ORACLE_HOME = /u01/oracle)
(SID_NAME = hong)
)
)
第二种,静态注册监听器使用其他端口,如1522端口。
LSN2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
)
)
SID_LIST_LSN2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME= oracle11g)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = hong)
)
)
90 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl11)
)
)
90_JT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
( SERVICE_NAME = hong )
)
)
说明:
1、 lisnter.ora中的SID_NAME的值必须与SID的值一致。通过lisnter.ora中的SID_NAME和GLOBAL_DBNAME两个参数以及客户端的tnsnames.ora中的SERVICE_NAME,这三个参数一起作用,可以实现ORACLE客户端与服务端的隔离。
2、客户端tnsnames.ora中静态注册描述时的SERVICE_NAME与服务器端listener.ora中的GLOBAL_DBNAME是对应的;listener.ora中的SID_NAME指的是实例名,与操作系统的环境变量ORACLE_SID也是一致的。
3、客户端tnsnames.ora中动态注册描述时的SERVICE_NAME值应该是SERVICE_NAMES的值(show parameter service_names可查到)。
动态注册的status
例程“hong" :与上面的SID_NAME对应,由INSTANCE_NAME参数值确定。
SQL>alter system set service_names = 'lch' scope=spfile;
修改service_names后的监听状态如下图
静态注册的status
注意:端口是1522,且status UNKNOWN 这两个信息都说明监听是以静态注册的
服务 "oracl11g" :此名称是由GLOBAL_DBNAME参数值决定的,如果未加GLOBAL_DBNAME参数,则此名称就是实例名(hong),如下图
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27661381/viewspace-1358961/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27661381/viewspace-1358961/