TNS-03505问题解决总结

WBOY
풀어 주다: 2016-06-07 17:23:54
원래의
1842명이 탐색했습니다.

最近部署项目,Linux系统使用非oracle用户测试(比如test)tnsping orcl出现如下提示信息:TNS-03505: Failed to resolve name

最近部署项目,,Linux系统使用非Oracle用户测试(比如test)tnsping orcl出现如下提示信息:
 
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 04-DEC-2012 14:29:28
 
Copyright (c) 1997, 2009, Oracle.  All rights reserved.
 
Used parameter files:
 
/opt/oracle/product/11g/network/admin/sqlnet.ora
 
TNS-03505: Failed to resolve name
 
乍一看,问题出现原因清楚明了。就是orcl服务名无法解析。但是我在本局域网使用其它windows系统中的pl/sql可以连接。
 
因为对Linux系统认知甚少,所以一头雾水。去网搜一下很多,大约有这么几种解决方案:
 
一是文件配置错误;
 
二是sqlnet.ora文件中NAMES.DIRECTORY_PATH设置问题;
 
三是lsnrctl status 监听错误或者sqlplus版本问题。 
 
第一种情况意思就是说在tnsnames.ora这个文件中我配置的orcl有问题,大部人说前面不能有空格,我的本来就没有;再就是listener.ora有一个标准的写法,如下:
 
SID_LIST_LISTENER =
 
  (SID_LIST =
 
    (SID_DESC =
 
      (SID_NAME = PLSExtProc)
 
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
 
      (PROGRAM = extproc)
 
    )
 
    (SID_DESC =
 
      (GLOBAL_DBNAME = orcl)
 
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
 
      (SID_NAME = orcl)
 
    )
 
  )
 
LISTENER =
 
  (DESCRIPTION_LIST =
 
    (DESCRIPTION =
 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
 
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 
)
 
)
 
第二种情况说的是通过客户端访问数据库服务器顺序。我也是从这个帖子发现我的问题的,我的linux用户test没有访问tnsname.ora这个文件的权限。
 
第三种情况说的是监听服务没起来。这个很容易就能查别,使用lsnrctl status即可知道。

通过解决这么一个问题,我总结一下思路:

首先:查询监听状态。因为我的可以通过其它客户端访问,所以不会是监听的问题。
 
其次:使用oracle用户,测试tnsping orcl。一般情况下肯定通。非oracle用户并且不属于oracle用户所属组的查看是否有权限。没有权限使用: chmod o+r tnsname.ora即可。
 
最后:版本兼容性的问题。

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!