查询v$lock缓慢和direct path write temp等待
select count(*) from v$lock;COUNT(*) ----------163Elapsed: 00:00:60.90Execution Plan ---------------------------------------------------------- Plan hash value: 2384831130-------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 50 | 1 (100)| 00:00:01 | | 1 | SORT AGGREGATE | | 1 | 50 | | | |* 2 | HASH JOIN | | 1 | 50 | 1 (100)| 00:00:01 | | 3 | MERGE JOIN CARTESIAN | | 100 | 3800 | 0 (0)| 00:00:01 | |* 4 | FIXED TABLE FULL | X$KSUSE | 1 | 19 | 0 (0)| 00:00:01 | | 5 | BUFFER SORT | | 100 | 1900 | 0 (0)| 00:00:01 | | 6 | FIXED TABLE FULL | X$KSQRS | 100 | 1900 | 0 (0)| 00:00:01 | | 7 | VIEW | GV$_LOCK | 10 | 120 | 0 (0)| 00:00:01 | | 8 | UNION-ALL | | | | | | |* 9 | FILTER | | | | | | | 10 | VIEW | GV$_LOCK1 | 2 | 24 | 0 (0)| 00:00:01 | | 11 | UNION-ALL | | | | | | |* 12 | FIXED TABLE FULL| X$KDNSSF | 1 | 64 | 0 (0)| 00:00:01 | |* 13 | FIXED TABLE FULL| X$KSQEQ | 1 | 64 | 0 (0)| 00:00:01 | |* 14 | FIXED TABLE FULL | X$KTADM | 1 | 64 | 0 (0)| 00:00:01 | |* 15 | FIXED TABLE FULL | X$KTATRFIL | 1 | 64 | 0 (0)| 00:00:01 | |* 16 | FIXED TABLE FULL | X$KTATRFSL | 1 | 64 | 0 (0)| 00:00:01 | |* 17 | FIXED TABLE FULL | X$KTATL | 1 | 64 | 0 (0)| 00:00:01 | |* 18 | FIXED TABLE FULL | X$KTSTUSC | 1 | 64 | 0 (0)| 00:00:01 | |* 19 | FIXED TABLE FULL | X$KTSTUSS | 1 | 64 | 0 (0)| 00:00:01 | |* 20 | FIXED TABLE FULL | X$KTSTUSG | 1 | 64 | 0 (0)| 00:00:01 | |* 21 | FIXED TABLE FULL | X$KTCXB | 1 | 64 | 0 (0)| 00:00:01 | --------------------------------------------------------------------------------------direct path write temp direct path write temp direct path write temp ................
显然仅返回100多条记录的v$LOCK视图的查询不该这么慢,也不该由SORT或HASH造成大量的临时空间使用, 究其根本还是FIXED TABLE即X$的内部表上的统计信息不准确导致的执行计划使用,通过使用RULE HINT可以马上获得较好的性能:
select /*+ RULE */ count(*) from v$LOCK;COUNT(*) ----------190Elapsed: 00:00:00.18Execution Plan ---------------------------------------------------------- Plan hash value: 2026431807------------------------------------------------- | Id | Operation | Name | ------------------------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | MERGE JOIN | | | 3 | SORT JOIN | | | 4 | MERGE JOIN | | | 5 | SORT JOIN | | | 6 | FIXED TABLE FULL | X$KSQRS | |* 7 | SORT JOIN | | | 8 | VIEW | GV$_LOCK | | 9 | UNION-ALL | | |* 10 | FILTER | | | 11 | VIEW | GV$_LOCK1 | | 12 | UNION-ALL | | |* 13 | FIXED TABLE FULL| X$KDNSSF | |* 14 | FIXED TABLE FULL| X$KSQEQ | |* 15 | FIXED TABLE FULL | X$KTADM | |* 16 | FIXED TABLE FULL | X$KTATRFIL | |* 17 | FIXED TABLE FULL | X$KTATRFSL | |* 18 | FIXED TABLE FULL | X$KTATL | |* 19 | FIXED TABLE FULL | X$KTSTUSC | |* 20 | FIXED TABLE FULL | X$KTSTUSS | |* 21 | FIXED TABLE FULL | X$KTSTUSG | |* 22 | FIXED TABLE FULL | X$KTCXB | |* 23 | SORT JOIN | | |* 24 | FIXED TABLE FULL | X$KSUSE | -------------------------------------------------
针对上述问题考虑为FIXED TABLE收集统计信息,可以使用DBMS_STATS.GATHER_FIXED_OBJECTS_STATS标准存储过程,特别是对于版本升级上来的数据库,特别需要考虑执行该存储过程更新FIXED TABLE STATISTICS:
SQL> set timing on; SQL> exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;PL/SQL procedure successfully completed.Elapsed: 00:01:24.87
Create fixed table statistics Directly after catupgrd.sql has been completed This will speed up processing for recompilation with utlrp.sql Create fixed table statistics again after a week with regular production workload This task should be done only a few times per year
转载于:https://blog.51cto.com/maclean/1277089
查询v$lock缓慢和direct path write temp等待相关推荐
- ORACLE 索引并行引起的direct path read temp和latch free等待导致进程数超过最大数
2016年10月27日下午,测试同事说测试数据库连接不上了,让我们DBA查看问题并解决一下. 操作系统:Red Hat Enterprise Linux Server release 6.6 ( ...
- oracle direct path read temp,direct path read/read temp等待事件
当会话从磁盘直接读取数据块到PGA(绕过SGA)时,发生direct path read/read temp等待事件 ,下图简要描述了这种方式的读取方式: 如果I/O子系统不支持异步I/Os,那么每个 ...
- oracle direct path read temp,Oracle中的direct path read事件(转)
在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了. 在10g中,都是通过gc buffer来读的,所以不存在direct pa ...
- 深入解析direct path read
传统读取数据的方式是服务器进程通过读取磁盘,然后把数据加载到共享内存中,这样后面的进程就可以通过共享内存访问这些数据,不用再通过缓慢的磁盘读取来 完成.direct path read读取数据块 ...
- 一次direct path read 故障处理
说明: 产生direct path read事件的原因有三种情况: Causes This situation occurs in the following situations: The sort ...
- ORACLE等待事件:direct path write
2015年4月27日,晚上6点左右,电渠3g2库ORACLE RAC系统节点1出现大量的direct path write等待事件,导致大量的会话堆积,节点1几乎无法使用,应用受到影响,相关处理流程如 ...
- Oracle 11g新特性direct path read引发的系统停运故障诊断处理
Oracle 11g新特性direct path read引发的系统停运故障诊断处理 黎俊杰 | 2016-07-28 14:37 声明:部分表名为了脱敏而用XX代替 1.故障现象 (1)一个业务系统 ...
- oracle 11g禁用和强制direct path read
一般在混合型环境中,大表在进行全表扫描或者走并行的时候一般会出现direct path read等待事件,如果在OLTP或者纯粹的DSS环境中,出现大量的direct path read直接路径读取, ...
- 生产环境 direct path read 与log file sync等待事件问题处理
1. 2018-09-26 前7天awr报告(此期间 oracle 使用率为 4,022.34/6,179.76/24=2.71%) 由此看出最显著问题是 log file sync 等待事件,查看后 ...
最新文章
- 设置EditText光标颜色
- 皮一皮:感受下什么叫瑟瑟发抖的寒冬...
- boost::notify_all_at_thread_exit相关的测试程序
- jackson的简单实用实例(json)
- JavaMD5加密MD5Utils工具类
- 8个经典智能穿戴设备优选电路方案合辑
- 机器人拉格朗日动力学应用公式详解
- 一文看懂外汇风险准备金率调整为 20%的含义
- word文档 目录 导航窗格 整理
- python scratch unity_极客晨星:少儿编程热门语言,除了Scratch还有哪些
- 易语言多线程崩溃解决的原因
- php 银行卡归属,银行卡归属地查询
- aspen模拟蒸发器_用aspen计算多效蒸发器:高浓盐废水处理蒸发工艺简介
- 东湖高新区申报2023年融资租赁公司等类金融机构财政支持政策解读
- ISO27001-2013学习笔记
- 梅花点讯输入法关闭按键气泡提示注册表
- 各种品牌的主板和笔记本的BIOS快捷启动按键
- stm32f103之GP2Y1014AU
- 家庭学生版本offic安装mathtype7.4
- LikeLib:深耕链圈的公链技术标杆者