ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查询Oracle正在执行的SQL语句

查询Oracle正在执行的SQL语句

原创 Linux操作系统 作者:ljm0211 时间:2012-06-20 16:10:51 0 删除 编辑
支持左连接的 Oracle 9i 以上版本

select OSUSER, PROGRAM, USERNAME, SCHEMANAME, B.Cpu_Time, STATUS, B.SQL_TEXT
from V$SESSION A
LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUE
order by b.cpu_time desc


Oracle 8i 及以前的版本中

select OSUSER, PROGRAM, USERNAME, SCHEMANAME, STATUS, B.SQL_TEXT
from V$SESSION A, V$SQL B
where A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUE
--后面可以加上你要的约束条件
and SUSER = 'Unmi' AND USERNAME = 'APPS' and PROGRAM = 'JDBC-1.0-Client'


================================================================
Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
对于同一个SQL语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,
这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。Oracle用v$sqlarea中一行保存同样语句的SQL,并用字段version_count的值来指出子游标的个
数,而在v$sql里面为每个子游标保留了一个单独的行。两个表可以通过字段address和hash_value
相互对应。例如下面例子:SQL> select address,hash_value,sql_text,version_count
2 from v$sqlarea where sql_text like 'select value$ from sys.props%';ADDRESS HASH_VALUE SQL_TEXT VERSION_COUNT
-------- ---------- ---------------------------------------------- -------------
97F1C9C4 563046721 select value$ from sys.props$ where name = :1 3SQL> select address,hash_value,child_address,child_number,sql_text
2 from v$sql where sql_text like 'select value$ from sys.props%';ADDRESS HASH_VALUE CHILD_ADDRESS CHILD_NUMBER SQL_TEXT
-------- ---------- ------------- ------------ ----------------------------------------------
97F1C9C4 563046721 97F1C448 0 select value$ from sys.props$ where name = :1
97F1C9C4 563046721 97EAD3B0 1 select value$ from sys.props$ where name = :1
97F1C9C4 563046721 97E7EEF0 2 select value$ from sys.props$ where name = :1如果想找出这个SQL语句的执行计划,也可以通过字段address、hash_value和child_number到v$sql_plan中查找,
v$sql_plan中是区分了不同子游标的执行计划的SQL> select address,child_number,lpad('',2*level)||operation||decode(id,0,' cost='||position) op,
2 options,object_name
3 from v$sql_plan t where address='97F1C9C4' and hash_value=563046721;ADDRESS CHILD_NUMBER OP OPTIONS OBJECT_NAME
-------- ------------ ------------------------- ----------- -------------
97F1C9C4 2 SELECT STATEMENT cost=0
97F1C9C4 2 TABLE ACCESS FULL PROPS$
97F1C9C4 1 SELECT STATEMENT cost=0
97F1C9C4 1 TABLE ACCESS FULL PROPS$
97F1C9C4 0 SELECT STATEMENT cost=0
97F1C9C4 0 TABLE ACCESS FULL PROPS$视图v$sqltext中没有SQL语句的相关统计信息,但是v$sqltext用多行来保存sql语句,而v$sqlarea中只能
保存sql语句的前1000个字节,所以如果sql语句大于1000个字节,就要到v$sqltext中查看完整的语句,其字
段PIECE表示每个sql的行顺序。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733427/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    436792