学无止境
分类: Oracle
2013-08-19 16:19:16
配置监听可以使用netca图形界面,也可以直接编辑listener.ora文件。
netca建立监听
在可显示图形界面的前提下,运行netca命令,按提示建立监听,完成之后会自动生成listener.ora文件并启动监听。
手动编辑listener.ora文件
一个常见的监听文件例子:
LISTENER= #监听名称
(DESCRIPTION= #描述关键字
(ADDRESS_LIST= #地址列表关键字,如果有多个ADDRESS的话
(ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521)) #IP协议地址内容,ADDRESS为关键字,PROTOCOL=tcp表示该协议是tcp协议,HOST主机名,PORT端口号,这里设置的即为监听
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) #ipc协议的配置,这里配置的是外部程序的监听,extproc是默认值。原则上不调用外部程序应该去掉该部分。
SID_LIST_LISTENER= #监听静态注册描述,SID_LIST_监听名
(SID_LIST= #SID描述列表
(SID_DESC= #SID描述
(GLOBAL_DBNAME=sales.us.acme.com) #数据库全局名,包含了数据库名和域名,该项非必须,如果配置TAF,不能配置GLOBAL_DBNAME。
(ORACLE_HOME=/oracle10g) #设置ORACLE_HOME目录
(SID_NAME=sales)) #设置静态监听的SID名称
(SID_DESC= #设置外部程序监听的SID描述,原则上不调用外部程序应该去掉之后部分。
(SID_NAME=plsextproc) #SID名称,extproc的默认值plsextproc。
(ORACLE_HOME=/oracle10g) #设置ORACLE_HOME目录
(PROGRAM=extproc))) #设置程序为extproc。
配置一个非1521端口的监听
配置一个非1521端口的监听,对于数据库服务注册来说,可以采用在listener.ora中写静态注册,也可以设置数据库参数local_listener,动态注册。
上面的例子包含了在监听文件中静态注册的例子。
设置数据库的local_listener参数,可以再本地编辑tnsnames.ora文件,配置一个tnsname的方法,例如:
listener1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=oel1.localdomain)(PORT=1421))
(CONNECT_DATA=(SERVICE_NAME=ora10g))
)
设置local_listener参数:
alter system set local_listener='listener1' SCOPE=BOTH;
也可以直接设置整个连接描述符:
alter system set local_listener="(address=(protocol=tcp)(host=oel1.localdomain)(port=1421))";
这样在运行alter system register;命令时即可实现动态注册。
配置远程监听
当出现需要跨网段的情况,可以建立远程监听。例如数据库在192.168.162.0网段,客户端在192.168.161.0网段,在该网段需要有一台可以连接到数据库服务器的主机作为监听服务器主机。
数据库主机IP:192.168.162.220,监听服务器主机IP为192.168.161.91
数据库上需要设置以下2个参数
remote_listener
local_listener,如果本地监听使用1521端口,则可以不设置该参数。
设置远程监听,在数据库主机本地也需要启动一个本地监听。
这里的例子本地监听端口为1421,远程监听端口为1521。监听文件的配置这里省略,可以参考前面的例子。
设置local_listener参数:
alter system set local_listener="(address=(protocol=tcp)(host=192.168.162.220)(port=1421))";
设置remote_listener参数:
alter system set remote_listener="(address=(protocol=tcp)(host=192.168.161.91)(port=1521))";
启动本地监听,本地监听的配置,按普通监听配置即可,可以配置静态注册也可以不配置。
启动远程监听,远程监听不需要配置静态注册,例如1521端口的监听,甚至没有配置listener.ora文件也可启动。
查看监听状态,查看本地监听状态,一般不会有什么异常。
远程监听查看
lsnrctl status,可以查看到有动态注册信息,但仅有该信息不一定监听成功,需要用lsnrctl services命令查看服务的状态。state:ready表示监听成功,如果是blocked,可能是本地监听没有启动。
Service "ora10g" has 1 instance(s).
Instance "ora10g", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(address=(protocol=tcp)(host=192.168.162.220)(port=1421))