SEのほら何だっけアレBlog

SEのほら何だっけアレを書き留めておくブログです。今まで書き溜めた技術メモを掘り返して検証したりもします。あと、調べたことも忘れないうちに書き溜めておきます。

カテゴリ: DB

デッドロック対策の検討
http://ugya.tripod.com/deadlock/solution.htm

  • トランザクションの範囲を小さくする
  • システム全体でリソースのアクセス順を同じにする。
  • リソースのことを「表」だけだと思うのは間違いである。
  • 外部キー(Foreign Key)
  • 低レベルロック
  • 行ロック
  • リソースのアクセス順の管理
  • コンテナ
  • SQLException
  • フラグで調整
  • リソースをロックする時間を短くする
  • ロックするリソースの数を減らす
  • リソースをロックする順番を統一する
  • ユーザがリトライする
  • EJBの失敗「transient」を見つけてリトライする。
などなど、勉強させていただきました。
    このエントリーをはてなブックマークに追加 mixiチェック

元のURLがなくなってしまったので、そのまま貼り付ける。



データベース オラクルでロックしているセッションを確認するSQL文


OS Windows NT 4.0
Oracle Oracle8 server


SELECT V$SESSION.SID
      ,V$SESSION.SERIAL#
      ,SUBSTR(V$SESSION.MACHINE,1,20 )
      ,SUBSTR(V$SESSION.PROGRAM,1,20 )
      ,V$SESSION.USERNAME
      ,V$SESSION.COMMAND
      ,V$SESSION.LOGON_TIME
      ,V$TRANSACTION_ENQUEUE.LMODE
      ,V$TRANSACTION_ENQUEUE.REQUEST
      ,V$TRANSACTION_ENQUEUE.BLOCK
  FROM V$TRANSACTION_ENQUEUE
      ,V$SESSION
 WHERE V$SESSION.SID = V$TRANSACTION_ENQUEUE.SID
V$SESSION  :現行セッションの情報
    項目 COMMAND :実行中のコマンド (リリース8 リファレンス・マニュアル P3-79)
                 2 INSERT        3 SELECT
                 6 UPDATE        7 DELETE
V$TRANSACTION_ENQUEUE :ロックがかかったトランザクションの情報
    項目 LMODE  :セッションがロックを保持している状態 (リリース8 リファレンス・マニュアル P3-112)
         0 なし          1 NULL
         2 行共有        3 行ロック
         4 共有          5 共有/行ロック
         6 表ロック


SELECT V$SESSION.SID
      ,V$SESSION.SERIAL#
      ,SUBSTR(V$SESSION.MACHINE,1,20 )
      ,SUBSTR(V$SESSION.PROGRAM,1,20 )
      ,V$SESSION.USERNAME
      ,V$SESSION.COMMAND
      ,TO_CHAR(V$SESSION.LOGON_TIME,'YYYYMMDD HH24MISS')
      ,V$TRANSACTION_ENQUEUE.LMODE
      ,V$TRANSACTION_ENQUEUE.REQUEST
      ,V$TRANSACTION_ENQUEUE.BLOCK
      ,SUBSTR(V$ACCESS.OBJECT,1,50 )
  FROM V$TRANSACTION_ENQUEUE
      ,V$SESSION
      ,V$ACCESS
 WHERE V$SESSION.SID = V$TRANSACTION_ENQUEUE.SID
   AND V$SESSION.SID = V$ACCESS.SID
   AND V$SESSION.STATUS = 'KILLED'
  AND V$ACCESS.TYPE = 'TABLE'
V$ACCESS    :現在ロックされているDB内のオブジェクト、及びそのオブジェクトにアクセスしている
          セッションを表示します


ここで使用している項目はVIEWの中の一部です。
各VIEWの項目についてはリファレンスを参照してください。



うわ、安い 笑!!

    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ