2015-02-02 2 views
6

32 비트 및 64 비트 Oracle 11g 드라이버를 모두 설치했습니다. 나는 다음과 같은 위치에있는 이름 "의 tnsnames.ora"를 가진 파일을 찾고 내 PC를 검색하고 3 발견 : tnsnames.ora 파일의 3 위치의 존재가 나를 놀라게관련 tnsnames.ora 파일의 위치 결정

1. C:\Oracle\product\11203_32bit\CLIENT_1\NETWORK\ADMIN 
2. C:\Oracle\product\11203_64bit\CLIENT_1\NETWORK\ADMIN 
3. C:\Windows\TNS 

. 나는 다음과 같은 오라클 클라이언트가 내 PC에 설치 한

는 :

각 프로그램의 위치를 ​​기반으로
"C:\Program Files (x86)\Quest Software\Toad for Oracle 11.6\Toad.exe" 
"C:\Program Files\Devart\dbForge Studio Express for Oracle\dbforgeoracle.exe" 

는 (프로그램 파일 (86) 대 C : \ 프로그램 파일)이 나에게 제안 그 32 비트 프로그램 인 Toad는 32 비트 드라이버를 사용해야하며 dbForge는 64 비트 드라이버를 사용해야합니다.

dbForge는 # 2 또는 # 3 위치의 tnsnames.ora 파일 중 하나를 사용하는 것으로 보입니다. 필자는 tns 파일 중 하나를 제외한 모든 파일의 이름을 체계적으로 변경 한 다음 파일에서 읽은 연결 이름이 응용 프로그램과의 새 연결을 만들 때 사용 가능한지 확인합니다.

그러나 TOAD는 위치 # 3의 tnsnames.ora 파일 만 인식하고 위치 2의 tnsnames.ora 파일을 전혀 인식하지 못합니다. (그것은 32 비트 프로그램 이었기 때문에 위치 2의 tns 파일을 인식하지 못했고 그 경우였습니다). 희망의 명확성을 위해 TOAD 테스트를 요약하기 위해 TOAD는 위치 3의 tns 파일 만 인식했습니다.

다른 동료는 자신의 컴퓨터에서 위치 3에 tns 파일을 가지고 있지 않습니다. 왜 내가하는지 모르겠다. Toad를 실행하면 32 비트 홈이 활성 상태 인 다음 2 홈이 표시됩니다.

OraClient11g_home1 (11.2.0.3) 
    ORACLE_HOME:C:\app\C39293\product\11.2.0\client_1 
    ORACLE_HOME_NAME:OraClient11g_home1 
    ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1 
    ORACLE_SID: 
    NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252 
    SQLPATH: 
    LOCAL: 
    Client DLL:C:\app\C39293\product\11.2.0\client_1\oci.dll 
    TNSNames.ora: 
    SQLNet.ora: 
    LDAP.ora: 
    Login.sql: 
    GLogin.sql: 
    In system PATH:No 
    Home is valid:No 
OraClient11g_home1_32bit (11.2.0.3) 
    ORACLE_HOME:c:\oracle\product\11203_32bit\CLIENT_1 
    ORACLE_HOME_NAME:OraClient11g_home1_32bit 
    ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1_32bit 
    ORACLE_SID: 
    NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252 
    SQLPATH:c:\oracle\product\11203_32bit\CLIENT_1\dbs 
    LOCAL: 
    Client DLL:c:\oracle\product\11203_32bit\CLIENT_1\bin\oci.dll 
    TNSNames.ora: 
    SQLNet.ora: 
    LDAP.ora: 
    Login.sql: 
    GLogin.sql:c:\oracle\product\11203_32bit\CLIENT_1\sqlplus\admin\glogin.sql 
    In system PATH:Yes 

Q1 : 집 OraClient11g_home1 내 64 비트인가 아니면 두 오라클 클라이언트가 설치되어 있습니까?

Q2 : 왜 32 비트 TOAD는 # 3 위치의 tns를 사용하는 대신 # 1 위치의 tns를 사용합니까?

Q3 : 내가 dbForge와 두꺼비 작업하지만 모두 내가 정확하게 한 시스템에서 다른 시스템으로 TNS 정보를 이동하는 방법을 이해할 수있는 이유를 알고 싶습니다, 위치 3의 TNS 파일을두면.

답변

4

의심되는 경로를 기준으로 두 개의 설치된 클라이언트가 있습니다 (두꺼비 및 dbforge는 클라이언트가 아닌 도구이므로 사용자의 용어가 약간 떨어져 있음). 하나는 32 비트이고 다른 하나는 64 비트입니다. Toad는 설치 경로에 따라 32 비트이지만 실행하고 도움말 | 지원 번들로 이동합니다. 맨 위의 헤더는 확인을 위해 "응용 프로그램 정보 (32 비트)"또는 "응용 프로그램 정보 (64 비트)"로 표시됩니다. Toad 11.6은 처음으로 64 비트 버전을 도입했습니다.

Toad에는 동일한 플랫폼 용 Oracle 클라이언트 만 표시됩니다. 따라서 64 비트 클라이언트는 Toad를위한 것이 아닙니다. C : \ Windows \ TNS는 TNS_ADMIN 폴더에 사용되는 폴더로, 홀수 위치와 Toad가 보는 사실을 감안할 때 사용됩니다. 명령 프롬프트에서 SET TNS_ADMIN을 실행하고 "TNS_ADMIN = C : \ Windows \ TNS"를보고하는지 확인하십시오. 그렇다면 모든 도구가 해당 tnsnames.ora를 사용해야합니다. 그것은 넷 구성 파일을 포함하는 폴더를 가리키는 경우 전역 대체입니다. 환경 변수로 TNS_ADMIN을 설정하지 않은 경우, Oracle 루트 레지스트리 (HKEY_LOCAL_MACHINE \ Software \ Oracle)에서 찾으십시오.

모든 도구에 공통된 연결 집합을 사용하는 경우 모든 tnsnames.ora 파일을 삭제합니다.또한 C : \ Windows \ TNS 폴더를 C : \ Oracle \ Admin과 같은 적절한 위치로 재배치하고 tnsnames.ora, sqlnet.ora 및 ldap.ora (해당되는 경우)를 만듭니다. 해당 위치를 가리키는 TNS_ADMIN 환경 변수를 작성하십시오.

+0

사실, 집이 3 개있는 것 같습니다. Toad는 2 개를 찾았으며 64 비트가 설치되어있는 것으로 보입니다. –

+0

예, cmnd 창을 열고 echo % TNS_ADMIN %을 입력하면 C : \ Windows \ TNS가 표시됩니다. 따라서 이전에 인식하지 못했던 환경 변수가있는 것처럼 보입니다. 그게 내가 필요로하는 정보가 빠져있는 것처럼 보입니다. 고맙습니다. – ChadD

+0

'HKEY_LOCAL_MACHINE \ Software \ Oracle'은 x64 Oracle Client 용입니다. 32 비트 클라이언트가'HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Oracle'에서 검색합니다. –

4

오라클에 따르면이 위치는 tnsnames.ora으로 검색됩니다. sqlnet.oraldap.ora :

    현재 작업 디렉토리에
  1. 오라클 넷 파일 (PWD/CWD)는
  2. TNS_ADMIN는 sessionally 나에 정의 된 글로벌 환경 변수
  3. TNS_ADMIN로 정의 된 사용자 정의 스크립트
  4. TNS_ADMIN에 의해 정의 레지스트리
  5. 오라클 네트 파일 %ORACLE_HOME/network|net80\admin (오라클 기본 위치)

그러나 각 응용 프로그램/드라이버가이 목록을 따르는 지 여부는 확실하지 않습니다. 이 목록은 Oracle 9i를 참조하는 Oracle Document 111942.1이므로 구식 일 수 있습니다.

TNS_ADMIN에 대한 환경 변수를 정의하고 하나의 tnsnames.ora 파일 만 사용하는 것이 좋습니다. 안전한 측면을 유지하려면 레지스트리 값도 확인하십시오.

파일은 하지 %ORACLE_HOME%\network\admin에 위치한, 나는 그것을 위해 심볼릭 링크를 생성하는 것이 좋습니다 경우 - 다만 매우 안전 측면, 예를 들어,에있을 mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

tnsnames.ora 파일을 "재생"할 필요가 없습니다.

  1. 환경 변수 : 필터가 Path contains tnsnames

    업데이트 내 컴퓨터에서 테스트를 실행하면

    나는 다음과 같은 얻을 순서 것, 즉 마이크로 소프트 시스 인 터널에서 Process Monitor하면, 각각의 파일 액세스를 모니터링 할 수 있습니다 TNS_ADMIN

  2. 레지스트리 키 HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. 레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> 경우에만 TNS_ADMIN 환경 변수가 설정되지 않았습니다. 응용 프로그램이있는

  4. 폴더 (응용 프로그램이있는 디렉토리와 다를 수 있습니다)

  5. %ORACLE_HOME%\network\admin
  6. 현재 디렉토리가

업데이트 2

가 분명히있다 없음 수정 검색, 그것은 다른 공급자/드라이버에 대해 다릅니다. 어쩌면 오라클 버전에 의존 할 수도 있습니다.

예를 들어, ODP.NET Managed Driver (Oracle.ManagedDataAccess) 베타 버전, 내가 Oracle Managed and TNS Names에서 순서를 발견 닷넷 설정 파일에 <oracle.manageddataaccess.client> 섹션에서 '데이터 소스'섹션에서

  1. 데이터 소스 별칭 (즉 machine.config, web.config, user.config).
  2. tnsnames.ora 파일의 데이터 소스 별칭은 .NET 구성 파일의 TNS_ADMIN에 지정된 위치에 있습니다.
  3. .exe과 동일한 디렉토리에있는 tnsnames.ora 파일의 데이터 원본 별칭입니다.
  4. tnsnames.ora 파일의 데이터 원본 별칭은 %TNS_ADMIN%
    (여기서 %TNS_ADMIN%은 환경 변수 설정 임)에 있습니다. (%ORACLE_HOME%는 환경 변수 설정은) %ORACLE_HOME%\network\admin
    에서 tnsnames.ora 파일에 존재
  5. 데이터 소스 별칭. 공식 documentation에서

(12C 릴리스 4)는 말한다 : 닷넷 설정 파일의 dataSources 섹션 <oracle.manageddataaccess.client> 아래 부분에

  1. 데이터 소스 별칭 (즉 machine.config, web.config, user.config).
  2. tnsnames.ora 파일의 데이터 소스 별칭은 .NET 구성 파일의 TNS_ADMIN에 지정된 위치에 있습니다. 위치는 절대 또는 상대 디렉토리 경로로 구성 될 수 있습니다.
  3. .exe과 동일한 디렉토리에있는 tnsnames.ora 파일의 데이터 원본 별칭입니다. 내가 ODP.NET 관리 드라이버 (4.121.2.0)는 고려 %ORACLE_HOME%\network\adminTNS_ADMIN 환경 변수를 필요로 만든 몇 가지 테스트를 기반으로하지만

. 설명서와 같은 잠금이 100 % 정확하지 않습니다.