题目         部分

【DB笔试面试823】在Oracle中,如何查看过去某一段时间数据库系统的会话是否有问题?


     




         答案部分          


可以通过DBA_HIST_ACTIVE_SESS_HISTORY视图来进行查询,首先查询指定时间段的等待事件,下例中的SQL语句查询的是2016510号下午1730分到1930分这段时间内数据库的等待事件和SQL的执行情况,其中,COUNTS列的值比较大的就是SQL执行时间较长的,需要特别关注:

1SELECT D.EVENT, D.SQL_ID, COUNT(1) COUNTS
2  FROM DBA_HIST_ACTIVE_SESS_HISTORY D
3  WHERE D.SAMPLE_TIME >= TO_DATE('2016-05-10 17:30:00''YYYY-MM-DD HH24:MI:SS')
4  AND    D.SAMPLE_TIME <= TO_DATE('2016-05-10 19:30:00''YYYY-MM-DD HH24:MI:SS')
5 GROUP  BY D.EVENT,D.SQL_ID;
     


下面的SQL语句可以查询到具体SQL的扫描操作,初步预估SQL问题:

 1SELECT TO_CHAR(D.SAMPLE_TIME, 'YYYY-MM-DD HH24:MI:SS') SAMPLE_TIME,
2       D.SQL_ID,
3       D.SQL_PLAN_HASH_VALUE,
4       D.SQL_PLAN_OPERATION,
5       D.SQL_PLAN_OPTIONS,
6       D.EVENT 
7  FROM DBA_HIST_ACTIVE_SESS_HISTORY D
8 WHERE D.SAMPLE_TIME >= TO_DATE('2016-05-10 17:30:00''YYYY-MM-DD HH24:MI:SS')
9   AND D.SAMPLE_TIME <= TO_DATE('2016-05-10 19:30:00''YYYY-MM-DD HH24:MI:SS')
10 ORDER BY D.SNAP_ID;
     


根据以上的SQL语句可以知道,对表做的是否是全表扫描,以及当时会话的等待事件是什么,然后就可以根据等待事件进行SQL分析了。

如下的SQL语句可以查询某一段时间内,会话所持有的锁信息:

 1SELECT D.SQL_ID,
2        CHR(BITAND(P1, -16777216) / 16777215) ||CHR(BITAND(P1, 16711680) / 65535"Lock",
3        BITAND(P1, 65535"Mode",
4        COUNT(1) COUNTS,
5        COUNT(DISTINCT D.SESSION_ID) COUNTS1
6   FROM DBA_HIST_ACTIVE_SESS_HISTORY D
7  WHERE D.SAMPLE_TIME >= TO_DATE('2016-05-10 17:30:00''YYYY-MM-DD HH24:MI:SS')
8    AND D.SAMPLE_TIME <= TO_DATE('2016-05-10 19:30:00''YYYY-MM-DD HH24:MI:SS')
9    AND D.EVENT = 'enq: TX - row lock contention'
10  GROUP BY D.SQL_ID,
11           (CHR(BITAND(P1, -16777216) / 16777215) ||
12           CHR(BITAND(P1, 16711680) / 65535)),
13           (BITAND(P1, 65535));
     


如下的SQL语句可以查询系统问题时间段内的会话详情:

 1SELECT D.CURRENT_OBJ#,
2       D.CURRENT_FILE#,
3       D.CURRENT_BLOCK#,
4       D.CURRENT_ROW#,
5       D.EVENT,
6       D.P1TEXT,
7       D.P1,
8       D.P2TEXT,
9       D.P2,
10       CHR(BITAND(P1, -16777216) / 16777215) ||CHR(BITAND(P1, 16711680) / 65535"Lock",
11       BITAND(P1, 65535"Mode",
12       D.BLOCKING_SESSION,
13       D.BLOCKING_SESSION_STATUS,
14       D.BLOCKING_SESSION_SERIAL#,
15       D.SQL_ID,
16       TO_CHAR(D.SAMPLE_TIME, 'YYYYMMDDHH24MISS') SAMPLE_TIME
17  FROM DBA_HIST_ACTIVE_SESS_HISTORY D
18 WHERE D.SAMPLE_TIME >= TO_DATE('2016-05-10 17:30:00''YYYY-MM-DD HH24:MI:SS')
19   AND D.SAMPLE_TIME <= TO_DATE('2016-05-10 19:30:00''YYYY-MM-DD HH24:MI:SS')
20   AND D.EVENT = 'enq: TX - row lock contention';
     


& 说明:

有关一些具体的分析过程可以参考我的BLOG案例:http://blog.itpub.net/26736162/viewspace-2123996/



本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗


================================================================================================================== 【干货来了|小麦苗IT资料分享】★小麦苗DB职场干货:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w★小麦苗数据库健康检查:https://share.weiyun.com/5lb2U2M★小麦苗微店:https://weidian.com/?userid=793741433★各种操作系统下的数据库安装文件(Linux、Windows、AIX等):https://pan.baidu.com/s/1hqff3Evv6oj2-Tn87MpFkQ★小麦苗分享的资料:https://share.weiyun.com/57HUxNi★小麦苗课堂资料:https://share.weiyun.com/5fAdN5m★小麦苗课堂试听资料:https://share.weiyun.com/5HnQEuL★小麦苗出版的相关书籍:https://share.weiyun.com/5sQBQpY★小麦苗博客文章:https://share.weiyun.com/5ufi4Dx★数据库系列(Oracle、MySQL、NoSQL):https://share.weiyun.com/5n1u8gv★公开课录像文件:https://share.weiyun.com/5yd7ukG★其它常用软件分享:https://share.weiyun.com/53BlaHX★其它IT资料(OS、网络、存储等):https://share.weiyun.com/5Mn6ESi★Python资料:https://share.weiyun.com/5iuQ2Fn★已安装配置好的虚拟机:https://share.weiyun.com/5E8pxvT★小麦苗腾讯课堂:https://lhr.ke.qq.com/★小麦苗博客:http://blog.itpub.net/26736162/★OCP培训:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA★12c的OCP培训:https://mp.weixin.qq.com/s/hMLHlyjMHhLmA0xN4hLvfw★OCM培训:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA★高可用(RAC+DG+OGG)培训:https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw★小麦苗课堂腾讯视频:http://v.qq.com/vplus/71f69a319a24c6808cd6e6189ae90664
==================================================================================================================
 

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599、618766405

 微信:lhrbestxh

 微信公众号:DB宝

 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。


本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

©著作权归作者所有:来自51CTO博客作者小麦苗DB宝的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【DB笔试面试253】在Oracle中,有哪些角色可以管理ASM实例,它们之间
  2. 【DB笔试面试824】在Oracle中,什么是ADDM?
  3. 【DB笔试面试108】在Oracle中,sqldlr true 。。。SQL*Loader util
  4. 【DB笔试面试385】Oracle的锁分为哪几种?每种锁各有什么用途?它们
  5. 【DB笔试面试821】在Oracle中,如何定时生成AWR报告?
  6. 【DB笔试面试119】在Oracle中,Identify three key features of AS
  7. 【DB笔试面试510】在Oracle中,DBMS_OUTPUT提示缓冲区不够,怎么增加
  8. 【DB笔试面试702】在Oracle中,如何定时清理INACTIVE状态的会话?
  9. 【DB笔试面试678】在Oracle中,什么是热块?

随机推荐

  1. Android三种实现定时器的方法
  2. android dialog 背景透明的样式
  3. SurfaceView设置透明效果
  4. android的listView中设置line
  5. Android SDK Manager不能显示所有包的解
  6. android 设置 dialog位置
  7. Android:BadTokenException: Unable to ad
  8. android 字符串加解密算法
  9. Android-BLE低功耗蓝牙开发
  10. 很好的资源 for android