source

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

manysource 2023. 2. 12. 18:10

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

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

이걸 알아내는 가장 좋은 방법이 뭐죠?++다양한 플랫폼 솔루션에 만족합니다.

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디렉토리로 이동합니다.

Linux의 경우:

$ 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 로케이션이 격납되어 있는 다른 장소가 있습니다.Windows 를 사용하고 있는 경우는,regedit으로 이동합니다.My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1어디에KEY_OraClient10_home1Oracle 홈입니다.라고 하는 문자열 엔트리가 있는 경우TNS_ADMIN이 엔트리의 값은 Oracle이 컴퓨터에서 사용하고 있는TNS 파일을 가리킵니다.

개발 머신에는 3가지 버전의 Oracle 클라이언트 소프트웨어가 있습니다.관리하다tnsnames.ora그 중 하나를 줄서서 제출해나머지 2개의 경우, 나는 그 안에 들어갔다.tnsnames.ora파일:

ifile=path_to_tnsnames.ora_file/tnsnames.ora

이런 식으로, 만약 어떤 이유로 잘못되었다면tnsnames.ora파일이 클라이언트에 의해 사용되므로 항상 최신 버전이 됩니다.

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 기반의 Oracle 네트워킹에서는 TNS_ADMIN 변수를 사용하는 것만이 일관된 tnsnames.ora 파일을 얻을 수 있는 유일한 방법입니다.(주의: Windows 중심 답변)

Windows 의 경우:SysInternals의 Filemon은 액세스 중인 파일을 보여줍니다.

채팅이 많은 파일시스템트래픽에 압도당하지 않도록 필터를 설정하는 것을 잊지 말아 주세요.

필터 대화 상자

추가: Filemon은 새로운 Windows 버전에서는 동작하지 않기 때문에 프로세스 모니터를 사용해야 할 수 있습니다.

디폴트로는 tnsnames.ora는 UNIX 운영체제에서는 $ORACLE_HOME/network/admin 디렉토리에 있고 Windows 운영체제에서는 ORACLE_HOME\network\admin 디렉토리에 있습니다.tnsnames.ora는 다음 위치에 저장할 수도 있습니다.

TNS_ADMIN 환경변수(또는 레지스트리 값)에 의해 지정된 디렉토리

UNIX 운영 체제의 경우 글로벌컨피규레이션디렉토리예를 들어 Solaris 운영 체제에서 이 디렉토리는 /var/opt/oracle입니다.

여러 ORACLE_HOME이 있는 경우 tnsnames.ora 파일의 위치는 ORACLE_HOME마다 다를 수 있으므로 어떤 ORACLE_HOME을 사용하고 있는지 확인하십시오.

TWO를 언급하신 분에게...TASK 환경변수: 연결할 기본 데이터베이스 서비스 이름(다른 서버의 데이터베이스일 수 있음)을 설정하는 데 사용됩니다.설정한 서비스 이름 TWO_TASK to는 연결 시 tnsnames.ora 파일에서 검색됩니다.

항상 "$ORACLE_HOME/network/admin/tnsnames.ora"여야 하지 않나요?그런 다음 "echo $oracle_ home" 또는 *nix와 동등한 기능을 사용할 수 있습니다.

@Pete Holberton 당신이 전적으로 옳습니다.그러고 보니 '투 태스크'라는 또 다른 몽키 렌치가 있어요

http://www.orafaq.com/wiki/TNS_ADMIN에 따르면
TNS_ADMIN SQL*Net ( sqlnet . ora t tnsnames . ora ) 。

strace sqlplus -L scott/tiger@orcl 데 도움이 되다.tnsnames.ora/home/oracle 수 .$ORACLE_HOME/network/admin/tnsnames.ora파일입니다 게시해 주셔서 감사합니다

질문에 대한 직접적인 답변은 아니지만, 클라이언트, BI 툴, OWB 등 여러 개의 오라클을 설치했기 때문에 모든 tnsnames 파일을 검색 및 업데이트하려고 할 때 매우 당황했습니다.TNSNameSync라는 유틸리티를 작성했습니다.이 유틸리티는 모든 Oracle 홈의 모든 tnsname을 갱신합니다.MIT 라이선스에 따라 무료로 이용하실 수 있습니다.https://github.com/artybug/TNSNamesSync/releases

문서는 https://github.com/artchik/TNSNamesSync/blob/master/README.md에 있습니다.

다만, 이것은 Windows 전용입니다.

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

다른 사람이 제안하는 파일몬을 사용하는 것도 효과적입니다.

언급URL : https://stackoverflow.com/questions/10499/oracle-what-tns-names-file-am-i-using