如:
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = redhat4)(PORT = 1522))
)
)
这样在listener.ora中就有了LISTENER和LISTENER2这两个程序的定义
都可以使用lsnrctl命令操作
如:
lsnrctl status listener2
listener.ora文件中还可以给已定义的程序添加静态的实例的信息
方法是建立一个
SID_LIST_程序名 的定义
如instener.ora文件中有了LISTENER3这个程序
定义为:
LISTENER3 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = redhat4)(PORT = 1523))
)
)
给这个添加静态信息
就要增加一个
SID_LIST_LISTENER3的定义
SID_LIST_LISTENER3 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = jiagulun)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = jiagulun)
)
)
而且在里面一定要说明oracle服务的服务名和实例名
这里(GLOBAL_DBNAME = jiagulun)对应实例的服务名service_names
而(SID_NAME = jiagulun)对应实例的实例名instance_name
因为在这里的定义叫做静态注册
就是这里的注册不会被自动更新,除非你手动修改在这个文件中的内容
这样只要这个LISTENER3运行start了
这个程序静态的服务信息就会起作用
并且可以用于连接
用户根据这个静态信息可以使用
sqlplus hr/hr@192.168.3.47:1523/jiagulun
连接到
只要listener.ora文件中配置了一个
这个就会被打开
实例就可以指定向它注册信息,这里实例给它的注册信息是动态注册
包括它的静态注册信息或动态注册信息就会起作用
而且只要一个程序打开
客户端就可以对它请求连接
就可以使用它得到的注册信息进行下一步工作
当然实例向哪个定义的程序注册信息还要看的设置
我看到网上很多的资料把这个文件中程序的定义说成了是的动态注册
这种说法不对
这个文件本身不包含任何的动态注册的服务状态信息
只有可以开启的程序的定义和给程序添加的静态信息
动态注册可以将注册信息注册到这些程序中
注册后程序的状态中才有这些动态注册信息
在这个文件中
仅可以给程序添加静态的实例信息
而且这些静态的信息始终不会被自动更新
而动态注册是可变的
可以改变当前接受动态注册的程序
以及实例会定期更新自己在程序中注册的内容
在oracle实例中有个local_listener参数
用它来指定动态注册要注册给哪个器
默认参数值为空,这时动态注册都注册到1521端口的程序中
该参数值指定了一个其它端口号后
动态注册都会注册到这个指定的端口号相应的程序中
oracle程序启动后
不管任何的情况都会在1521端口自动建立一个程序
即使listener.ora文件为空也会有一个名为LINSTENER在1521的在运行
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-71958-23.html
欧盟绝对不会放过这个机会正式转正