user_tablesがOracleでロックされる方法は?
-
13-12-2019 - |
質問
私は日次のクエリが日々吊るされたように見えたマシンからのトレースバックを持っています:
SELECT table_name FROM user_tables
.
そのようなロックを生み出す可能性があるものは何ですか?ユーザーはこのテーブルを変更することはできません。そしてこのクエリの後続のインスタンスが正常に実行された例がありました。
解決
だから、状態が存在しないので、何が起こったのかを伝える方法はありません。
しかし、将来的には、これも同様の場合にも、OracleのWait Interfaceを使用することをお勧めします。つまり、V$SESSION
を見てください。
最初に、プロセスが回転しているか(すなわち、CPU上で)ブロック(すなわち待ち出しイベントを待つ)かを判断する。それを判断する方法は、STATE
列を見ることです。
- 状態が
'WAITING'
の場合、セッションはブロックされます。その場合、イベント列はセッションがどのイベントであるかを説明する必要があります。 - 状態が「待機」以外のものであれば、セッションはCPU上であり、イベント列は最後に待っているのです。
- 状態が
'WAITED KNOWN TIME'
の場合、wait_timeはセンチ秒単位で待っている時間です。
- 状態が
- 状態が
'WAITED SHORT TIME'
の場合、セッションはセンチ秒未満の待ち時間を待った。 - Stateが
'WAITED UNKNOWN TIME'
の場合、timed_statisticsがセッションでfalseに設定されているため、時間はわかりません。
助けを願っています。
所属していません StackOverflow