Oracle 데이터베이스 쿼리에 대한 연결/쿼리 시간 초과를 지정할 수 있습니까? Oracle 측 또는 Oracle JDBC 드라이버 (10.2.0.4)에서? 오라클이 쿼리 실행을 끝낼 때까지 기다리는 대신 2 분이 지나면 Java 클라이언트가 오류를 반환합니다.Oracle 연결/쿼리 시간 초과
답변
트랜잭션 컨텍스트에서 쿼리를 실행하는 경우 JTA 트랜잭션 모니터의 트랜잭션 시간 초과 값이 쿼리 제한 시간의 결정 요소가됩니다. 이 구성은 응용 프로그램 서버마다 다릅니다.
개별 쿼리 수준 (JTA 트랜잭션 모니터가없는 경우)에서는 setQueryTimeout 메서드를 사용하여 Statement/PreparedStatement/CallableStatement 개체 실행시 제한 시간을 설정할 수 있습니다. 그것은 (이어야 J2SE 클라이언트에서) 작동하지만
업데이트
setQueryTimeout가 의존 할 수 없습니다. Oracle 드라이버는 JDBC 드라이버를 통해 Oracle 데이터베이스 서버로 전체 라운드 트립을 수행합니다. 그런 다음 데이터베이스가 쿼리 실행을 중단합니다. 시간이 중요한 응용 프로그램에 의존하지 마십시오.
오라클 프로파일을 살펴보십시오. 이렇게하면 데이터베이스 수준에서 몇 가지 제한을 지정할 수 있습니다. 그 중 하나는 쿼리 당 최대 CPU 시간입니다.
정기적으로 2 분 이상 쿼리를 실행하는 경우 먼저 쿼리를 조정해야 할 수 있습니다.
Oracle 프로필은 사용자에 대한 모든 쿼리에 영향을줍니다. 영업 담당자는 취소해야하는 특정 쿼리에만 관심이있을 수 있습니다. –
그러나 이것은 무차별 대용 솔루션으로 작용할 것입니다 :-) –
setQueryTimeout이 작동하지 않으면 오라클 프로파일이 다음 단계가됩니다. :) –
- 1. Oracle - OCI 쿼리 시간 초과
- 2. .net 응용 프로그램의 oracle 연결 시간 초과
- 3. 회원 시간 초과 및 세션 시간 초과
- 4. 시간 초과
- 5. OCCI에서 연결 시간 초과 받기
- 6. ASP.Net AJAX 시간 초과 요청이 시간 초과 기간보다 오래 완료되었지만
- 7. nginx php5-fpm 업스트림 시간 초과 (110 : 연결 시간 초과)
- 8. PageMethod 기본 시간 초과
- 9. jQuery에서 시간 초과 설정.
- 10. NSURLConnection 시간 초과?
- 11. SQL 서버 시간 초과
- 12. 플렉스 스트리밍 시간 초과
- 13. IDbTransaction 롤백 시간 초과
- 14. ASP.NET의 세션 시간 초과
- 15. Tomcat 요청 시간 초과
- 16. 자동 세션 시간 초과
- 17. Silverlight - 시간 초과 문제
- 18. ASIHTTPRequest 시간 초과
- 19. QNetworkAccessManager 시간 초과
- 20. MSMQ -받는 시간 초과
- 21. jQuery 시간 초과 설정
- 22. 세션 시간 초과 문제
- 23. 잡기 시간 초과 오류가
- 24. SQL은 연결 시간 초과
- 25. `eval` 호출 시간 초과
- 26. 타이머가있는 세션 시간 초과
- 27. 아음속 시간 초과 명령
- 28. Java - url 시간 초과
- 29. PHP와 MySQLi 시간 초과
- 30. 세션 시간 초과 (PHP)
JTA 시간 초과 문제는 실행중인 쿼리에 영향을주지 않으므로 문제가 있습니다. 그리고 실제로 실행중인 WebLogic 서버는 장시간 실행중인 연결을 종료하려고 시도하고 다른 스레드를 생성하지만 Oracle JDBC 드라이버에서 Java 잠금을 사용하여 두 스레드가 대기하도록합니다. WebLogic은 더 많은 킬러 쓰레드를 만들려고 시도하고 결과적으로 쓰레드가 부족해 지므로 문제는 더욱 심각해집니다. –
setQueryTimeout에 대한 요점은 매우 intresting 것으로 보인다 나는 전에 actuallly 생각하지 않았습니다 :). setQueryTimeout이 질의를 취소하는 데 시간이 좀 걸리는지 여부는 신경 쓰지 않습니다. 주요 결과는 다음과 같습니다. :) 나는 시험 결과를 다시 얻을 것이다. –
WLS에서 setQueryTimeout()이 작동하지 않는 이유는 JTA 때문에 더 그렇습니다. 나는 드라이버가 트랜잭션 컨텍스트에서 setQueryTimeout 호출에 응답 할 것이라고 생각하지 않지만 올바르지 않을 수 있습니다. –