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