11g v$active_session_history的新增列
很多知識我都還停留在10g,今天同事在ASH中直接就找到了SQL語句消耗的PGA,才發現,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遞迴呼叫中,最慢得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中捕獲執行計劃資訊,包括這個語句正在執行哪一步操作
SQL_PLAN_LINE_ID
SQL_PLAN_OPERATION
SQL_PLAN_OPTIONS
可以透過這些列,找到SQL語句最慢得地方,就需要最佳化這個
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一次執行的唯一標示符, SQL_ID, SQL_EXEC_START, SQL_EXEC_ID 三列來標示一次SQL的執行
並且,可以找到這次SQL的開始執行時間,以及計算出其這次已經執行了多少時間
SQL_EXEC_ID
SQL_EXEC_START
判斷一下一個SQL,有沒有出現執行的很慢的時候,比如平時1s,有段時間,執行超過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狀態列
QC_SESSION_SERIAL#
PX_FLAGS
QC_SESSION_ID <> SESSION_ID 的,都是並行子程式。增加了QC_SESSION_SERIAL#可以定義到唯一的一個協調者
7.Blocking增強,11g透過Blocking解決問題已經很容易了
BLOCKING_INST_ID 11g新增,怪的很,10g的v$session有該列,但是ASH沒有
BLOCKING_HANGCHAIN_INFO 指出BLOCKING_SESSION是否在hang chain上
REMOTE_INSTANCE# 用於叢集等待,標明需要請求的資料塊應該由那個例項提供。只有cluster類等待才有這個
8.當前處理的物件,新增了一個row# ,以前已經有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對應
10.Time Mobel
TIME_MODEL 後面的IN,按照二進位制組合起來的值,在這次取樣間隔內,會話做了那些操作
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,結果應該和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.時間統計
TM_DELTA_TIME 一次統計間隔
TM_DELTA_CPU_TIME 在這個間隔內,CPU時間
TM_DELTA_DB_TIME 在這個間隔內,DB時間
因為ASH取樣的粒度是1秒,但是程式並不是在1s內都ACTIVE的。該統計的粒度是微秒(百萬分之一秒)
TM_DELTA_TIME - TM_DELTA_DB_TIME = INACTIVE TIME
TM_DELTA_DB_ TIME - TM_DELTA_CPU_TIME = WAIT TIME
13.IO網路統計,
DELTA_TIME
DELTA_READ_IO_REQUESTS
DELTA_WRITE_IO_REQUESTS
DELTA_READ_IO_BYTES
DELTA_WRITE_IO_BYTES
DELTA_INTERCONNECT_IO_BYTES
統計時間內,物理讀/寫/心跳流量高的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當前使用統計
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是否是正在執行的,該列具體意義不明
TOP_LEVEL_CALL#
TOP_LEVEL_CALL_NAME v$toplevelcall中有對應,具體怎麼用不明
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遞迴呼叫中,最慢得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中捕獲執行計劃資訊,包括這個語句正在執行哪一步操作
SQL_PLAN_LINE_ID
SQL_PLAN_OPERATION
SQL_PLAN_OPTIONS
可以透過這些列,找到SQL語句最慢得地方,就需要最佳化這個
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一次執行的唯一標示符, SQL_ID, SQL_EXEC_START, SQL_EXEC_ID 三列來標示一次SQL的執行
並且,可以找到這次SQL的開始執行時間,以及計算出其這次已經執行了多少時間
SQL_EXEC_ID
SQL_EXEC_START
判斷一下一個SQL,有沒有出現執行的很慢的時候,比如平時1s,有段時間,執行超過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狀態列
QC_SESSION_SERIAL#
PX_FLAGS
QC_SESSION_ID <> SESSION_ID 的,都是並行子程式。增加了QC_SESSION_SERIAL#可以定義到唯一的一個協調者
7.Blocking增強,11g透過Blocking解決問題已經很容易了
BLOCKING_INST_ID 11g新增,怪的很,10g的v$session有該列,但是ASH沒有
BLOCKING_HANGCHAIN_INFO 指出BLOCKING_SESSION是否在hang chain上
REMOTE_INSTANCE# 用於叢集等待,標明需要請求的資料塊應該由那個例項提供。只有cluster類等待才有這個
8.當前處理的物件,新增了一個row# ,以前已經有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對應
10.Time Mobel
TIME_MODEL 後面的IN,按照二進位制組合起來的值,在這次取樣間隔內,會話做了那些操作
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,結果應該和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.時間統計
TM_DELTA_TIME 一次統計間隔
TM_DELTA_CPU_TIME 在這個間隔內,CPU時間
TM_DELTA_DB_TIME 在這個間隔內,DB時間
因為ASH取樣的粒度是1秒,但是程式並不是在1s內都ACTIVE的。該統計的粒度是微秒(百萬分之一秒)
TM_DELTA_TIME - TM_DELTA_DB_TIME = INACTIVE TIME
TM_DELTA_DB_ TIME - TM_DELTA_CPU_TIME = WAIT TIME
13.IO網路統計,
DELTA_TIME
DELTA_READ_IO_REQUESTS
DELTA_WRITE_IO_REQUESTS
DELTA_READ_IO_BYTES
DELTA_WRITE_IO_BYTES
DELTA_INTERCONNECT_IO_BYTES
統計時間內,物理讀/寫/心跳流量高的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當前使用統計
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是否是正在執行的,該列具體意義不明
TOP_LEVEL_CALL#
TOP_LEVEL_CALL_NAME v$toplevelcall中有對應,具體怎麼用不明
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2141400/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- V$ACTIVE_SESSION_HISTORY檢視的使用Session
- [20211214]檢視檢視V$ACTIVE_SESSION_HISTORY遇到奇怪問題.txtSession
- MySQL中的自增列MySql
- DMSQL DM自增列的使用SQL
- Oracle 11g新特新--SQL Test Case BuilderOracleSQLUI
- XamarinSQLite教程新增列SQLite
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- MySQL自增列ID的面試題MySql面試題
- C# Datatable 新增列C#
- 【mysql】table中新增列MySql
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- SQLServer插入資料到有自增列的表SQLServer
- 如何解決自增列賦值的問題賦值
- Oracle 11g 新特性:只讀表(Read-only)Oracle
- SQL Server自增列跳號總結SQLServer
- MySQL alter 新增列對dml影響MySql
- MySql給表新增列和註釋MySql
- SQL在自增列插入指定資料的操作方法SQL
- Oracle實現自增列(序列+觸發器實現、Identity Columns新特性、序列作為預設值)Oracle觸發器IDE
- MySQL死鎖案例二(自增列導致死鎖)MySql
- DB2 和SQL Server自增列比較DB2SQLServer
- 11g rac新增節點步驟(11g)
- Swoole v5.0 版本新特性預覽之新的執行模式模式
- oracle 11g 新特性之動態繫結變數窺視(一)Oracle變數
- oracle 11g 新特性之動態繫結變數窺視(二)Oracle變數
- [譯]React v16.9 新特性React
- [20201126]11g VPD的問題.txt
- 11G Adaptive Cursor Sharing(ACS)的研究APT
- 從 webpack v1 遷移到 webpack v2 新特性Web
- Kubernetes v1.27 新特性一覽
- React v16.6 新特性介紹React
- 深入React v16新特性(二)React
- 深入React v16新特性(一)React
- 透過 v$parameter 檢視看引數修改級別(11g, 18c, 19c)
- 《鬼泣V》:舊時代的標杆在新時代的窘境
- 有關考11g OCP的重要通知!
- Oracle之11g DataGuardOracle
- OpenKruise v0.10.0 新特性 WorkloadSpread 解讀UI
- XR是Metaverse新入口,這家V/AR公司想扮演新角色Metaverse