查看: 15607|回复: 14

[Tips] 关于监听器连接常见的问题

[复制链接]
论坛徽章:
84
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
发表于 2004-4-2 07:01 | 显示全部楼层 |阅读模式
现在Oracle数据库用的地方是越来越多了,越来越多的应用被部署在oracle数据库中,作为大型的数据库,网络的连接需求肯定是少不了的,但是在实际的使用中,很多人都曾遇到各种各样的数据库连接错误,通常用户都是在客户端连接数据库时发现的,所以简单的认为是客户端的问题,但是实际上出现连接错误的原因是很多的,在这里主要把常见的错误和自己曾经遇到的错误列举出来,也把以前自己的一些处理方法也提供给大家分享,因为有些是以前遇到过的,现在也只是一些印象,所以有不对之处,希望谅解和指出,共同讨论。

常见的错误:
客户端
ORA-12154 “TNS:无法解析服务名名”
ORA-12198 “TNS:无法找到通向目标的路径径”
ORA-12203 “TNS:不能与目标连接接”
ORA-12533 “TNS:非法ADDRESS 参数数”
ORA-12545 “TNS:名称查找失败”

服务端
ORA-12154: 没有监听程序
ORA-12224: TNS: 没有监听程序
ORA-12500: TNS: 监听程序启动专用服务器进程失败
ORA-12545: TNS: 名称查找失败
TNS-01169: 监听程序不识别口令


错误原因:
1、listener服务的问题
a.在windows环境中,监听器服务没有启动
察看服务中的监听器服务,看是否启动,很多人设置为手动后忘记启动

b.windows环境,服务已经启动,但是仍然报错
在lsnrctl中看status,发现并未启动,通常是由于监听器配置有问题造成,需要修改监听器的配置文件,与c相同
经验感觉,最好还是使用lsnrctl启动监听器比较好,可以直接看到启动的状况

c、启动监听器错误
不论在任何平台,lsnrctl的status报错,都说明没有启动成功,执行start启动监听器
如果仍然抱错,通常原因为监听器配置问题,主要包括了:
ip地址或者主机名称改变:修改listener.ora和tnsnames.ora文件中的主机地址信息
监听的配置文件语法或参数错误:修改监听器配置文件的语法
当然,也可能是一些软件破坏了监听器的相关文件,或者产生了进程冲突,另外,一些防病毒软件可能会阻断监听器甚至关闭监听器

2、监听器正常启动,但是监听信息有问题
监听端口改动:正常的1521端口被占用,改为其他端口,客户端也应该作相应修改
监听的数据库设置有问题:设置了错误的数据库SID,在9i这个错误被数据库修正,真正的数据库信息可以动态注册,所以一般不会出错


3、服务器配置问题
安装了防火墙:有些防火墙默认会阻挡客户端发出的连接包请求,另外防火墙可能会禁用一些端口,其中可能会包括监听端口
安装了杀毒软件:有些杀毒软件也会阻挡连接请求,曾经用过瑞星遇到过这种问题
服务器禁用了监听的端口或者被其他软件占用监听端口       
没有安装相关的网络协议:客户端和服务端通常情况下需要相同的网络协议(除非使用连接管理器)

4、客户端配置问题
配置了不正确的tnsnames.ora文件,包括了监听器主机名或ip地址错误,监听端口错误,连接的数据库没有被监听器监听或者不存在
安装了多个Oracle软件,存在多个主目录:因为有多个主目录,所以出现多个tnsnames.ora文件,为不同的软件配置相应的tnsnames.ora文件。这种情况也多见,在安装了数据库和oracle的developer后,出现两个主目录,每个主目录中都有network目录,需要分别进行配置,用户最好确定当前使用的主目录是不是存放了正确连接服务命名的目录,当然,一种简单的方法是干脆让这些tnsnames.ora文件都一样的内容,就没那么多麻烦了


5、系统问题
没有做域名解析:用户配置的文件中使用了主机名称,但是没有相应的域名解析,无法解析成正确的ip地址
使用连接管理器进行了访问控制:察看是否在连接管理器中设置了访问控制
在protocol.ora(9i在sqlnet.ora)中设置了访问控制:是否设置了访问控制
连接的数据库未启动:在服务器端检查连接的数据库是否已经启动

6、网络问题
网络硬件问题,例如网线、交换机、路由器、网卡等网络设备故障:最简单的方法ping
网络设置问题,存在硬件防火墙,交换机或者路由设置问题:同样,测试是否能够连通

7、其他
连接过于频繁:同时的并发连接太频繁造成,可以设置较大的QUEUESIZE,或者创建连个监听器同时监听,当然了,使用了两个端口
监听器参数设置有误:这个就自己看吧
配置了命名服务器或者ldap:因为需要在命名服务器或者ldap服务器上解析服务命名,所以如果这些部分出问题也一样表现为连接出错
不能启动专用连接进程:在客户端是否选择了专用连接方式,另外,也可能设置的进程数、会话数或者环路被共享连接耗尽也会产生类似的这种错误
ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄:专用服务器选择了共享连接方式,修改tnsnames.ora文件


聊天太晚,懒得睡觉,就写了这个咚咚,迷糊之中书写,可能过于草率,大家现行过目,欧睡一觉先,待醒来再续再改。大家多提意见,偶将不断更新
论坛徽章:
8
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34会员2007贡献徽章
日期:2007-09-26 18:42:102011新春纪念徽章
日期:2011-02-18 11:42:49ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32兰博基尼
日期:2014-01-31 14:56:26优秀写手
日期:2015-01-08 06:00:14优秀写手
日期:2015-02-12 06:00:15
发表于 2004-4-2 08:51 | 显示全部楼层
好。

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-04-26 14:47:45授权会员
日期:2005-10-30 17:05:33管理团队2006纪念徽章
日期:2006-04-16 22:44:45会员2006贡献徽章
日期:2006-04-17 13:46:34
发表于 2004-4-3 18:55 | 显示全部楼层
好,支持。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
发表于 2004-4-3 18:59 | 显示全部楼层
需要典型案例,呵呵

使用道具 举报

回复
论坛徽章:
12
会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-04-24 14:03:07授权会员
日期:2006-04-24 13:56:42ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:虎
日期:2008-01-02 17:35:53CTO参与奖
日期:2009-01-15 11:42:46目光如炬
日期:2017-04-09 22:00:00
发表于 2004-4-3 19:56 | 显示全部楼层
GOOD!

收藏

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
发表于 2004-4-3 21:28 | 显示全部楼层
支持一下吧

使用道具 举报

回复
论坛徽章:
0
发表于 2004-4-3 22:29 | 显示全部楼层
支持一下,谢谢!

使用道具 举报

回复
论坛徽章:
45
马上有对象
日期:2014-07-28 22:58:22凯迪拉克
日期:2013-10-01 09:34:09劳斯莱斯
日期:2013-09-23 12:56:01阿斯顿马丁
日期:2013-09-17 18:07:48凯迪拉克
日期:2013-09-12 11:10:25比亚迪
日期:2013-08-23 21:12:02蜘蛛蛋
日期:2013-07-26 20:15:22迷宫蛋
日期:2013-05-14 18:10:23紫蛋头
日期:2013-03-16 10:05:302013年新春福章
日期:2013-02-25 14:51:24
发表于 2004-4-3 23:28 | 显示全部楼层
俺也帮顶!但我还要问一下这个“ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄:专用服务器选择了共享连接方式,修改tnsnames.ora文件“具体怎么做啊(我是个新手不太懂,请多包涵)

使用道具 举报

回复
论坛徽章:
84
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
 楼主| 发表于 2004-4-4 02:55 | 显示全部楼层
最初由 ziliu0305 发布
[B]俺也帮顶!但我还要问一下这个“ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄:专用服务器选择了共享连接方式,修改tnsnames.ora文件“具体怎么做啊(我是个新手不太懂,请多包涵) [/B]


在tnsnames.ora中的服务命名定义块中存在这样的一段:

    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ora9i)
    )

数据库运行在两种模式下,共享服务器方式和专用服务器方式,同样也有两种连接方式,专用连接还是共享连接。
这里面的server就是你选择的连接方式,如果选择了默认方式,则你的数据库是共享服务器方式,你的连接就是共享方式连接,如果是专用服务器方式,就是专用方式连接。如果像上面一样选择了DEDICATED,这表示你设置了专用方式连接,那么不论是共享服务器方式,还是专用服务器方式,你的连接都是以专用方式连接的。如果设置了shared,那么表示选择了共享方式连接。

在共享服务器方式下,专用连接和共享连接都可以,但是在专用服务器方式下,只允许使用专用连接,这时候如果客户端的服务命名中定义了server=shared,则使用这个服务命名将会产生错误。

使用道具 举报

回复
论坛徽章:
84
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
 楼主| 发表于 2004-4-4 02:56 | 显示全部楼层
最初由 shangym 发布
[B]需要典型案例,呵呵 [/B]


不要着急,最近会慢慢补充进去,网络虽然不是数据库的主要部分,不过也是我们经常遇到的问题之一了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表