Oracle檢視執行過的SQL

2021-06-26 21:18:42 字數 3717 閱讀 1795

reference:

reference:

reference:

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 = < 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

怎麼檢視mysql執行過的sql。

有些時候當程式做了更新,資料庫負載突然上來,或者併發翻了幾倍。這個時候如果用show full processlist 根本看不到完全的sql。怎麼才能看是哪些sql導致的呢,在網上查了資料,有一下幾種方法。1.記錄慢日誌 long query time 1 log slow queries tmp...

檢視MYSQL已經執行過的sql語句

編輯 etc my.cnf檔案,在 mysqld 節下面新增 log tmp sql row.log行 或者其他路徑,有時因為檔案許可權問題,可能記錄不下來 修改完畢後,記得重啟 mysql service mysql restart 或者 etc init.d mysqld stop etc in...

oracle 檢視執行最慢 sql

憤怒的不爭 2016 12 22 22 06 select from select sa.sql text,sa.sql fulltext,sa.executions 執行次數 round sa.elapsed time 1000000,2 總執行時間 round sa.elapsed time 1...