database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 913 게시물 읽기
No. 913
트랜잭션 commit
작성자
장정연
작성일
2006-02-02 17:49
조회수
5,592

웹 프로그램 실행 후, 트랜잭션 commit 이 되지 않았는지.. 특정 테이블에 대해서만 SELECT 및 기타 작업이 되지 않는데요..

db 콘솔 상에서 commit 이나 rollback 하는 방법이 없나요??

실행을 해봤지만.. 여전히 작업이 안되네요..

 

이런경우 어떻해야하나요?? 데이터베이스를 재시작 해야하나요??

이 글에 대한 댓글이 총 1건 있습니다.

특정프로그램의 트랜잭션이 끝나지 않고 오브젝트에 lock을 보유하고 있는경우에는 다른 프로그램에서 그 오브젝트를 lock으로 인해 access할수 없습니다.

그럴 경우에는 lock을 보유하고 있는 session을 찾아 강제로 force하셔야 합니다.

특정 테이블에 lock이 걸려 있는 경우 그 테이블을 access한 프로그램을 찾아야 한다.

db2에서는 snapshot 모니터링을 이용해 lock을 보유한 agent를 찾을 수 있다.

get snapshot 명령어를 사용해도 되고 snapshot 모니터 함수를 사용하셔도 됩니다.

snapshot 모니터 함수를 사용하는 방법

1) db2 get monitor switches

를 사용하여 switche가 ON되어 있는 지 확인한다.

2) lock이 걸려 있는 테이블 에 대해 selec문을 실행한다.

3) 다른 창에서 다음 snapshot 함수를 실행한다.

db2 "select agent_id,AGENT_ID_HOLDING_LK,table_name from table(snapshot_lockwait('DB명',-1)) as a "

 

agent_id 는 잠금 대기중인 agentid

agent_id_holding_lk는 잠금을 보유한 agentid

table_name는 locking중인 테이블

 

4) agent_id_holding_lk에 나오는 값은 lock을 보유한 agentid이다.

이값을 사용하여 해당 agentid을 force하면 된다.

db2 "force application (agentid)"

이렇게 하면 해당 session을 kill할수 있다.

 

 

김동주님이 2006-02-03 15:22에 작성한 댓글입니다.
이 댓글은 2006-02-03 15:26에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
916connect to [db명] 했더니 멈추는데.. [1]
타락천사
2006-02-08
4970
915DB2 6.1 설치후 실행 오류 [3]
이영재
2006-02-07
5353
914테이블의 필드명을 변경할수 있나요? 한글이 깨져서 ... 부탁드립니다. [1]
jinkuidong
2006-02-03
5366
913트랜잭션 commit [1]
장정연
2006-02-02
5592
912급함 ㅠㅠ aix 5 에 아파치+php+db2로만 설치를 했습니다. 여기에 오라클 쪽에 디비에 연결을 해야 되는데 [1]
허접쟁이
2006-01-29
4968
911Convert timestamp to milliseconds [1]
Hyung
2006-01-27
5929
910각 아이디별 최종 데이터값만 가져오기 [2]
빵꾸
2006-01-16
5114
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다