db2 운영중 아래의 쿼리를 이용하면 현재 lock 이 풀리기를 대기하는 어플리케이션에 대한 정보를 얻을 수있습니다.

db2pd -d <dbname> -lock wait show detail       : trans_id 확인
db2pd -d <dbname> -lock tran show detail       : agent_id 확인
db2 get snapshot for application agentid <agentid>     : 해당 appl 정보 추출



이상의 3개의 커맨드를 입력하여 얻을 수도 있는 정보이지만, 아래의 쿼리를 이용하면 좀더 간단하게 원하는 결과값을 얻을 수 있습니다.

(물론 db2pd 를 이용해서 간단한 쉘이나 프로그램을 만드는 것이 더욱 좋은 방법이라고 생각합니다. 아래의 방법보다 더 자세한 결과를 얻을 수 있기 때문이죠. 물론 snapapp_info 뷰를 이용하면 좀더 데이터를 얻을 수 있기는 합니다.)

SELECT
 L.DB_NAME,
 L.AGENT_ID,
 L.APPL_NAME,
 L.LOCK_OBJECT_TYPE,
 A.APPL_NAME,
 A.APPL_STATUS,
 A.TPMON_CLIENT_USERID,
 A.TPMON_CLIENT_WKSTN,
 A.TPMON_CLIENT_APP,
 A.TPMON_ACC_STR,
 L.AGENT_ID_HOLDING_LK,
 L.LOCK_WAIT_START_TIME,
 L.LOCK_NAME,
 L.LOCK_MODE
FROM
 SYSIBMADM.LOCKWAITS L
INNER JOIN
 SYSIBMADM.SNAPAPPL_INFO A
ON
 L.AGENT_ID = A.AGENT_ID;
SELECT
 L.DB_NAME,
 L.AGENT_ID_HOLDING_LK,
 L.APPL_NAME,
 L.LOCK_OBJECT_TYPE,
 A.APPL_NAME,
 A.APPL_STATUS,
 A.TPMON_CLIENT_USERID,
 A.TPMON_CLIENT_WKSTN,
 A.TPMON_CLIENT_APP,
 A.TPMON_ACC_STR,
 L.AGENT_ID,
 L.LOCK_WAIT_START_TIME,
 L.LOCK_NAME,
 L.LOCK_MODE
FROM
 SYSIBMADM.LOCKWAITS L
INNER JOIN
 SYSIBMADM.SNAPAPPL_INFO A
ON
 L.AGENT_ID_HOLDING_LK = A.AGENT_ID;

결국 본인이 사용하기 쉬운 방법을 이용하는게 좋을 것 같습니다.

쉘을 이용한 프로그램은 다음에~... :-) 사실은 잘 못해서... ㄷㄷ
크리에이티브 커먼즈 라이선스
Creative Commons License

설정

트랙백

댓글