Home >Database >Mysql Tutorial >Oracle查看执行过的SQL

Oracle查看执行过的SQL

WBOY
WBOYOriginal
2016-06-07 15:38:112254browse

Reference: http://blog.csdn.net/xiaoxu0123/article/details/38846685 Reference: http://blog.sina.com.cn/s/blog_4a80a5730101oxnk.html Reference: http://blog.csdn.net/fycghy0803/article/details/16845575 ORACLE中可以通过 v$session 表查看当前有

    Reference: http://blog.csdn.net/xiaoxu0123/article/details/38846685

    Reference: http://blog.sina.com.cn/s/blog_4a80a5730101oxnk.html

    Reference: http://blog.csdn.net/fycghy0803/article/details/16845575

   ORACLE中可以通过v$session表查看当前有效的session信息,并且可以通过v$session的sql_id或sql_address通过关联查询v$sql查看当前正在执行的sql语句;

 如果想查看session近期执行的sql语句,可以通过v$active_session_history表中的sql_id查看近期历史执行的sql语句,要求数据库的liberary没有被fresh。

SELECT b.sql_text,                    --content of SQL
         a.machine,                     --which machine run this code
         a.username, a.module,          -- the method to run this SQL
         c.sofar / totalwork * 100,     --conplete percent
         c.elapsed_seconds,             --run time
        c.time_remaining               --remain to run time
FROM v$session a, v$sqlarea b, v$session_longops c
WHERE a.sql_hash_value = b.hash_value(+) AND a.SID = c.SID(+)
              AND a.serial# = c.serial#(+)
       --AND a.sid=139

Oracle 最近执行过的sql语句:

SELECT   sql_text, last_load_time
FROM v$sql
WHERE last_load_time IS NOT NULL
ORDER BY last_load_time DESC

    其它,
SELECT sql_text,last_load_time FROM v$sql order by last_load_time desc;

SELECT   sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'select%' ORDER BY last_load_time DESC;

SELECT   sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'update%' ORDER BY last_load_time DESC;

SELECT   sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and last_load_time like' 14-06-09%' ORDER BY last_load_time DESC;

监控concurrent 正在执行的sql

SELECT a.sid, a.serial#, b.sql_text
  FROM v$session a, v$sqltext b
WHERE a.sql_address = b.address
  --AND a.sid = <...>
ORDER BY b.piece</...>

正在执行的

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 =  
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<strong><strong><br>
<strong>查看占io较大的正在运行的session<wbr> <wbr></wbr></wbr></strong><br>
<br>
</strong></strong><pre class="brush:php;toolbar:false">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



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn