我們通常在定位資料庫鎖問題時,通常希望找到哪個程序發出了哪個語句,鎖住了哪張表,一般我們通過查v$lock,然後找到sid,再到v$sesion裡找到這個程序的hash_value或pre_hash_value,然後根據hash_value定位到具體的語句。
可是,我們發現,通過jdbc連線上來的程序,它的hash_value是0,所以我們就無法定位這個程序執行的語句了,不過在oracle 10g之後,在v$session裡面多了個sql_id欄位,我們可以通過這個欄位來查具體語句。在9i及之前的版本就沒辦法了。開了個oracle服務請求,oracle工程師也沒有給出答案。提供一下語句:
10g之後,可以:
col sess format a15;
select decode(request,0,'holder: ','waiter: ')||sid sess,
id1, id2, lmode, request, type,block,ctime
from v$lock
where (id1, id2, type) in
(select id1, id2, type from v$lock where request>0)
order by id1, request;
/select sql_text from v$sqlarea where sql_id in
(select sql_id from v$session where sid=&1);
如何讓History命令顯示所執行命令的時間
history其實是乙個比較敏感的命令,它能記錄我們所執行過的命令語句,因此它對於我們追朔一些問題時能夠起到一定的幫助,那麼這個命令其實加上一些引數也是能夠起到不同的效果,甚至可以通過一些引數的修改來達到規避敏感關鍵命令輸入,以防被有心人檢視,那麼今天主要的問題就是解決history顯示出所有命令列...
程式是如何被計算機所執行的?
一 電腦程式 要明白程式是如何被計算機所執行的,首先要明白什麼是程式?先看看一下幾個問題 二 程式的執行過程 當我們輸入以下程式,編譯執行,計算機從螢幕輸出hello,world 整個過程計算機都怎麼運作的呢?include void main 計算機內部儲存的是0和1,計算機通過位資訊以及上下文來...
JDBC連線的方式
下面羅列了各種資料庫使用jdbc連線的方式,可以作為乙個手冊使用。1 oracle8 8i 9i資料庫 thin模式 class.forname oracle.jdbc.driver.oracledriver newinstance string url jdbc oracle thin local...