現在ロック中のOracleセッションを表示するSQLとLinux用シェルです。
USER_ID/PASSWORDには「V$SESSION」「$TRANSACTION_ENQUEUE」などを参照できるユーザを指定してください。
oracleLockSessionShow.sh
# 「V$SESSION」「$TRANSACTION_ENQUEUE」を参照できるユーザを指定 USER_ID=scott PASSWORD=tigger INSTANCE_NAME=oracle # 「EOT」の前の「\」は変数展開をしない設定 sqlplus -s ${USER_ID}/${PASSWORD}@${INSTANCE_NAME} <<\EOT SET LINESIZE 1000 SET PAGESIZE 100 COLUMN SID FORMAT 999999 COLUMN SERIAL# FORMAT 9999999 COLUMN OBJECT_NAME FORMAT A30 COLUMN USERNAME FORMAT A20 COLUMN PROGRAM FORMAT A40 COLUMN MACHINE FORMAT A20 COLUMN OSUSER FORMAT A10 SELECT s.SID, s.SERIAL#, d.OBJECT_NAME, s.USERNAME, s.COMMAND, s.PROGRAM, s.MACHINE, s.OSUSER, t.LMODE, t.CTIME, s.STATUS FROM v$LOCKED_OBJECT l, DBA_OBJECTS d, V$TRANSACTION_ENQUEUE t, v$SESSION s WHERE l.OBJECT_ID = d.OBJECT_ID AND l.SESSION_ID = s.SID AND s.SID = t.SID ORDER BY 1, 4, 3 ; EOT echo "LMODE(ロック・モード):凡例" echo "0 なし" echo "1 Null(NULL)" echo "2 行共有(SS)" echo "3 行排他(SX)" echo "4 共有(S)" echo "5 共有/行排他(SSX)" echo "6 排他(X)" exit LMODE
2011/09/05 |
DBに関するCode Tips >