Oracle - 어떤 TNS 이름 파일을 사용하고 있습니까?


Answers

리눅스의 경우 :

$ 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'

실패한 모든 파일 경로를 표시합니다.

Question

때로는 데이터베이스 연결 클라이언트가 사용하고있는 tnsnames.ora 파일을 알 수 없기 때문에 오라클 연결 문제가 발생합니다.

이것을 파악하는 가장 좋은 방법은 무엇입니까? ++는 다양한 플랫폼 솔루션에 만족합니다.




가장 쉬운 방법은 아마 데이터베이스에 연결하는 프로세스의 PATH 환경 변수를 확인하는 것입니다. 대부분의 경우 tnsnames.ora 파일은 경로 .. \ network \ admin의 첫 번째 Oracle bin 디렉토리에 있습니다. TNS_ADMIN 환경 변수 또는 레지스트리 값 (현재 Oracle 홈의 경우)이이를 대체 할 수 있습니다.

다른 사람이 제안한 것처럼 filemon을 사용하면 트릭을 수행 할 수 있습니다.




Codeslave는 "$ ORACLE_HOME / 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 기반 오라클 네트워킹의 경우 일관된 tnsnames.ora 파일을 얻는 유일한 방법은 TNS_ADMIN 변수를 사용하는 것입니다. (참고 : Windows 중심 답변)




Windows의 경우 : SysInternals의 Filemon 에서 액세스되는 파일을 표시합니다.

대화 형 파일 시스템 트래픽에 압도 당하지 않도록 필터를 설정해야합니다.

추가 : Filemon은 최신 Windows 버전에서는 작동하지 않으므로 Process Monitor 를 사용해야 할 수도 있습니다.




항상 "$ ORACLE_HOME / network / admin / tnsnames.ora"가 아니어야합니까? 그런 다음 "echo $ oracle_ home"또는 * nix에 해당하는 것을 수행 할 수 있습니다.

@ Pete Holberton 당신은 완전히 맞습니다. 어느 쪽이 나를 생각 나게하는지, TWO_ TASK라고 불리는 다른 원숭이 렌치가있다.

http://www.orafaq.com/wiki/TNS_ADMIN 에 따르면
TNS_ADMIN은 SQL * Net 구성 파일 (예 : sqlnet.ora 및 tnsnames.ora)이 위치한 디렉토리를 가리키는 환경 변수입니다.




Links