如何抓到jdbc連線的所執行的sql語句

2021-05-22 08:55:06 字數 720 閱讀 2336

我們通常在定位資料庫鎖問題時,通常希望找到哪個程序發出了哪個語句,鎖住了哪張表,一般我們通過查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...