2012-03-13 46 views
3

我從一臺計算機在下面的查詢似乎就先掛了幾天追蹤:user_tables如何鎖定Oracle?

SELECT table_name FROM user_tables 

怎麼可能產生這樣的鎖?用戶不能修改此表;並且有很多這個查詢的後續實例成功運行。

+0

不幸的是,系統不能直接訪問,必須重新啓動服務才能解決問題;我試圖找出如何防止這種情況再次發生...... – 2012-03-13 12:54:06

+0

這是Windows上的Oracle 10.2.0.4,如果這是相關的...... – 2012-03-13 13:09:26

+0

想知道它是否是一個通信問題;這是在Python中使用cxOracle – 2012-03-13 13:18:25

回答

3

因此,由於條件不再存在,因此無法告訴發生了什麼。但是,在未來,如果再次發生此類或類似事情,您將需要使用Oracle的等待界面。也就是說,看看V$SESSION。首先,您需要確定進程是在旋轉(即在CPU上)還是阻塞(即等待等待事件)。以確定的方式,就是看STATE柱:

  • 如果狀態爲'WAITING',那麼會話被阻塞。如果是這種情況,那麼EVENT列應該描述會話等待的事件。
  • 如果STATE不是'WAITING',那麼會話在CPU上,而EVENT列是它最後一次等待的東西。
    • 如果STATE是'WAITED KNOWN TIME',那麼WAIT_TIME是以釐秒爲單位的時間。
    • 如果狀態爲'WAITED SHORT TIME',則會話等待時間不到一釐秒。
    • 如果STATE爲'WAITED UNKNOWN TIME',則等待的時間未知,因爲會話的timed_statistics設置爲FALSE。

希望有所幫助。

+1

好的編輯工作,彼得。謝謝! :-) – 2012-03-13 15:54:35