通過v$sqlarea和v$sql視圖查找比較耗費資源的sql

1.從v$sqlarea中找出最多的物理讀的sql
  1. select b.username, 
  2.        a.DISK_READS, 
  3.        a.EXECUTIONS, 
  4.        a.DISK_READS / decode(a.EXECUTIONS, 0, 1, a.EXECUTIONS) ratio, 
  5.        a.SQL_TEXT 
  6.   from v$sqlarea a, dba_users b 
  7.  where a.PARSING_USER_ID = b.user_id 
  8.    and a.DISK_READS > 10000 
  9.    and b.username not in ('SYS''SYSTEM'
  10.  order by a.DISK_READS desc
 
2.從v$sqlarea中找出最多的邏輯讀的sql
  1. select b.username, 
  2.        a.BUFFER_GETS, 
  3.        a.EXECUTIONS, 
  4.        a.BUFFER_GETS / decode(a.EXECUTIONS, 0, 1, a.EXECUTIONS) ratio, 
  5.        a.SQL_TEXT 
  6.   from v$sqlarea a, dba_users b 
  7.  where a.PARSING_USER_ID = b.user_id 
  8.    and a.BUFFER_GETS > 10000 
  9.    and b.username not in ('SYS''SYSTEM'
  10.  order by a.DISK_READS desc
 
3.從v$sql中選出最佔用資源的sql
  1. select * 
  2.   from (select a.ADDRESS, 
  3.                a.SQL_TEXT, 
  4.                rank() over(order by a.BUFFER_GETS descas rank_bufgets, 
  5.                to_char(100 * ratio_to_report(a.BUFFER_GETS) over(), '999.99'as pct_bufgets 
  6.           from v$sql a 
  7.          where a.PARSING_SCHEMA_NAME = 'PMIS'
  8.  where rank_bufgets < 11 
 
4.在第3個sql中可能存在sqltext是一樣的,但是是不同的子cursor的語句,那麼可以查詢v$sql_shared_cursor來查詢爲什麼同一個sqltext的sql會有不同的執行計劃
  1. select * from v$sql_shared_cursor c where c.ADDRESS='&address' 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章