1. 程式人生 > >檢視當前oracle中正在執行的sql語句

檢視當前oracle中正在執行的sql語句

  1. 問題現象
    1. 最近一直在做,通過java後臺,如何知道Oracle正在執行sql。因為不能與客戶進行有效的溝通,也沒有到現場瞭解,資料是如何進行的匯入,所以這方面一直沒有得到有效的突破;
  2. 原因分析
    1. 在查詢資料的時候,發現了一條Sql語句。通過這條語句,可以知道當前連線的資料庫正在執行的sql語句是什麼。是一種比較有效的獲取當前資料庫動態的方式;
    2. 通過獲取當前執行的sql語句,來判斷當前資料庫是否有在執行;
  3. 處理步驟
    1. 先執行以下查詢語句

select a.program, b.spid, c.sql_text,c.SQL_ID

  from v$session a, v$process b, v$sqlarea c

 where a.paddr = b.addr

   and a.sql_hash_value = c.hash_value

   and a.username is not null;

  1. 效果

PROGRAM

SPID  

SQL_TEXT

SQL_ID

[email protected] (TNS V1-V3)

 12

 DECLARE   reason_id

65vuzhm491wk9

[email protected] (TNS V1-V3)

 25867

SELECT "AKB020" FROM "KB

09rp36jmgpj5a

[email protected] (TNS V1-V3)

 25869

   SELECT "AAC001","BTC102"

00931052n13uq

[email protected] (TNS V1-V3)

 3018

    SELECT "AAC001","BTC102"

00931052n13uq

plsqldev.exe

26531

   select a.program, b.spid

5qq47bz3tzfws

JDBC Thin Client

21074

  select * from ( select r

686nqabc8sgs2

  1. 如上表中的program列中的jdbc thin client代表的是通過jdbc連線執行的sql語句
  2. 由於sql_text列沒有顯示完整的sql語句,所以可以利用sql_id欄位686nqabc8sgs2再查詢v$sql
    1. Sql語句如下:

selecta.* from v$sql a where a.SQL_ID='686nqabc8sgs2'

可以檢視完整的sql文字內容