背景介绍

在升级到12.1.0.2.0数据库版本后,在使用12c中引入的自适应特性默认配置的情况下,可能引起SQL性能的下降。

问题现象
升级到12.1.0.2.0后,SQL语句性能可能出现下降。

影响的产品及版本
Oracle 12.1.0.2.0

原因和触发条件
Oracle 12.1.0.2版本上,增加了2个自适应特性:自适应计划和自适应统计信息,这两个特性默认都是开启的,通过一个参数optimizer_adaptive_features控制,某些场景下可能会导致SQL语句性能问题发生;

  • 自适应特性是一组能够使优化器对执行计划进行运行时调整的功能,并根据以前执行的结果调整将来执行的计划。

    1. 自适应计划(Adaptive Plans)-允许在执行过程中更改计划。
    2. 自适应统计信息(Adaptive Statistics)-允许基于先前执行的结果构建计划。可以通过SQL Plan Directives或自动创建扩展统计数据,在数据字典中保存一些更改数据。

  • 在12.2中,参数optimizer_adaptive_features已经废弃。自适应特征是由两个新参数optimizer_adaptive_plans和optimizer_adaptive_statistics进行控制。

optimizer_adaptive_plans参数控制优化器是否创建自适应计划,默认为true。当optimizer_features_enable设置12.1.0.1或更高版本时,所有的自适应功能由optimizer_adaptive_plans控制启用。optimizer_adaptive_statistics参数控制优化器是否使用自适应统计,默认为false。
选择这些默认值是为了强调实现稳定的SQL执行计划。

解决方案
建议参照12.2的标准,升级12.1的自适应特性,您需要安装补丁:
Patch 22652097
将参数optimizer_adaptive_features废弃,并分成2个参数optimizer_adaptive_plans和optimizer_adaptive_statistics,分别用于控制自适应执行计划和自适应统计信息,默认启用自适应执行计划,禁用自适应统计信息;
Patch 21171382
禁用扩展统计信息自动生成,除非参数auto_stat_extensions被设置为ON。
如果你的环境是12.1,且遇到上述问题,您需要考虑安装以上2个补丁;如果上述补丁不存在于您的特定版本和平台,或者与现有补丁的冲突,请联系支持以请求修补程序。

参考文档
Recommendations for Adaptive Features in Oracle Database 12c (Adaptive Statistics & 12c SQL Performance) (Doc ID 2187449.1)

12.1.0.2自适应特性导致SQL性能下降的更多相关文章

  1. sqlt 之 分析 DB upgrade 导致SQL 性能下降 的方法 xplore

    https://blog.csdn.net/lukeUnique/article/details/79331779 https://mauro-pagano.com/2014/10/27/when-t ...

  2. 统计信息不准导致sql性能下降

    某局的预生产系统一条sql语句20分钟执行完,上线以后2个小时没执行出来,在预生产执行计划是hash join在生产是nested loop,通过awr基表wri$_optstat_tab_histo ...

  3. Oracle 11g 中SQL性能优化新特性之SQL性能分析器(SQLPA)

    Oracle11g中,真实应用测试选项(the Real Application Testing Option)提供了一个有用的特点,叫SQL性能分析器(SQL Performance Analyze ...

  4. oracle 12.1.0.2的mgmt 导致的ORA-01017 bug

    两节点12c RAC,在两节点上export ORACLE_SID再sqlplus / as sysdba都正常登录,然而Commvault通过service_name方式(sqlplus sys/p ...

  5. Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )

    Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2  ( ORA-02296  RMAN-06004 ) 由于后期使用12c的数据库,需要对现有 ...

  6. SQL Server 优化器特性导致的内存授予相关BUG

    我们有时会遇到一些坑,要不填平,要不绕过.这里为大家介绍一个相关SQL Server优化器方面的特性导致内存授予的相关BUG,及相关解决方式,也顺便回答下邹建同学的相关疑问. 问题描述 一个简单的查询 ...

  7. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性

    Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...

  8. Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】

    翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...

  9. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

随机推荐

  1. 使用jailkit chroot更改ssh用户根目录

    安装jailkit cd /tmp    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz    tar xzf jailkit-2 ...

  2. 【Effective Java】6、使用复合优先于使用继承

    这个,不管是什么书都会这样说,因为常常我们并不需要继承,而只是想把类进行一定的扩展,而我们想扩展的属性或方法对应的类都有,这个时候如果两者是is a的关系,这种关系是确实存在的,那么就可以使用继承,不 ...

  3. android 界面设计基本知识Ⅱ

    上一章讲述了Android界面设计时,一些基本控件的使用,本章主要讲述自定义控件,Fragment和Headler线程机制. 1.自定义控件 (1)基本知识 dp.sp和dx      px:像素点  ...

  4. MongoDB配置多个ConfigDB的问题(笔记)

    由于在部署集群之前没有做好的规划,在集群中只有一个configserver和一个mongos.网上都推荐多个configserver,本人在使用的过程中发现在启动mongos进程时,congfigdb ...

  5. 基于RBAC模型的通用企业权限管理系统

    1. 为什么我们需要基于RBAC模型的通用企业权限管理系统 管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁.构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的.权限 ...

  6. ORACLE 解析xml字符串-转载的

    --------------------------方法一------------------------------------- 1.xml字符串 /* <orderlist>     ...

  7. http response

    关键词:http response header 下载文件 案例1: 访问某个链接,然后下载文件,需要特定的http头: header("Content-Type:application/z ...

  8. 如何检测 Android Cursor 泄漏

    简介: 本文介绍如何在 Android 检测 Cursor 泄漏的原理以及使用方法,还指出几种常见的出错示例.有一些泄漏在代码中难以察觉,但程序长时间运行后必然会出现异常.同时该方法同样适合于其他需要 ...

  9. libcrypto.so.1.0.0: no version information available

    openssl-1.0.1p源码安装后,依赖于openssl.so库的应用报错libcrypto.so.1.0.0: no version information available 解法:1. 创建 ...

  10. LintCode Majority Number II / III

    Given an array of integers, the majority number is the number that occurs more than 1/3 of the size ...