您的位置:首页 > 数据库 > Oracle

查看当前oracle中正在执行的sql语句

2017-01-28 11:50 489 查看
问题现象
最近一直在做,通过java后台,如何知道Oracle正在执行sql。因为不能与客户进行有效的沟通,也没有到现场了解,数据是如何进行的导入,所以这方面一直没有得到有效的突破;

原因分析
在查找资料的时候,发现了一条Sql语句。通过这条语句,可以知道当前连接的数据库正在执行的sql语句是什么。是一种比较有效的获取当前数据库动态的方式;
通过获取当前执行的sql语句,来判断当前数据库是否有在执行;

处理步骤
先执行以下查询语句

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;

效果

PROGRAM

SPID  

SQL_TEXT

SQL_ID

racgimon@cdcj1 (TNS V1-V3)

 12

 DECLARE   reason_id

65vuzhm491wk9

oracleRLZY@rx6600-2 (TNS V1-V3)

 25867

SELECT "AKB020" FROM "KB

09rp36jmgpj5a

oracleRLZY@rx6600-2 (TNS V1-V3)

 25869

   SELECT "AAC001","BTC102"

00931052n13uq

oracleRLZY@rx6600-2 (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

如上表中的program列中的jdbc thin client代表的是通过jdbc连接执行的sql语句
由于sql_text列没有显示完整的sql语句,所以可以利用sql_id字段686nqabc8sgs2再查询v$sql
Sql语句如下:

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

可以查看完整的sql文本内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: