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_home1
Oracle 홈입니다.라고 하는 문자열 엔트리가 있는 경우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
'source' 카테고리의 다른 글
페이지를 새로고침하지 않고 브라우저 주소 표시줄을 변경하는 방법 - HTML/Javascript (0) | 2023.02.12 |
---|---|
Woocommerce:제품의 모든 주문 접수 (0) | 2023.02.12 |
Visual Studio 코드에서 언어를 JSX로 변경 (0) | 2023.02.12 |
Respect-Intl 입력 플레이스 홀더에서 Formatted Message를 사용하는 방법 (0) | 2023.02.12 |
Wordpress pre_get_posts 범주 필터가 사용자 지정 메뉴 항목을 제거합니다. (0) | 2023.02.12 |