查看当前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

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

  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文本内容

发布了201 篇原创文章 · 获赞 63 · 访问量 30万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览