11g v$active_session_history的新增列
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,很多知识我都还停留在10g,今天同事在ASH中直接就找到了SQL语句消耗的PGA,才发现,11gR2的ASH多了如此多的列1.标示这条ASH记录是否被刷入了磁盘IS_AWR_SAMPLE dba_hi
千家信息网最后更新 2025年12月03日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中有对应,具体怎么用不明
时间
语句
统计
信息
进程
可以通过
正在
粒度
问题
递归
不明
消耗
二进制
协调者
只有
同事
地方
实例
对象
意义
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百度数据库增删改啥子意思
海南电商软件开发
软件开发的商品编码
中国知网统计文献数据库
济源软件开发成交价
大型网站用户数据库架构
手绘网络安全海报
软件开发订阅机制
离线数据同步业务数据库
软件开发与软件市场
发布微信小程序需要购买服务器么
和平精英最强服务器的图片
和平区网络安全工作会议
行政网络安全执法案例
为什么要提高网络安全防护意识
影响软件开发效率的因素
播音软件开发
延庆区好的软件开发设计
服务器文件同步
专用网络技术
吴江区品质网络技术专业服务
最有效的攻击 网络安全
2021ccia网络安全50强
编程和软件开发都是编写代码
江苏常见网络技术设计
青岛手机app软件开发
欧柏泰克软件开发培训
深圳市次元波动网络技术有限公司
特殊专技网络安全
2019网络安全股票有哪些