oracle net相关问题的汇总和解决

常见的错误:
客户端
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文件


补充一点。在安装了oracle的机器上,应尽量避免使用“windows优化大师”、“魔法兔子”等优化工具。
有时会将oracle监听的注册表信息删除,解决方法是修改注册表。

在HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/下的Services和CurrentControlSet/Services下找到OracleOraHome92TNSListener项,在右边窗口按右键,新建/字符串,取名ImagePath。

双击新见的建,在“数值数据”项输入D:oracleora92inTNSLSNR.EXE(根据你自己的实际情况进行修改),确定完成。

再次在服务中双击打开OracleOraHome92TNSListener的服务看到其“可执行文件的路径”一栏已经显示了其正确的值。这时你可以启动监听了。

同样也可以对OracleServiceSID进行操作,不过将ImagePath的值改为D:oracleora92inoracle.exe SID即可。

以上转自“http://www.itpub.net/644673,1.html”

在实际工作中的遇到的问题

1.计算机改名造成监听服务启动出错

2.杀毒软件、防火墙

杀毒软件和防火墙会对应用程序的运行进行监控,如果ORCLE.EXE,LSNRCTL.EXE等执行文件没有得到允许通行,会导致服务直接无法启动

在江民中可以添加到白名单中允许通行

在卡巴斯基中就遇到ORCLE.EXE没有允许通行,而直接把文件给隔离掉了

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/633084/viewspace-921708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/633084/viewspace-921708/

你可能感兴趣的:(oracle net相关问题的汇总和解决)