Oracle-무 TNS 이름의 파일을 사용하고 있습니까?
-
08-06-2019 - |
문제
가끔 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_home1
가 KEY_OraClient10_home1
귀하의 Oracle 다.이 있는 경우 문자열이라는 항목 TNS_ADMIN
, 다음 해당 항목의 값을 지정합니다 TNS 는 파일에 오라클에서 사용 컴퓨터입니다.
에서 개발 시스템 내가 세 가지 다른 버전의 오라클 클라이언트 소프트웨어입니다.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 만,하지만.