时间:2023-03-09来源:系统城装机大师作者:佚名
v$active_session_history的字段非常丰富,实际工作中主要应用在下面这些情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
a.应用场景:开发反应2023-03-02 00:22至00:35,数据落盘慢,根据情况查看此时间段的主要活动事件,数量,与sql_id(全局) select count (*), sql_id, event, blocking_session from gv$active_session_history where sample_time between to_date( '2023-03-02 00:22:00' , 'yyyy-mm-dd hh24:mi:ss' ) and to_date( '2023-03-02 00:35:00' , 'yyyy-mm-dd hh24:mi:ss' ) group by sql_id, event, blocking_session order by 1; (非全局)BLOCKING_INST_ID --被阻塞者, blocking_session--阻塞者 select count (*), sql_id, event, BLOCKING_INST_ID, blocking_session from v$active_session_history where sample_time between to_date( '2023-03-02 00:20:00' , 'yyyy-mm-dd hh24:mi:ss' ) and to_date( '2023-03-02 00:35:00' , 'yyyy-mm-dd hh24:mi:ss' ) group by sql_id, event, BLOCKING_INST_ID, blocking_session order by 1; b.现在我们已经得到两个关键信息:sql_id与阻塞事件,首先根据sql_id我们可以再进一步使用此视图,实际中可以多调整几个较小的时间段,以突出最有代表的信息 select count (*), session_id, session_serial#, sql_id, event, BLOCKING_INST_ID, blocking_session from v$active_session_history where sample_time between to_date( '2023-03-02 00:24:00' , 'yyyy-mm-dd hh24:mi:ss' ) and to_date( '2023-03-02 00:25:00' , 'yyyy-mm-dd hh24:mi:ss' ) and sql_id = '1xfbtdvu3xb67' group by session_id, session_serial#, sql_id, event, BLOCKING_INST_ID, blocking_session order by 3; c.加入等待事件后更清晰 select count (*), session_id, sql_id, event, BLOCKING_INST_ID, blocking_session from v$active_session_history where sample_time between to_date( '2023-03-02 00:25:00' , 'yyyy-mm-dd hh24:mi:ss' ) and to_date( '2023-03-02 00:35:00' , 'yyyy-mm-dd hh24:mi:ss' ) and event = 'library cache lock' and sql_id = '1j47z0mc6k02b' group by session_id, sql_id, event, BLOCKING_INST_ID, blocking_session order by 1; 结论:可以看出大量并发等待,最终是发现有什么阻塞了此SQL语句 |
当然也要结合我们的AWR报告:(两份为同时间段,上一份为有争用,下一份为正常情况,报告太长,只截取了关键点)
最后关键点a:下面报告里的sql_id与事件与v$active_session_history里查出来的结果相同,进一步证明事件与此SQL的关联性。
我们根据SQL_ID找到相应的SQL语句,从而找到对应的TABLE,最终对应到两张分区表,分别为:AA_BBB_CCCC_DDDD_OUT,AA_BBB_CCCC_DDDD_IN。
在对开发进行严刑拷打逼问后(如果开发小哥不松口怎么办?下节预告:可以直接查询时间段的DDL语句执行情况),终于告诉我当天晚上时间点上对这两张表做了大量新建分区表的操作,至此基本水落石出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#根据dba_objects确定创建时间是否匹配 select owner, object_name, object_type, to_char(created, 'yyyy-mm-dd hh24:mi:ss' ) from dba_objects where object_name = 'AA_BBB_CCCC_DDDD_OUT' and created > to_date( '2023-03-01' , 'yyyy-mm-dd' ) order by 4; select owner, object_name, object_type, to_char(created, 'yyyy-mm-dd hh24:mi:ss' ) from dba_objects where object_name = 'AA_BBB_CCCC_DDDD_IN' and created > to_date( '2023-03-01' , 'yyyy-mm-dd' ) order by 4; |
最后关键点b:我一定要记住,应该最先查看OSWatch的数据,排除OS的问题。至于OSW怎么部署,运行和查看以后章节再补充。同时也得查看database的alert.log日志,有惊喜╰(°▽°)╯
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31