2011-09-07 2 views
0

실제로 큰 문제가 있습니다! "DriverManager.getConnection (url, properties)"을 사용하여 oracle 데이터베이스에 대한 연결을 엽니 다. UNIX 시스템 (현재 VM에 있음)에서 함수가 연결을 반환 할 때까지 99 %의 시간이 필요하다는 문제가 발생합니다. 오라클의 연결 시간을 늘려서 SQLException을 얻지는 못했지만 연결을 얻으려면 최대 3 분이 필요합니다. 내 Windows 컴퓨터에서 연결이 1 초 이내에 반환됩니다.UNIX에서 Oracle DB에 Java getConnection이 충돌하거나 Windows보다 훨씬 오래 걸림

텔넷 to 서버 + 포트 작동, 핑 성공, traceroute 좋아 보인다. 나 또한 여러 VM 또는 다른 물리적 컴퓨터의 다른 데이터베이스에서 시도했습니다.

실제 JDBC 드라이버 "ojdbc6-11.2.0.2.0.jar"를 실행합니다.

누구든지 좋은 생각이 있습니까?

관련, philba

+1

JDBC 연결 URL을 공유 할 수 있습니까? –

+0

"jdbc : oracle : thin : @ 192.168.1.100 : 1523 : sid"- sid와 IP를 편집했습니다. – bachph

답변

2

오랜 시간이 지난 후에 우리는 문제를 알아 냈습니다. 고유 ID가 읽힌 지점에서 Oracle JDBC 드라이버가 차단되었습니다. VM의 인수를

-Djava.security.egd = 파일을 설정 한 후 :는/dev/urandom을

을 우리는 항상 적절한 시간에 경우 uniqueid을받을 것은 보증 할 수있다. 불행하게도 기본값 인/dev/random은 시스템에 충분한 엔트로피가있는 경우에만 고유 ID를 생성합니다.이 엔트로피는 종종 가상 시스템에서 누락됩니다.

어쩌면 여러분 중 일부는 여러분에게 도움이 될 것입니다.

1

그것은 조금 이상한하지만이 REVERSE DNS의 문제가 될 수 있습니다. 당신이 오라클 서버가 유닉스에있는 경우

는 다음을 시도 : 두 개의 이름 확인에 다른 뭔가가있는 경우

$ host IP_ADDRESS_OF_WIN_MACHINE 
$ host IP_ADDRESS_OF_LINUX_MACHINE 

을 참조하십시오. 그렇다면, LINUX IP에서 역 DNS 조회를 시도하는 것이 너무 오래 걸리는 경우 일 수 있습니다.

나에게 일어난 일입니다.

+0

Oracle 서버는 Windows에서 실행됩니다. 이름이 올바르게 해석됩니다. 또한 호스트 이름과 ip로 JDBC 연결 URL을 사용하려고했습니다. – bachph

+0

이름 확인에 문제가 없습니다. 아마도 ** REVERSE ** NAME RESOLUTION의 문제 일 것입니다. –

+0

서버에서 ** tcpdump **를 시도 할 수 있습니다. 각 구성과 함께 연결 패킷이 도착하는 정확한 순간을 확인합니다. –

관련 문제