[转帖]NUMA导致的Oracle性能问题
https://www.cnblogs.com/realcp1018/p/6903721.html
背景简介:
Oracle版本:11.2.0.4 OS 版本:OEL5.8
在一次Oracle的Dataguard正常switchover过程中,遇到了一个极其诡异的问题,一条主业务的SQL语句在新主库的执行时间由之前的毫秒级别完成变成了20-60秒不等,为避免高峰业务超时必须尽快进行优化,否则只能走回退方案。
优化过程:
其实这个语句在之前将备库切换为snapshot备库做测试时表现是非常良好的,但是切换之后立马出了问题。在备库实际执行后获取到的执行计划与在主库一模一样,如下:

获取执行计划的语句如下:(语句出自ITPUB大神版主lfree)
|
1
2
3
4
5
|
select *fromtable(dbms_xplan.display_cursor(NVL('&1',NULL), NULL, 'ALL ALLSTATS LAST PEEKED_BINDS cost partition -projection -outline &2')); |
这里的参数1和2全部设置为空即可,此语句可以查出当前会话中上一个执行过语句的真实执行计划。
此SQL中不涉及视图,所以这个执行计划是非常好的,在主库执行也是毫秒级别的,因此同样的执行计划在备库却非常慢就很值得思考了。
接下来我利用set autot工具得到了执行此SQL后的统计信息,发现存在大量物理读。这里就很搞笑了,真实执行计划中不存在表扫描,所以出现这么多的物理读一定是回表操作特别多,那么为什么回表?显然内存不够。
于是我将SGA加大至80GB(比主库还大20GB),重启数据库再查,问题依旧。
我依然坚信是缓存的问题,那么必须要搞清为何数据未被缓存至内存,对Oracle数据库来说大多有2个原因:
1、数据太多,内存太小。
2、不是热点数据,被LRU刷出内存。
首先排除第二条,原主库60G的SGA都可以,现在80G的SGA没理由不可以。
此外注意到一个现象,v$sgainfo中的buffer pool在接近30GB时有一个很长时间的停顿,然后才慢慢增长至接近70G(剩余部分属于sharedpool等)。
于是突然想到NUMA的问题,果然:
numactl --hardware的运行结果:

这就尴尬了,在/etc/grub.conf的kernel一行后添加了numa=off,重启服务器后果然问题被解决。
事后查看数据库日志找到了如下信息:
.
因此可以确认是操作系统未关闭NUMA特性引起的(只设置数据库禁用NUMA的隐含参数是无用的,Oracle在11GR2之后已经默认禁用NUMA,但只是数据库级别)。
关于Oracle NUMA的相关信息,参考官网文档:Oracle NUMA Usage Recommendation (文档 ID 759565.1)
名词解释:
什么是NUMA:
NUMA模式是一种分布式存储器访问方式,处理器可以同时访问不同的存储器地址,大幅度提高并行性。 NUMA模式下,处理器被划分成多个"节点"(node), 每个节点被分配有的本地存储器空间。 所有节点中的处理器都可以访问全部的系统物理存储器,但是访问本节点内的存储器所需要的时间,比访问某些远程节点内的存储器所花的时间要少得多。
--OK,注意这几个字:大幅提高并行性。Oracle数据库绝大多数时候进程都是串行的,除非特意设置并行度,而SQL Server也只有超过cost阈值才会并行,因此数据库服务器应该禁用NUMA。
关于NUMA更加详细的信息参考:
https://www.ibm.com/developerworks/cn/linux/l-numa/index.html
https://technet.microsoft.com/zh-cn/library/ms178144(v=sql.105).aspx
http://www.cnblogs.com/yubo/archive/2010/04/23/1718810.html
[转帖]NUMA导致的Oracle性能问题的更多相关文章
- NUMA导致的Oracle性能问题
背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dataguard正常switchover过程中,遇到了一个极其诡异的问题,一条主业务的SQL语句在新主库 ...
- [转帖]NUMA架构的CPU -- 你真的用好了么?
NUMA架构的CPU -- 你真的用好了么? 本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于 ...
- Oracle性能优化之SQL语句
1.SQL语句执行过程 1.1 SQL语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. ...
- ORACLE性能优化之SQL语句优化
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 操作环境:AIX +11g+PLSQL 包含以下内容: 1. SQL语句执行过程 2. 优化器及执行计划 3. 合 ...
- Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...
- [转帖]万字详解Oracle架构、原理、进程,学会世间再无复杂架构
万字详解Oracle架构.原理.进程,学会世间再无复杂架构 http://www.itpub.net/2019/04/24/1694/ 里面的图特别好 数据和云 2019-04-24 09:11:59 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle Tuning (Oracle 性能调整)的一些总结
Oracle Tuning (Oracle 性能调整)的一些总结 Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库 ...
- Oracle性能问题sql调优脚本集
---------------------------------------------------------------------------------------------------- ...
- 一次vm 虚拟机时间倒流而导致的oracle 数据库启动故障
一次vm 虚拟机时间倒流而导致的oracle 数据库启动故障 本文是原创文章.若转载请注明出处: http://blog.csdn.net/msdnchina/article/details/3878 ...
随机推荐
- springsecurity 使用浅谈(一)
1. 背景 springsecurity框架主要用于Web应用的认证和授权.所谓认证就是验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户.而授权就是经过认证后判断当前用户是否有权 限进行 ...
- eclipse 使用技巧和java相关
1,内容提示:alt + / 需要配置:windwos ->preferences中搜索keys,搜索alt +/ 发现它配置的是单词完成.搜索content assist,将alt ...
- websocket实现实时直播
websocket实现实时直播 这篇文章我首发于简书,拿到这里发表不过分吧?点个赞再走呗! 作为一名web开发者,我使用websocket实现实时直播(滑鸡版). 为什么是滑鸡版呢?因为他上不了生产, ...
- [集训队作业2013] 城市规划(NTT)
一周一博客二专题计划 题面 n 个点的简单 (无重边无自环) 有标号无向连通图数目. 看着就很典 思路 设\(f(n)\)为n点连通图数目.设\(g(n)\)为n点不一定联通图数目,显然直接枚举每条边 ...
- Triple DES 加密解密技术解析
摘要:本文介绍了Triple DES加密解密技术,通过实例演示了加密和解密过程,并对算法原理进行了简要分析.同时,探讨了Triple DES在现代信息安全领域的应用和局限性. 3DES(Triple ...
- Prometheus配置Basic Auth进行安全防护,实现登录控制
本文分享自华为云社区<Prometheus配置Basic Auth进行安全防护,实现登录控制>,作者:可以交个朋友. 一.Prometheus Basic Auth 使用背景 在日常pro ...
- 史上最强DIY,手工制作一只会说话的机器狗
摘要:波士顿动力的机器狗,想要么?快来跟我一起动手制作吧. 波士顿动力的机器狗了解吗? 一个会后空翻.会开门.会爬楼梯的AI. 最近,我们实验室就来了一批mini版的机器狗,虽然不会各种高难度杂技动作 ...
- 连Python都不熟也能跑通AI人脸识别?“隐藏Boss”竟是它!
摘要:先把AI人脸识别跑起来,然后研究它是如何实现的,整个过程中确实收获不少.所谓先跟着做,再跟着学,实践与理论结合,自己感觉有理解了一些基础概念入个门,在此分享一下自己的捣鼓经验. 1.买台小&qu ...
- 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练
摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...
- Solon v2.2.12 发布,Java 应用开发框架
Solon 是一个高效的 Java 应用开发框架:更快.更小.更简单.它不是 Spring.没有使用 Servlet.JavaEE 接口,是一个有自己接口标准的开放生态: 150多个生态插件,可以满足 ...