jsp에서 저장 프로 시저를 호출하는 tomcat 서버가 있습니다. 저장 프로 시저에서 데이터가있는 임시 테이블을 채우는 쿼리가 있습니다. 그런 다음 임시 테이블은 힌트 -을 사용하여 다른 임시 테이블을 채우기 위해 dblink를 통해 다른 테이블에 조인됩니다. 마지막 임시 테이블은 데이터베이스의 다른 테이블에 조인되어 결과 집합을 Tomcat에 반환합니다.데이터베이스 연결 연결 시간이 초과되었습니다.
죄송 합니다만이 모든 코드 예제를 제공 할 수는 없지만 내가 가지고있는 문제는 다음과 같습니다. - 데이터베이스 링크를 사용하지 않고 잠시 후에 링크를 사용하여 만든 첫 번째 쿼리 아무것도하지 않고 오류를 반환합니다.
test.jsp caught exception, closing connection: ORA-02068: following severe error from DATABASE_LINK_NAME
ORA-03135: connection lost contact
마지막 호출에서 10 분 정도 후에 데이터베이스 링크에서 수행되는 모든 쿼리는 문제가되지 않습니다. 임시 테이블이 크거나 작을 수 있지만 쿼리 된 데이터 양은 아무런 차이가없는 것으로 보입니다. 유휴 시간이 지나면 첫 번째 호출에서이 오류가 발생할 확률은 아마 75 %입니다. 누구든지이 문제를 경험 했습니까? 그렇다면 해결 방법이 있습니까?
쿼리과 같이 구성되어있다 :
INSERT INTO temp_table_2
WITH last_submissions AS (
SELECT /*+ DRIVING_SITE(some_schema.some_table_1) */
bs.unique_id,
CASE WHEN COUNT(bs.unique_id) > 1 THEN 'Y' ELSE 'N' END some_flag,
MAX(trx.unique_id) last_submission
FROM (SELECT unique_id
FROM temp_table_1) oids,
[email protected]_LINK bs,
[email protected]_LINK trx
WHERE oids.unique_id = bs.unique_id
AND bs.non_unique_join_id = trx.non_unique_join_id
GROUP BY bs.unique_id),
something_relevant AS (
SELECT /*+ DRIVING_SITE(some_schema.some_table_2) */
last_value_of_something.unique_id,
last_value_of_something.some_flag,
mv.value_description status
FROM (
SELECT /*+ DRIVING_SITE(some_schema.some_table_1) */
ls.unique_id,
CASE WHEN COUNT(ls.unique_id) > 1 THEN 'Y' ELSE 'N' END some_flag,
MAX(prd.prd_some_id) last_submission
FROM last_submissions ls,
[email protected]_LINK trx,
[email protected]_LINK prd
WHERE ls.last_submission = trx.unique_id
AND trx.some_unique_id = prd.some_unique_id (+)
GROUP BY ls.unique_id) last_value_of_something,
[email protected]_LINK prd,
[email protected]_LINK cs,
[email protected]_LINK mv
WHERE last_value_of_something.last_submission = prd.prd_some_id (+)
AND prd.some_id = cs.some_id (+)
AND cs.status_code = mv.value (+)
AND mv.value_type (+) = 'SOME_INDICATOR_FOR_DISPLAY_VALUES')
SELECT ls.unique_id unique_id,
NVL(pr.status, trx.some_code) status,
CASE WHEN ls.some_flag = 'Y' OR pr.some_flag = 'Y' THEN 'Yes' ELSE 'No' END display_the_flag
FROM /*+ DRIVING_SITE(some_schema.some_table_1) */
last_submissions ls,
[email protected]_LINK trx,
something_relevant pr
WHERE ls.last_submission = trx.unique_id
AND ls.unique_id = pr.unique_id
유휴 기간 후에 연결을 끊는 두 데이터베이스 사이에 방화벽이 있습니까? 10 분 후에있을 것 같네요. 네트워크 오히려 오히려 오히려 오히려보다는 오히려 어쨌든, 같이 소리가 난다. –