2012-04-04 6 views
1

Java 응용 프로그램 로그에서이 오류가 발생했습니다.이 오류는 Java DB 연결 풀을 사용합니다. 누구든지 Oracle 임시 테이블을 사용하기 전에이 문제를 경험 했습니까? 그리고 당신의 해결책은 무엇입니까? 어떤 도움이라도 대단히 감사합니다.ORA-14450 : 이미 사용중인 트랜잭션 임시 테이블에 액세스하려고 시도했습니다.

+0

해결 방법은 임시 테이블을 사용하는 방법과 작성 방법에 따라 달라질 수 있습니다. 'ON COMMIT PRESERVE ROWS'로 만들었습니까? 그렇다면 전체 세션 동안 실제로 데이터를 보존해야합니까? 트랜잭션의 데이터 만 보유하고있는'ON COMMIT DELETE ROWS'로 작업 할 수 있습니까? 우리에게 더 말해 ... –

+0

임시 테이블은 'ON COMMIT DELETE ROWS'로 작성되었으며 java 응용 프로그램에서 호출 한 pl/sql은 커밋을 발행하여 트랜잭션을 종료합니다. – tpeng

답변

2

연결을 종료하고 다시 시작하십시오. 프로세스가 실행 중인지 확인하려면 아래 코드를 사용하여 실행중인 프로세스를 찾으십시오.
오류 원인 : 동일한 세션의 동시 트랜잭션으로 이미 채워진 트랜잭션 임시 테이블에 액세스하려고했습니다.

조치 : 동시 트랜잭션이 커밋되거나 중단 될 때까지 임시 테이블에 액세스하려고 시도하지 마십시오.

SELECT 
    o.object_name 
, s.sid, s.serial# 
, s.username 
, s.osuser, s.machine 
, 'alter system kill session '''||to_char(s.sid)||','||to_char(s.serial#)||''';' ks 
FROM 
    user_objects o 
, v$lock a 
, v$session s 
WHERE 
o.object_name = 'table_name_here'  
AND a.id1 = o.object_id  
AND a.type = 'TO'  
AND a.sid = s.sid 
; 
관련 문제