一台服务器对应一个listener
一个listener可以有多个监听端口
监听器基于的协议:
TCP; TCPS; IPC(内部通信协议)
建立客户端与数据库连接:
IP;端口;SID;协议
图形化配置:netmgr
查看监听器:
lsnrctl 参数:status / stop / start / load
配置多个端口,形成负载均衡(图形):
netmgr
1. 配置listener,添加端口1521,1522....
2. 配置Service Naming,针对数据库添加端口1521,1522....
3. 设置方式:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel_2)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel_2)(PORT = 1522))
(LOAD_BALANCE = yes)
(FAILOVER = true) 说明:failover --> connect-time failover
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
5. 重启监听器
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.0.104)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.0.104)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
启动监听器后报错
lsnrctl start
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
TNS-00507: Connection closed
Linux Error: 29: Illegal seek
可能原因是没有配回环地址
vi /etc/hosts
添加内容:127.0.0.1 localhost
客户端无法连接到ORACLE
1. 检查服务器端是否可以用输入用户密码的方式连接
例如:
sqlplus sys/password@orcl as sysdba
2. 如果也不可以,说明可以监听器中没有注册数据库服务
3. 在服务器端使用简单登录sqlplus / as sysdba
4. 输入:alter system register;
5. 检查lsnrctl信息:lsnrctl status
6. 确认服务器端可以登录,客户端可以登录
客户端tnsping通,但是无法登录数据库
1. 确定tnsname.ora配置正确;
2. 确定数据库是否在listener中注册完成。
如果没有注册:alter system register;
ORACLE11g,数据库始终无法注册监听器
手工修改文件listener.ora
修改后:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = d:\app\TOM.SHEN\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:d:\app\TOM.SHEN\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_NAME=ORCL)
(ORACLE_HOME = d:\app\TOM.SHEN\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
使用lsnrctl status查看就可以看到数据库
监听器密码设置,目的是防止被用户非正常关闭。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24751738/viewspace-707254/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24751738/viewspace-707254/