oracle 内部账号 说明查看当前oracle中正在执行的sql语句

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

问题现象

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

原因分析

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

处理步骤

先执行以下查询语句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;

效果PROGRAMSPIDSQL_TEXTSQL_ID

racgimon@cdcj1 (TNS V1-V3)12DECLARE reason_id65vuzhm491wk9

oracleRLZY@rx6600-2 (TNS V1-V3)25867SELECT "AKB020" FROM "KB09rp36jmgpj5a

oracleRLZY@rx6600-2 (TNS V1-V3)25869SELECT "AAC001","BTC102"00931052n13uq

oracleRLZY@rx6600-2 (TNS V1-V3)3018SELECT "AAC001","BTC102"00931052n13uq

plsqldev.exe26531select a.program, b.spid5qq47bz3tzfws

JDBC Thin Client21074select * from ( select r686nqabc8sgs2

如上表中的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文本内容

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。