查询Oracle正在执行和执行过的SQL语句
Posted lclc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询Oracle正在执行和执行过的SQL语句相关的知识,希望对你有一定的参考价值。
---正在执行的
select
a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT
from
v$session a, v$sqlarea b
where
a.sql_address = b.address
---执行过的
select
b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT
from
v$sqlarea b
where
b.FIRST_LOAD_TIME
between
‘2009-10-15/09:24:47‘
and
‘2009-10-15/09:24:47‘
order
by
b.FIRST_LOAD_TIME
(此方法好处可以查看某一时间段执行过的sql,并且 SQL_FULLTEXT 包含了完整的 sql 语句)
其他
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
select
address, sql_text, piece
from
v$session, v$sqltext
where
address = sql_address
-- and machine = < you machine name >
order
by
address, piece
查找前十条性能差的sql.
SELECT
*
FROM
(
select
PARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_text
FROM
v$sqlarea
order
BY
disk_reads
DESC
)
where
ROWNUM<10 ;
查看占io较大的正在运行的session
SELECT
se.sid,se.serial#,pr.SPID,se.username,se.status,
se.terminal,se.program,se.MODULE,、se.sql_address,st.event,st.
p1text,si.physical_reads,
si.block_changes
FROM
v$session se,v$session_wait st,
v$sess_io si,v$process pr
WHERE
st.sid=se.sid
AND
st.
sid=si.sid
AND
se.PADDR=pr.ADDR
AND
se.sid>6
AND
st.
wait_time=0
AND
st.event
NOT
LIKE
‘%SQL%‘
ORDER
BY
physical_reads
DESC
以上是关于查询Oracle正在执行和执行过的SQL语句的主要内容,如果未能解决你的问题,请参考以下文章