Oracle 12C RAC的optimizer_adaptive_features造成数据插入超时
问题分析
使用10046事件追踪方式,直接生成上传时的数据库事件日志进行分析,发现主要区别在于以下两条sql语句在每次长时间上传时都有出现,并且执行用户不是上传用户,而是数据库SYS用户。
********************************************************************************
SQL ID: frjd8zfy2jfdq Plan Hash: 510421217
SELECT executions, end_of_fetch_count, elapsed_time/px_servers
elapsed_time, cpu_time/px_servers cpu_time,
buffer_gets/executions buffer_gets
FROM
(SELECT sum(executions) as executions, sum(case
when px_servers_executions > 0 then
px_servers_executions else executions end)
as px_servers, sum(end_of_fetch_count) as end_of_fetch_count,
sum(elapsed_time) as elapsed_time,
sum(cpu_time) as cpu_time, sum(buffer_gets) as
buffer_gets FROM gv$sql
WHERE executions > 0 AND sql_id = :1
AND parsing_schema_name = :2)
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 64 0.00 0.00 0 0 0 0
Execute 64 0.24 0.91 0 0 0 0
Fetch 64 0.14 0.42 0 0 0 64
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 64 0.00 0.00 0 0 0 0
Execute 64 0.24 0.91 0 0 0 0
Fetch 64 0.14 0.42 0 0 0 64
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 192 0.39 1.34 0 0 0 64
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Number of plan statistics captured: 64
Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------
1 1 1 VIEW (cr=0 pr=0 pw=0 time=20602 us)
1 1 1 SORT AGGREGATE (cr=0 pr=0 pw=0 time=20596 us)
0 0 0 PX COORDINATOR (cr=0 pr=0 pw=0 time=20573 us)
0 0 0 PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
0 0 0 VIEW GV$SQL (cr=0 pr=0 pw=0 time=0 us)
0 0 0 FIXED TABLE FIXED INDEX X$KGLCURSOR_CHILD (ind:2) (cr=0 pr=0 pw=0 time=0 us)
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ PX Deq: reap credit 1448 0.00 0.02
PX Deq: Join ACK 193 0.00 0.25
IPC send completion sync 128 0.00 0.08
PX Deq: Parse Reply 128 0.06 0.24
PX Deq: Execute Reply 128 0.00 0.06
reliable message 64 0.00 0.06
PX Deq: Signal ACK EXT 128 0.00 0.01
PX Deq: Slave Session Stats 128 0.00 0.01
enq: PS - contention 66 0.00 0.09
KJC: Wait for msg sends to complete 5 0.00 0.00
latch: shared pool 1 0.00 0.00
********************************************************************************
SQL ID: 4b4wp0a8dvkf0 Plan Hash: 4033942373
SELECT executions, end_of_fetch_count, elapsed_time/px_servers
elapsed_time, cpu_time/px_servers cpu_time,
buffer_gets/executions buffer_gets
FROM
(SELECT sum(executions_delta) as EXECUTIONS,
sum(case when px_servers_execs_delta > 0
then px_servers_execs_delta else
executions_delta end) as px_servers,
sum(end_of_fetch_count_delta) as end_of_fetch_count,
sum(elapsed_time_delta) as ELAPSED_TIME, sum(cpu_time_delta)
as CPU_TIME, sum(buffer_gets_delta) as BUFFER_GETS
FROM DBA_HIST_SQLSTAT s,
V$DATABASE d, DBA_HIST_SNAPSHOT sn
WHERE s.dbid = d.dbid
AND bitand(nvl(s.flag, 0), 1) = 0 AND
sn.end_interval_time > (select
systimestamp at TIME ZONE dbtimezone from dual) - 7
AND s.sql_id = :1
AND s.snap_id = sn.snap_id AND
s.instance_number = sn.instance_number AND s.dbid = sn.dbid
AND parsing_schema_name = :2)
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 64 0.00 0.00 0 0 0 0
Execute 64 0.08 0.08 0 0 0 0
Fetch 64 0.13 0.27 0 1170 0 64
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 192 0.21 0.36 0 1170 0 64
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Number of plan statistics captured: 3
Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------
1 1 1 VIEW (cr=18 pr=0 pw=0 time=6289 us cost=17 size=78 card=1)
1 1 1 SORT AGGREGATE (cr=18 pr=0 pw=0 time=6282 us)
0 0 0 NESTED LOOPS (cr=18 pr=0 pw=0 time=6263 us cost=15 size=124 card=1)
0 0 0 NESTED LOOPS (cr=18 pr=0 pw=0 time=6258 us cost=15 size=124 card=1)
0 0 0 HASH JOIN (cr=18 pr=0 pw=0 time=6256 us cost=14 size=97 card=1)
0 0 0 NESTED LOOPS (cr=18 pr=0 pw=0 time=6244 us cost=14 size=97 card=1)
0 0 0 STATISTICS COLLECTOR (cr=18 pr=0 pw=0 time=6241 us)
0 0 0 NESTED LOOPS (cr=18 pr=0 pw=0 time=6223 us cost=13 size=81 card=1)
1 1 1 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=5648 us cost=0 size=10 card=1)
1 1 1 FIXED TABLE FULL X$KCCDI (cr=0 pr=0 pw=0 time=3449 us cost=0 size=10 card=1)
1 1 1 BUFFER SORT (cr=0 pr=0 pw=0 time=2187 us cost=0 size=0 card=1)
1 1 1 FIXED TABLE FULL X$KCCDI2 (cr=0 pr=0 pw=0 time=2136 us cost=0 size=0 card=1)
0 0 0 PARTITION RANGE ITERATOR PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=568 us cost=13 size=71 card=1)
0 0 0 TABLE ACCESS BY LOCAL INDEX ROWID BATCHED WRH$_SQLSTAT PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=511 us cost=13 size=71 card=1)
0 0 0 INDEX RANGE SCAN WRH$_SQLSTAT_INDEX PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=477 us cost=11 size=0 card=2)(object id 8299)
0 0 0 TABLE ACCESS BY INDEX ROWID WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=16 card=1)
0 0 0 INDEX UNIQUE SCAN WRM$_SNAPSHOT_PK (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 8695)
0 0 0 TABLE ACCESS FULL WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=16 card=1)
0 0 0 INDEX UNIQUE SCAN WRM$_SNAPSHOT_PK (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 8695)
0 0 0 TABLE ACCESS BY INDEX ROWID WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=27 card=1)
0 0 0 FAST DUAL (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
Disk file operations I/O 3 0.00 0.00
control file sequential read 448 0.00 0.18
********************************************************************************
经过资料分析,这两条语句是由于开通了Oracle 12C的新功能而产生的,此功能为“optimizer_adaptive_features”。其主要功能是为了在语句执行过程中实时收集表的统计信息,方便Oracle选择更准确的执行计划。
但是,这个功能在RAC非常损耗性能,因为它需要查找全局视图gv$sql的数据,在多个实例的情况下会进行并发执行,参考这篇资料。
因为“optimizer_adaptive_features”参数宣称在OLAP数据仓库环境中可以获得较好的效果,实际在重上传轻查询的OLTP系统上,可以关闭这项新功能。
实验测试
因为该参数支持会话级别和系统级别调整,因为可以在单独一个会话内测试下插入时间和查询时间。
- 插入测试
采用同时提交多条TARGETTABLE数据。
打开“optimizer_adaptive_features”时为2.2秒,关闭该功能时为0.375。
- 查询测试
采用系统中执行最多的语句进行测试。
打开“optimizer_adaptive_features”时为0.05秒,关闭该功能时为0.02秒。
- 关闭方式
因为“optimizer_adaptive_features”为动态参数,在系统级别修改时不需要重启。已在测试环境试验可用。
执行语句为
alter system set optimizer_adaptive_features=false scope=both;
版权说明:camash原创,转载请注明出处 http://www.cnblogs.com/shenfeng/
--EOF--
Oracle 12C RAC的optimizer_adaptive_features造成数据插入超时的更多相关文章
- Oracle 12c RAC 静默安装文档
参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...
- ORACLE 12c RAC的常用管理命令
ORACLE 12c RAC的常用管理命令 一.查询 1.RAC查询 1.1.查询节点 [grid@swnode1 ~]$ su - grid [grid@swnode1 ~]$ /u01/app/1 ...
- Oracle 12c RAC 安装文档
参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...
- 安装oracle 12c RAC遇到的一些问题
(1) 安装grid软件,停止在38%很长时间不动,日志显示正常 解决方法: 由于是虚拟机安装,设置的内存为600M,关闭虚拟机,把内存调成1GB,问题解决~在38%Linking RMAN Ut ...
- oracle 12c RAC 重启
转至:https://blog.csdn.net/weixin_40283570/article/details/81511072 关闭顺序 :关闭PDB----->关闭数据库------> ...
- Oracle 12c RAC 日志体系结构的变化
1 说明 在11g中,查看GRID的日志,会进入$ORACLE_HOM/log. [grid@cndba.cn ~]$ cd $ORACLE_HOME/log/ [grid@cndba.cn l ...
- Oracle 12c RAC 搭建手册
1 共享设备配置 1.1 设备划分说明 冗余策略 卷划分及大小说明 OCRVOTING Ocrvoting01 8G Ocrvoting02 8G Ocrvoting03 8G ...
- 问题:oracle 12c rac数据库服务器的home目录丢失问题解决2018-06-25 18:30
问题原因:是由于运维粗心,在缩容/home(此目录下挂载了逻辑卷lv_home)时没有先缩小文件系统(resize2fs)也没有备份,导致home数据损坏,重启时系统无法正常启动 解决方案:跳过此ho ...
- Oracle 12c 新特性 --- 新增对数据泵操作的审计跟踪
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/leo__1990/article/details/90199263 概念 Oracle Data P ...
随机推荐
- 使用Apache HttpClient
在一般情况下,如果只是需要Web站点的某个简单页面提交请求并获取服务器响应,完全可以使用前面所介绍的HttpConnection来完成.但在绝大部分情况下,Web站点的网页可能没这么简单,这些页面并不 ...
- [Js]碰撞运动
描述:撞到目标点弹回来(速度反转) 一.无重力的漂浮div var div1=document.getElementById("div1"); var iSpeedX=6; var ...
- JAVA输出图形(网上找的)
public class TuXing { public static void main(String[] args) { int i, j, k; for (i = 1; i <= 5; i ...
- 怎么学好python?
文章摘自:http://www.jb51.net/article/16100.htm 1)学好python的第一步,就是马上到www.python.org网站上下载一个python版本.我建议初学者, ...
- ios应用数据存储的常用方式 ios7.1应用沙盒
归档:用某种格式保存某个对象,又称持久化. 1XML 属性列表plist归档(持久化) 2Preference(偏好设置) 3NSKeyedArchiver归档 4SQLite3 5Core Data ...
- iOS 下如果存在UIScrollerView 使用UIScreenEdgePanGestureRecognizer实现侧滑效果失效的问题
当你在使用UIScreenEdgePanGestureRecognizer手势实现侧滑的时候,如果后期你导航控制器push出的界面中包含UIScrollerView,这个时候你会发现,侧滑效果无法实现 ...
- java中this的用法?
2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...
- xcode开发的6个小技巧
Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...
- iphone获取当前流量信息
通过读取系统网络接口信息,获取当前iphone设备的流量相关信息,统计的是上次开机至今的流量信息. 代码 悦德财富:https://yuedecaifu.com 1 2 3 4 5 6 7 8 9 1 ...
- HTML--9表单和验证事件
1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...