문제

최근에 물리적 DB, 새로운 서버, 새 위치, 동일한 데이터베이스 스키마 및 데이터를 변경했으며 변경 이후, 우리가 자체 데스크탑 유형 애플리케이션에서 DB에 직접 연결하려고 할 때 마다이 오류가 발생합니다.

SQL*Loader-704: Internal error: ulconnect: OCIServerAttach[0]
ORA-12545: Connect failed because target host or object does not exist

나머지 시간에는 문제없이 즉시 연결됩니다. JDBC를 통해 연결을 설정하는 응용 프로그램에는 아무런 문제가없는 것 같지만 TNSNAME.ORA 조회를 수행하는 일을 할 때 (또는 적어도 내 직감입니다). tnsping은 100% 작동하지만 sqllddr과 같은 Oracle 실행 파일을 사용하면 시간이 50% 이상 실패합니다. 다음은 TSNNAMES 파일의 익명화 된 SNPPET과 TNSPING 출력입니다.

DB_CONNECTION =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = MY.URL.COM)
  )
)

그리고 tnsping :

C:\>TNSPING DB_CONNECTION
TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\oracle\ora92\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 1.2.3.4)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MY.URL.COM)))
OK (200 msec)

나는 DB의 SID를 가지고 있는데, 이것은 JDBC 연결이 의존하지만 tnsnames.ora에 추가하는 것은 연결 가능성을 향상시키지 않습니다. Oracle에서 TNSNAME 파일을 사용 하여이 문제를 지능적으로 해결하기 위해 TNSNAME 파일을 사용하는 방법에 대해 충분히 알지 못합니다. 따라서 제안 사항이 있거나 분명히 누락 된 것을 보면 알려주십시오.

편집 : 새로운 DB는 문제의 일부일 수있는 두 개의로드 균형 데이터베이스 일 수 있습니다.

도움이 되었습니까?

해결책

최근에 응용 프로그램과 비슷한 문제가있었습니다. 응용 프로그램은 때때로 Oracle RAC에 연결되며 때로는 ORA-12545에 불만을 제기 할 수 있습니다. 간단히 말해서, 우리가 tnsnames.ora에서 가상 IP 주소를 사용하는 동안 서버의 실명을 가지고 있다는 것이 문제였습니다. System32 drivers etc hosts 파일을 통해 서버 이름의 매핑을 IP 주소에 추가하면 모든 것이 제대로 작동하기 시작했습니다.

나는 내 블로그에서 조금 더 썼다u003Cshameless advert>http://dcarapic.blogspot.com/2009/04/intermittent-ora-12545-error.htmlu003C/shameless advert>

다른 팁

아, 간헐적 인 문제를 좋아해야합니다.

항상 동일한 OS 사용자를 사용하여 TNSPing을 연결하고 수행하고 있습니까?

환경 변수 확인 tns [밑줄] 관리자가 다른 tnsnames.ora 위치를 가리키는 관리자. 중복 tnsnames.ora를 위해 클라이언트를 스캔하십시오. $ tns [밑줄] 관리자 또는 다른 $ Oracle [밑줄] 주택 (예 : Oracle 클라이언트 설치가 2 개있는 경우)을 가리키는 위치에서.

마찬가지로 모든 연결 시도 및 tnsping에 대해 동일한 $ oracle [밑줄] 주택 및 $ 경로 환경 변수를 사용하고 있는지 확인하십시오. (예 : 항상 동일한 OS 사용자 또는 각 사용자는 동일한 값을 가지고 있습니다)

TNSPing 출력이 버전 9.2를보고하므로 가능성이 없지만 11G에서는 DB가 1 분 정도 걸릴 수있는 리스너와 레지스터를 등록합니다. (아마도 10g도 마찬가지입니다). 이 전에 연결하려는 시도는 대상을 찾지 못할 것입니다.

또 다른 가능성이없는 가능성 - 이전 호스트 서버에 여전히 동일한 서비스 이름을 가진 서비스입니까? 가능하면 제거하십시오.

그 후 나는 네트워크 자체를보기 시작할 것입니다. 서버의 핑은 항상 성공적이고 빠릅니까? tnsnames.ora에서 IP 대신 호스트 이름을 사용하는 경우 호스트 이름이 올바른 IP (NSLookup)로 안정적으로 해결됩니다. 로컬 방화벽이 있습니까? 그렇다면 작동합니까?

Karl에 대한 안부

사용중인 경우 Oracle 10g, 당신은 an을 사용할 수 있습니다 Easy Connect 대신 핸들러 :

//servername/instancename

,

//1.2.3.4/my.url.com

당신의 경우.

면역적입니다 많이TNSNAMES 문제.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top