溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

11g v$active_session_history的新增列

發(fā)布時間:2020-08-18 19:07:52 來源:ITPUB博客 閱讀:170 作者:路途中的人2012 欄目:建站服務(wù)器
很多知識我都還停留在10g,今天同事在ASH中直接就找到了SQL語句消耗的PGA,才發(fā)現(xiàn),11gR2的ASH多了如此多的列

1.標示這條ASH記錄是否被刷入了磁盤
  IS_AWR_SAMPLE                 dba_hist_active_sess_history中就沒有這一列

2.SQL語句信息  
  SQL_OPNAME                    SQL_OPCODE的翻譯名,SQL語句類型
 
3.對于遞歸SQL,捕獲其父SQL的信息
  TOP_LEVEL_SQL_ID     
  TOP_LEVEL_SQL_OPCODE
 
  可以通過這個列,找到存過中最消耗資源的SQL,或者DDL遞歸調(diào)用中,最慢得SQL語句
  SELECT sql_id,count(*) FROM v$active_session_history
  WHERE TOP_LEVEL_SQL_ID='5w6mc35fa18tk'
  GROUP BY sql_id
  ORDER BY 2 DESC; 
 

4.在ASH中捕獲執(zhí)行計劃信息,包括這個語句正在執(zhí)行哪一步操作 
  SQL_PLAN_LINE_ID                                  
  SQL_PLAN_OPERATION                              
  SQL_PLAN_OPTIONS    
 
  可以通過這些列,找到SQL語句最慢得地方,就需要優(yōu)化這個                            
    SELECT A.SQL_PLAN_HASH_VALUE,
           A.SQL_PLAN_LINE_ID,
           A.SQL_PLAN_OPERATION,
           A.SQL_PLAN_OPTIONS,
           B.OWNER || '.' || B.OBJECT_NAME OBJECT_NAME,
           COUNT(*)
      FROM V$ACTIVE_SESSION_HISTORY A, DBA_OBJECTS B
     WHERE A.SQL_ID = '11jpuymjh9vsc'
       AND A.CURRENT_OBJ# = B.OBJECT_ID(+)
     GROUP BY A.SQL_PLAN_HASH_VALUE,
          A.SQL_PLAN_LINE_ID,
          A.SQL_PLAN_OPERATION,
          A.SQL_PLAN_OPTIONS,
          B.OWNER || '.' || B.OBJECT_NAME
     ORDER BY COUNT(*) DESC; 


5.SQL一次執(zhí)行的唯一標示符,  SQL_ID, SQL_EXEC_START, SQL_EXEC_ID 三列來標示一次SQL的執(zhí)行
  并且,可以找到這次SQL的開始執(zhí)行時間,以及計算出其這次已經(jīng)執(zhí)行了多少時間
  SQL_EXEC_ID                                       
  SQL_EXEC_START    
 
  判斷一下一個SQL,有沒有出現(xiàn)執(zhí)行的很慢的時候,比如平時1s,有段時間,執(zhí)行超過12s
    SELECT SQL_ID, SQL_EXEC_START, SQL_EXEC_ID, COUNT(*)
      FROM V$ACTIVE_SESSION_HISTORY A
     WHERE A.SQL_ID = '11jpuymjh9vsc'
     GROUP BY SQL_ID, SQL_EXEC_START, SQL_EXEC_ID
     ORDER BY COUNT(*) DESC                                 

6.并行增強,增加了QC_SESSION_SERIAL# 列,并且增加了PX_FLAGS狀態(tài)列
  QC_SESSION_SERIAL#                                
  PX_FLAGS         
 
  QC_SESSION_ID <> SESSION_ID 的,都是并行子進程。增加了QC_SESSION_SERIAL#可以定義到唯一的一個協(xié)調(diào)者
 
7.Blocking增強,11g通過Blocking解決問題已經(jīng)很容易了
  BLOCKING_INST_ID                    11g新增,怪的很,10g的v$session有該列,但是ASH沒有
  BLOCKING_HANGCHAIN_INFO        指出BLOCKING_SESSION是否在hang chain上
  REMOTE_INSTANCE#          用于集群等待,標明需要請求的數(shù)據(jù)塊應(yīng)該由那個實例提供。只有cluster類等待才有這個
 
8.當前處理的對象,新增了一個row# ,以前已經(jīng)有CURRENT_OBJ#,CURRENT_FILE#,CURRENT_BLOCK#了
  CURRENT_ROW#                                    

    可以檢查TX等待柱塞的行,通過拼裝ROWID可以找到柱塞的行。
    SELECT A.SQL_ID,
           A.CURRENT_OBJ#,
           A.CURRENT_FILE#,
           A.CURRENT_BLOCK#,
           A.CURRENT_ROW#,
           COUNT(*)
      FROM dba_hist_active_sess_history A
     WHERE A.EVENT = 'enq: TX - row lock contention'
     GROUP BY A.SQL_ID,
          A.CURRENT_OBJ#,
          A.CURRENT_FILE#,
          A.CURRENT_BLOCK#,
          A.CURRENT_ROW#
     ORDER BY COUNT(*) DESC

9.CONSUMER_GROUP
  CONSUMER_GROUP_ID,DBA_RSRC_CONSUMER_GROUPS對應(yīng)                                 

10.Time Mobel
   TIME_MODEL             后面的IN,按照二進制組合起來的值,在這次采樣間隔內(nèi),會話做了那些操作
   IN_CONNECTION_MGMT     connection management call elapsed time
   IN_PARSE               parse time elapsed
   IN_HARD_PARSE          hard parse elapsed time
   IN_SQL_EXECUTION       sql execute elapsed time
   IN_PLSQL_EXECUTION     PL/SQL execution elapsed time
   IN_PLSQL_RPC           inbound PL/SQL rpc elapsed time
   IN_PLSQL_COMPILATION   PL/SQL compilation elapsed time
   IN_JAVA_EXECUTION      Java execution elapsed time
   IN_BIND                repeated bind elapsed time
   IN_CURSOR_CLOSE       
   IN_SEQUENCE_LOAD       sequence load elapsed time
  
   當AWR中顯示某個TM存在問題時,通過這些列,找到TOP 進程或者SQL
   存在硬解析的SQL,結(jié)果應(yīng)該和v$sql去比較下
        SELECT SQL_PLAN_HASH_VALUE, COUNT(*)
          FROM V$ACTIVE_SESSION_HISTORY
         WHERE IN_HARD_PARSE = 'Y'
         GROUP BY SQL_PLAN_HASH_VALUE
         ORDER BY 2 DESC  
  
11.REPLAY特性的會話標示
   REPLAY_OVERHEAD       
   IS_REPLAYED           
   DBREPLAY_FILE_ID      
   DBREPLAY_CALL_COUNTER 

12.時間統(tǒng)計
   TM_DELTA_TIME         一次統(tǒng)計間隔
   TM_DELTA_CPU_TIME     在這個間隔內(nèi),CPU時間
   TM_DELTA_DB_TIME      在這個間隔內(nèi),DB時間
  
   因為ASH采樣的粒度是1秒,但是進程并不是在1s內(nèi)都ACTIVE的。該統(tǒng)計的粒度是微秒(百萬分之一秒)
   TM_DELTA_TIME - TM_DELTA_DB_TIME = INACTIVE TIME
   TM_DELTA_DB_ TIME - TM_DELTA_CPU_TIME = WAIT TIME

13.IO網(wǎng)絡(luò)統(tǒng)計,
   DELTA_TIME                          
   DELTA_READ_IO_REQUESTS              
   DELTA_WRITE_IO_REQUESTS             
   DELTA_READ_IO_BYTES                 
   DELTA_WRITE_IO_BYTES                
   DELTA_INTERCONNECT_IO_BYTES         

   統(tǒng)計時間內(nèi),物理讀/寫/心跳流量高的SQL
        SELECT SQL_ID,
               SUM(DELTA_READ_IO_REQUESTS),
               SUM(DELTA_WRITE_IO_REQUESTS),
               SUM(DELTA_READ_IO_BYTES),
               SUM(DELTA_WRITE_IO_BYTES),
               SUM(DELTA_INTERCONNECT_IO_BYTES)
          FROM V$ACTIVE_SESSION_HISTORY
         GROUP BY SQL_ID
         ORDER BY 2 DESC

14.PGA/TMP當前使用統(tǒng)計 
   PGA_ALLOCATED       
   TEMP_SPACE_ALLOCATED  

   select * from (
   select sample_time,session_id,sql_id,PGA_ALLOCATED,TEMP_SPACE_ALLOCATED from v$active_session_history
   where TEMP_SPACE_ALLOCATED is not null
    order by TEMP_SPACE_ALLOCATED desc
   ) where rownum<=20

15.其他
   IS_SQLID_CURRENT      指出該SQL_ID是否是正在執(zhí)行的,該列具體意義不明
   TOP_LEVEL_CALL#                             
   TOP_LEVEL_CALL_NAME   v$toplevelcall中有對應(yīng),具體怎么用不明
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI