v$action_session_history
V$ACTIVE_SESSION_HISTORY 顯示資料庫中的取樣會話活動。ASH每秒從v$session中取快照,存在V$ACTIVE_SESSION_HISTORY中,並收集所有活動會話的等待資訊。若ASH資料被重新整理到磁碟,則需要從DBA_HIS_ACTIVE_SESS_HISTORY檢視中查詢相關資訊。
該檢視是ASH的核心,用以記錄活動SESSION的歷史等待資訊,每秒取樣一次,這部分內容記錄在記憶體中,期望值是記錄一個小時的內容。
列名 |
資料型別 |
說明 |
SAMPLE_ID |
NUMBER |
樣本的ID |
SAMPLE_TIME |
TIMESTAMP(3) |
取樣本的時間 |
SESSION_ID |
NUMBER |
會話識別符號; 對映到 V$SESSION.SID |
SESSION_SERIAL# |
NUMBER |
會話序列號 (用於唯一標識一個會話的物件); 對映到 V$SESSION.SERIAL# |
USER_ID |
NUMBER |
Oracle使用者識別符號; 對映到 V$SESSION.USER# |
SQL_ID |
VARCHAR2(13) |
會話在取樣時執行的 SQL 語句的 SQL 識別符號 |
SQL_CHILD_NUMBER |
NUMBER |
Child number of the SQL statement that the session was executing at the time of sampling |
SQL_PLAN_HASH_VALUE |
NUMBER |
sql遊標計劃的數值表示形式。這所有會話樣本的資訊可能不可用。v$session不包含此資訊。 |
FORCE_MATCHING_SIGNATURE |
NUMBER |
The signature used when the CURSOR_SHARING parameter is set to FORCE |
SQL_OPCODE |
NUMBER |
Indicates what phase of operation the SQL statement was in; maps to V$SESSION.COMMAND。 “V$SESSION” for information on interpreting this column |
SERVICE_HASH |
NUMBER |
Hash that identifies the Service; maps to V$ACTIVE_SERVICES.NAME_HASH |
SESSION_TYPE |
VARCHAR2(10) |
會話型別: · FOREGROUND · BACKGROUND |
SESSION_STATE |
VARCHAR2(7) |
會話狀態: · WAITING · ON CPU |
QC_SESSION_ID |
NUMBER |
查詢協調器的會話ID。This information is only available if the sampled session is a parallel query slave. For all other sessions, the value is 0. |
QC_INSTANCE_ID |
NUMBER |
查詢協調器例項的ID。 This information is only available if the sampled session is a parallel query slave. For all other sessions, the value is 0. |
BLOCKING_SESSION |
NUMBER |
阻塞會話的會話識別符號。Populated only when the session was waiting for enqueues or a “buffer busy” wait. Maps toV$SESSION.BLOCKING_SESSION. |
BLOCKING_SESSION_STATUS |
VARCHAR2(11) |
阻塞會話的狀態: · VALID · NO HOLDER · GLOBAL · NOT IN WAIT · UNKNOWN |
BLOCKING_SESSION_SERIAL# |
NUMBER |
阻塞會話的序列號 |
EVENT |
VARCHAR2(64) |
If SESSION_STATE = WAITING, then the event for which the session was waiting for at the time of sampling.If SESSION_STATE = ON CPU, then this column will be NULL.See Also: “Oracle Wait Events” |
EVENT_ID |
NUMBER |
Identifier of the resource or event for which the session is waiting or for which the session last waited. Interpretation is similar to that of theEVENT column. |
EVENT# |
NUMBER |
Number of the resource or event for which the session is waiting or for which the session last waited. Interpretation is similar to that of theEVENT column. |
SEQ# |
NUMBER |
序列號唯一標識等待(增加每個等待) |
P1TEXT |
VARCHAR2(64) |
第一個附加引數的文字 |
P1 |
NUMBER |
第一個附加引數 |
P2TEXT |
VARCHAR2(64) |
第二個引數的文字 |
P2 |
NUMBER |
第二個附加引數 |
P3TEXT |
VARCHAR2(64) |
第三個附加引數的文字 |
P3 |
NUMBER |
第三個附加引數 |
WAIT_CLASS |
VARCHAR2(64) |
Wait class name of the event for which the session was waiting at the time of sampling. Interpretation is similar to that of the EVENT column. Maps to V$SESSION.WAIT_CLASS. |
WAIT_CLASS_ID |
NUMBER |
等待的會話在等待的時間取樣的事件的類識別符號。Interpretation is similar to that of the EVENTcolumn. Maps to V$SESSION.WAIT_CLASS_ID. |
WAIT_TIME |
NUMBER |
0 if the session was waiting at the time of samplingTotal wait time for the event for which the session last waited if the session was on the CPU when sampledWhether or not WAIT_TIME = 0 is what is useful to find the SESSION_STATE at the time of sampling, rather than the actual value of WAIT_TIMEitself. Maps to V$SESSION.WAIT_TIME. |
TIME_WAITED |
NUMBER |
If SESSION_STATE = WAITING, then the time that the session actually spent waiting for that EVENT. This column is set for waits that were in progress at the time the sample was taken.If a wait event lasted for more than a second and was caught waiting in more than one session sample row, then the actual time spent waiting for that wait event will be populated in the last of those session sample rows. At any given time, this information will not be available for the latest session sample. |
XID |
RAW(8) |
Transaction ID that the session was working on at the time of sampling. V$SESSION does not contain this information. |
CURRENT_OBJ# |
NUMBER |
物件ID的會話被引用的物件。此資訊僅供如果會話在等待申請,叢集,併發和使用者I / O等待事件。對映到 V$SESSION.ROW_WAIT_OBJ#. |
CURRENT_FILE# |
NUMBER |
File number of the file containing the block that the session is referencing. This information is only available if the session was waiting for Cluster, Concurrency, and User I/O wait events. Maps to V$SESSION.ROW_WAIT_FILE#. |
CURRENT_BLOCK# |
NUMBER |
ID of the block that the session is referencing. This information is only available if the session was waiting for Cluster, Concurrency, and User I/O wait events. Maps to V$SESSION.ROW_WAIT_BLOCK#. |
PROGRAM |
VARCHAR2(48) |
作業系統程式的名稱 |
MODULE |
VARCHAR2(48) |
Name of the executing module when sampled, as set by the DBMS_APPLICATION_INFO.SET_MODULE procedure |
ACTION |
VARCHAR2(32) |
Name of the executing module when sampled, as set by the DBMS_APPLICATION_INFO.SET_ACTION procedure |
CLIENT_ID |
VARCHAR2(64) |
Client identifier of the session; maps to V$SESSION.CLIENT_IDENTIFIER |
查詢最近一分鐘內,最消耗CPU的sql語句
select
sql_id,count(*),
round(count(*)/sum(count(*)) over (),2) pctload
from v$active_session_history
where sample_time > sysdate -1/(24*60)
and session_type <> 'BACKGROUND'
and session_state= 'ON CPU'
group by sql_id
order by count(*) desc;
查詢最近一分鐘內,最消耗I/O的sql語句
select ash.sql_id,count(*)
from v$active_session_history ash,v$event_name
evt
where ash.sample_time > sysdate -1/(24*60)
and ash.session_state = 'WAITING'
and ash.event_id = evt.event_id
and evt.wait_class = 'USER I/O'
group by ash.sql_id
order by count(*) desc;
查詢最近一分鐘內,最消耗CPU的session
select session_id,count(*)
from v$active_session_history
where session_state = 'ON CPU'
and sample_time > sysdate -1/(24*60)
group by session_id
order by count(*) desc;
查詢最近一分鐘內,最消耗資源的sql語句
select ash.sql_id,
sum(decode(ash.session_state,'ON CPU',1,0))
"CPU",
sum(decode(ash.session_state,'WAITING',1,0)) -
sum(decode(ash.session_state,'WAITING',decode(en.wait_class,'USER
I/O',1,0),0)) "WAIT",
sum(decode(ash.session_state,'WAITING',decode(en.wait_class,'USER
I/O',1,0),0))
"IO",
sum(decode(ash.session_state,'ON CPU',1,1))
"TOTAL"
from v$active_session_history ash,v$event_name
en
where SQL_ID is not null and
en.event#=ash.event# and ash.sample_time > sysdate -1/(24*60)
group by ash.sql_id
order by sum(decode(ash.session_state,'ON
CPU',1,1)) desc;
查詢最近一分鐘內,最消耗資源的session
select
ash.session_id,ash.session_serial#,ash.user_id,ash.program,
sum(decode(ash.session_state,'ON CPU',1,0))
"CPU",
sum(decode(ash.session_state,'WAITING',1,0)) -
sum(decode(ash.session_state,'WAITING',decode(en.wait_class,'USER
I/O',1,0),0)) "WAITING",
sum(decode(ash.session_state,'WAITING',decode(en.wait_class,'USER
I/O',1,0),0))
"IO",
sum(decode(ash.session_state,'ON CPU',1,1))
"TOTAL"
from v$active_session_history ash,v$event_name
en
where en.event# = ash.event# and ash.sample_time
> sysdate -1/(24*60)
group by
ash.session_id,ash.user_id,ash.session_serial#,ash.program
order by sum(decode(ash.session_state,'ON
CPU',1,1))
今天工作中用到了,當時比較急也不知道怎麼查,下來總結了一下!
檢視兩個時間點之間的等待事件
SQL>
select session_id,SAMPLE_TIME,SQL_ID,SQL_PLAN_HASH_VALUE,EVENT,BLOCKING_SESSION from V$ACTIVE_SESSION_HISTORY WHERE SAMPLE_TIME BETWEEN TO_DATE('20150205 03:00:00','YYYYMMDD HH24:MI:SS') and TO_DATE('20150205 03:03:00','YYYYMMDD HH24:MI:SS');
SESSION_ID SAMPLE_TIME SQL_ID SQL_PLAN_HASH_VALUE EVENT BLOCKING_SESSION
---------- ------------------------------ ------------- ------------------- -------------------- ----------------
288 05-2月 -15 03.01.07.768 上午 0 null event
268 05-2月 -15 03.00.41.232 上午 0
286 05-2月 -15 03.00.41.232 上午 0 control file paralle
l write
295 05-2月 -15 03.00.41.232 上午 0 control file paralle
l write
268 05-2月 -15 03.00.40.232 上午 0
286 05-2月 -15 03.00.40.232 上午 0
268 05-2月 -15 03.00.39.232 上午 0 db file sequential r
ead
檢視等待事件並分組排序
SQL> select count(*),EVENT from V$ACTIVE_SESSION_HISTORY
WHERE SAMPLE_TIME BETWEEN TO_DATE('20150205 03:00:00','YYYYMMDD HH24:MI:SS')
and TO_DATE('20150205 03:03:00','YYYYMMDD HH24:MI:SS') group by event order by count(*) desc;
COUNT(*) EVENT
---------- --------------------
4
2 db file sequential r
ead
2 control file paralle
l write
2 log file parallel wr
ite
1 null event
1 log file sync
6 rows selected
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1429085/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 前端【VUE】02-vue指令【v-html 、v-show、 v-if 、v-else、v-on、v-bind、v-for、v-model】前端VueHTML
- v$sql,v$sqlarea,v$sqltext區別SQL
- vue v-text,v-html,v-once,v-pre,v-cloak的使用VueHTML
- vue_o6_v-once、v-html、v-text、v-pre、v-cloak指令的使用VueHTML
- EMQ 文件 V1.0 V2.0 V3.0MQ
- v-if和v-show
- CANoe C-V2X Demo(V2I+V2V)演示視訊
- 維數定理(手推!):證明dim(v1)+dim(v2) = dim(v1+v2) + dim(v1∩v2)
- 1V升壓3V,1V升壓3.3V晶片,1V升壓5V升壓IC晶片
- v-html 、v-text({{}}) 、v-model的區別HTML
- v
- 1V升3V,1V升3.3V,1V升5V高電流,低功耗升壓晶片晶片
- 24v轉120v,24V轉150v/350v隔離變壓電源模組
- vue 的v-on與v-bindVue
- v-for,v-bink,綜合案例
- Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的聯絡與區別OracleSQL
- 1V升5V晶片,1V升5V電路圖規格書晶片
- android之support-v4、v7、v13的區別Android
- v-for
- (精華2020年5月4日更新) vue教程篇 v-text,v-html,v-once,v-pre,v-cloak的使用VueHTML
- Vue v-if以及 v-else 的使用Vue
- v-if和v-show的區別
- React Router從V2/V3到V4的變化React
- [vue] 常見用法之 v-html、v-text、v-model區別VueHTML
- v-if/v-show 條件渲染指令
- ESXI 遷移至KVM (V2V遷移)
- 1V轉5V,1V轉3.3V升壓極大電流晶片,外圍極少晶片
- 12V轉80V/150V/350V電容充電隔離電源升壓模組
- V$LOCK(zt)
- 10.29 V$SESSMETRICSSM
- 10.30 V$SESSTAT
- 10.97 V$SYSSTAT
- 8.1.1 V$ ViewsView
- 10.17 V$SESSIONSession
- 10.82 V$STATNAME
- 9.183 V$ROLLNAME
- 9.184 V$ROLLSTAT
- V原創
- V$SESSION COMMANDSession