티스토리 뷰

참고 : http://www.websphere.pe.kr/xe/?mid=was_technotes&page=5&document_srl=2669


아시다시피, 오라클과 XA 연동을 하는 경우라면 오라클 서버 쪽에 다음 설정을 해 주셔야 합니다. 그렇지 않으면 WAS 재시작 시에 권한 부족으로 에러가 나며 XA 트랜잭션 복구가 실패 할 수 있죠. 

 
As user SYS, run the following commands on your Oracle server:
grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
grant execute on dbms_system to <user>;
User is a user ID in the application server that is authorized to perform transaction recovery for the XA data source. If you have not authorized any user IDs to perform transaction recovery, the application server will use the login alias for the data source as the user ID.

This problem is mentioned under Oracle bug: 3979190. Running the preceding commands solves the problem.


그런데, 이 중, SYS.DBMS_SYSTEM 관련 설정은 11g 이후에는 더 이상 필요가 없어질 것 같습니다. 

이유는 아래 블로그를 참고하시면 됩니다. 

http://database-diva.com/blog/?p=6

요약하자면, xarecover 라는 function이 오라클의 DIST_TXN_SYNC 라는 프로시져를 호출하는데 이 프로시져가 SYS.DBMS_SYSTEM 이라는 패키지에 포함이 되어 있답니다. 그런데 이 패키지에는 보안상으로 중요한 프로시져들이 많이 포함되어 있기 때문에 JDBC 유저에게 이 패키지에 대한 권한을 열어주는 것은 부당하다는 겁니다. 따라서 오라클 11g 에서는  DIST_TXN_SYNC 프로시져를 따로 떼어서 DBMS_XA 라는 패키지로 옮겼고, 이 패키지는 권한이 public 이므로 더 이상 SYS.DBMS_SYSTEM 에 대한 권한을 JDBC 유저에게 열어 줄 필요가 없게 되었다네요. 

이것을 가능케 하려면 오라클 11g 이전 버전의 경우 bug 5945463 (DB 서버) 및 bug 5892995 (DB 클라이언트)에 대한 패치가 필요하답니다. 그리고, 이 프로시져가 JDBC 드라이버에서 호출되는 것이므로 패치 후 이전 JDBC 드라이버도 패치된 것으로 교체를 해 주셔야 하구요.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31