11g v$active_session_history的新增列
发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,很多知识我都还停留在10g,今天同事在ASH中直接就找到了SQL语句消耗的PGA,才发现,11gR2的ASH多了如此多的列1.标示这条ASH记录是否被刷入了磁盘IS_AWR_SAMPLE dba_hi
千家信息网最后更新 2024年10月02日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安全错误
数据库的锁怎样保障安全
曹妃甸区企业网络技术诚信合作
启明星辰5g网络安全
家里电脑当服务器
青年大学生与网络安全
淮北机械专业软件开发平台
免费注册服务器我的世界
山西软件开发服务价格优惠
阿里云怎么部署云服务器
山西新华互联网科技学校
希捷服务器硬盘是叠瓦式的么
网站服务器到期查询
明咨网络技术有限公司怎么样
网络安全宣传报内容
众联软件开发
国泰安数据库税率
互联网贷款软件开发
迷你世界服务器怎么开手机版
华为h22m-03服务器说明书
数据库中的记录是什么
数据库blob对象
关于数据库有趣的故事简短
系统设计和网络安全
网络安全设备英文表示
java所用数据库
军人网络安全教育平台
机关网络安全主题征文
数据库系统库组成部分包括
我国网络安全网民数量世界第
万方便数据库
测速网可以测试服务器网速么