문제

가끔 Oracle 연결 문제 때문에 난 알아낼 수 없습니다 tnsnames.ora 파일 데이터베이스는 클라이언트에서 사용하고 있습니다.

는 무엇인지 파악하는 가장 효과적인 방법은이요?++행복을 위한 다양한 플랫폼 솔루션입니다.

도움이 되었습니까?

해결책

Oracle 에서 제공하는 유틸리티 tnsping:

R:\>tnsping someconnection

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:38:07

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

TNS-03505: Failed to resolve name

R:\>


R:\>tnsping entpr01

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:39:22

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **)
 (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0
1)))
OK (40 msec)

R:\>

이 표시는 어떤 파일을 사용하여.유틸리티에 앉아 있는 Oracle bin 디렉토리에 있습니다.

다른 팁

리눅스:

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'

뭔가를 보여줍니다 다음과 같다:

open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7

변경

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'

표시됩니다 모든 파일 경로와는 실패했습니다.

다른 곳 TNS 위치가 저장되:를 사용하는 경우 윈도우,오픈 regedit 로 이동 My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1KEY_OraClient10_home1 귀하의 Oracle 다.이 있는 경우 문자열이라는 항목 TNS_ADMIN, 다음 해당 항목의 값을 지정합니다 TNS 는 파일에 오라클에서 사용 컴퓨터입니다.

Windows 를 위한: Filemon SysInternals 에서 당신을 보여줍니다 무슨 파일이 있습니다.

를 설정하는 것을 잊지 마십시오 필터를 그래서 당신은에 의해 압도 수 있는 방법 파일 시스템은 트래픽이다.

Filter Dialog

추가: Filemon 작동하지 않으로 최신 Windows 버전에,그래서 당신은 당신을 사용해야 할 수도 있습니다 프로세스 모니터링.

에서 개발 시스템 내가 세 가지 다른 버전의 오라클 클라이언트 소프트웨어입니다.I 관리 tnsnames.ora 파일에서 그들 중 하나입니다.에 다른 두 개의 입력에서 tnsnames.ora 파일:

ifile=path_to_tnsnames.ora_file/tnsnames.ora

이 방법으로,어떤 이유로 잘못된 tnsnames.ora 파일을 사용하여 클라이언트,그것은 항상에서 최신 버전입니다.

Codeslave 요청"안 된 그는 항상"$ORACLE_ 홈/network/admin/tnsnames.ora"?대답은 없습니다,그것은 하지 않습니다.고려해 이러한 두 가지의 호출 이렇게 하려면 tnsping 에서 동일한계:

C:\Documents and Settings\me>D:\Oracle\10.2.0_DB\BIN\tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2
008 14:30:12

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
D:\Oracle\10.2.0_DB\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx
)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

OK (40 msec)

C:\Documents and Settings\me>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2
008 14:30:21

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
D:\oracle\10.2.0_Client\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (20 msec)

C:\Documents and Settings\me>

참고 두 개의 서로 다른 매개 변수 파일의 위치,그에 의존하는 이렇게 하려면 tnsping 실행 실행하고 있는(아마도 그것은 어디에서 실행되는).에 대한 tnsnames 기반 oracle 네트워킹을 사용하여,TNS_ADMIN 변수를는 확실한 방법은 당신이 얻고 있는 일관된 tnsnames.ora 파일입니다.(주의:윈도우 중심의 답변)

기본적으로,tnsnames.ora 에 위치하고 있$ORACLE_HOME/network/admin directory 유닉스에서는 운영 체제에서 ORACLE_HOME\네트워크\admin 디렉토리에는 Windows 운영 체제입니다.tnsnames.ora 저장할 수도 있습니다 다음과 같은 지역:

지정한 디렉토리 TNS_ADMIN 환경변수(또는 레지스트리 값)

유닉스에서는 운영 체제,글로벌 구성 디렉토리에 있습니다.예를 들어,Solaris 운영 체제,이 directory/var/opt/oracle

여러 개 있는 경우 ORACLE_HOMES 야 합니하는 한,당신이 사용하는 위치로의 tnsnames.ora 파일에 따라 달라질 수 있습 ORACLE_HOME 있습니다.

사람에 대한 언급 TWO_TASK 환경변수를 설정하는 데 사용되는 기본 데이터베이스 서비스 이름을 연결하(수 있는 데이터베이스 다른 서버에서).서비스 이름을 설정 TWO_TASK 하여 다음에 tnsnames.ora 파일을 때 당신을 연결합니다.

안 그것은 항상"$ORACLE_ 홈/network/admin/tnsnames.ora"?그런 다음을 수행할 수 있습"echo$oracle_ 홈"또는*nix 동일합니다.

@피트 Holberton 당신이 완전히 올바른입니다.는 생각 나게,거기에 또 다른 원숭이에 렌치라는 작품 TWO_ 작업

에 따라 http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN 는 환경변수는 디렉토리 SQL*Net configuration 파일(다음과 같 sqlnet.ora 및 tnsnames.ora)있습니다.

strace sqlplus -L scott/tiger@orcl 을 찾는 데 도움이됩 .tnsnames.ora 에서 파일 /home/oracle 파일을 찾기 위해 걸리는 대신 $ORACLE_HOME/network/admin/tnsnames.ora 파일입니다.감사합니다.

가장 쉬운 방법은 아마 확인 경로 환경변수의 프로세스는 데이터베이스에 연결.가장 높은 tnsnames.ora 파일에 첫째는 Oracle bin 디렉토리 경로에서..\네트워크\admin.TNS_ADMIN 환경 변수 값을 레지스트리에(현재 Oracle 가정)할 수 있습니다 이것에 우선합니다.

사용 filemon 다음과 같이 제안을 다른 사람에 의해 또한 것입니다.

지 않을 직접 당신의 질문에 대답하지만,나는 꽤 자신을 좌절하려고 찾아 업데이트 모두의 tnsnames 파일이 있었으며 여러 오라클 설치합니다:클라이언트,BI tools,OWB,etc.,각각의 그것의 자신의 oracle 다.결국 만들기 유틸리티 TNSNamesSync 는 것입 업데이트 모두의 tnsnames 에서 오라클의 모든 주택입니다.그것은 MIT 라이센스,무료로 사용하기 https://github.com/artybug/TNSNamesSync/releases

이 문서는 여기:https://github.com/artchik/TNSNamesSync/blob/master/README.md

이것은 Windows 만,하지만.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top