12.2统计信息之管理统计信息

除了收集合适的统计信息,提供一个管理这些统计信息的综合架构同样重要。oracle提供了多个方法去做这些工作,包括恢复统计信息到以前的版本,提供从一个系统迁移统计信息到另外一个的选项,甚至你可以手动设置统计信息。这些选项在某些特定情形下都非常有用,但是仍然建议都通过DBMS_STATS包来收集统计信息。 恢复统计信息 当你用DBMS_STATS包来收集统计信息时,……

阅读全文

12.2统计信息之分区表

分区表上的统计信息要同时计算表级别和分区级别,11g以前新增一个分区或者修改少数分区的数据需要扫描整张表去刷新表的统计信息。如果跳过收集全局统计信息,那么优化器则会根据分区级别的统计信息去推断全局级别的统计信息。这种方法对于简单的表统计信息(例如行数)是准确的——通过聚合所有分区的行数,但是其他的统计信息就无法准确的推断。比如无法从每个分区独立的信息来准确推……

阅读全文

12.2统计信息之扩展统计信息

从11g开始引入了对列收集扩展统计信息,扩展统计信息包含了两种额外类型的统计信息:组合列和表达式统计信息。 组合列 对于真实数据来说,一个表中多个字段直接的数据通常具有关联性。比如在CUSTOMERS表中,CUST_STATE_PROVINCE字段会受到COUNTRY_ID字段值的影响,比如湖北只会出现在中国下面,如果只有基本的统计信息,优化器是没有办法知道这些……

阅读全文

12.2统计信息之直方图

介绍 很早之前的版本中,如何执行一个sql语句是由RBO(Rule Based Optimizer)决定的,根据一些设定好的规则来生成执行计划。 后来的版本中CBO(Cost Based Optimizer)被引入进来。CBO检查sql所有可能的执行计划然后选择其中cost最低的一个,cost其实就是反应了执行计划估算的资源消耗。cost越低,这个执行计划也就被认为效率越高。为了能让C……

阅读全文

将11g数据库插入到12c成为pdb

为了将以前的旧库整合起来,需要将旧库都插入到12c数据库当中统一管理 这篇文章主要介绍如何将原有的11g数据库作为pdb插到已有的12c数据库当中去 现有环境 SID 版本 CDB Test 11.2.0.4 NO Ora12c 12.2.0.1 YES 升级11g数据库 参考通过DBUA升级11g到12.2,不过多介绍 从NO-CDB插入到CDB示意图 确认源库信息 sys@TEST> show parameter db_name PARAMETER_NAME TYPE VALUE ------------------------------------------------------------ --------------------------------- ----------------------------------------------- db_name string test sys@TEST> select name, cdb from v$database; NAME CDB --------------------------- --------- TEST NO sys@TEST> select instance_name from v$instance; INSTANCE_NAME ------------------------------------------------ test DBMS_P……

阅读全文

通过DBUA升级11g到12.2

12c已经出来了很长时间,公司的11g系统可能都考虑升级到12c,整理一下相关操作。这篇文章都是在实验环境上,所以有些不必要的步骤就没有一一做完,如果是生产环境则需要认真读一下官方文档Database Upgrade Guide 12.2 看一下升级到最新的12.2可以通过哪些途径 Current Release Upgrade Options 12.1.0.1, 12.1.0.211.2.0.3 or later 可以直接升级,参考对应版本的升级手册即可 11.2.0.1, 11.2.0.2 11.1.0.6, 11.1.0.7 10.2.0.2, 10.2.0.3, 10.2.0.4 and 10.2.0.5 10.1.0.5 9.2.0.8 or earlier 无法直接升级到12.2 解决办法……

阅读全文

12c Adaptive Statistics

之前写过一篇12c Adaptive Plans,现在来说一下Adaptive Query Optimization的另外一部分:Adaptive Statistics sql执行的计划的好坏很大程度上取决于统计信息的质量,现在的sql语句越来越复杂,单纯的依赖单独某个表的统计信息已经无法满足要求,为了使统计信息更加丰富完善,引入了新的帮手Adaptive Statistics Dynamic Statistics 在一个sql语句编译的过程中,优化器会判断现有的……

阅读全文

12c Adaptive Plans

12c在优化器方面引入了不少的新特性,其中一个就是Adaptive Plans。 在特定的条件下优化器会使用这个新特性,比如sql语句包含了表关联、复杂的谓词条件导致很难精准的估算cardinality,Adaptive Plans使优化器可以等到真正在执行sql语句的时候才决定采用哪种执行计划。 优化器会优先选择一个默认执行计划,同时搭配一个_statistics……

阅读全文

12c truncate cascade

从12c开始,truncate命令支持了新的参数cascade 有了这个参数你就可以同时truncate父表和子表,当然这个参数的使用有一定的前提条件,就是父子表的完整性约束必须要用ON DELETE CASCADE来定义,父子表必须要属于同一个用户下,同时你要对这些表都有DROP TABLE的权限 新建一对父子表,用ON DELETE CASCADE来定义相关约束 CREATE TABLE t1 ( id NUMBER, name VARCHAR2(50), CONSTRAINT t1_pk PRIMARY KEY (id)……

阅读全文

12c 语法错误的sql日志记录

当sql语句不小心写错的时候,通常会报ORA-00923的错误 SYS@xb> select count(1) frm user_tables; select count(1) frm user_tables * ERROR at line 1: ORA-00923: FROM keyword not found where expected 但是很遗憾的是这个错误并不会在alert日志里产生,试想一下如果这些连接是通过应用端发起的,大量的语法错误的语句会进行sql解析等操作,无疑会消耗系统资源,而且你还无法知晓。 当然你也许可以通过设置10035事件来进行分析 11.2.0.4 SYS@xb> oradebug setmypid Statement processed. SYS@xb> oradebug event 10035 trace name context forever,level 1; Statement processed. SYS@xb>……

阅读全文