代码改变世界

随笔分类 - A性能优化专题

Oracle面对“数据倾斜列使用绑定变量”场景的解决方案

2019-08-27 00:32 by AlfredZhao, 290 阅读, 收藏, 编辑
摘要:"1.背景知识介绍" "2.构造测试用例" "3.场景测试" "4.总结" 1.背景知识介绍     我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而增加系统的并发处理能力。甚至在有些老旧系统, 阅读全文

Oracle 10g收集数据库统计信息

2019-01-18 23:01 by AlfredZhao, 325 阅读, 收藏, 编辑
摘要:"1.需求概述" "2.实施步骤" "3.回退方案" 1.需求概述 某数据库由于整体统计信息不准确,多次出现部分业务SQL选错执行计划,从而导致性能下降影响到最终用户体验,目前通过SQL_PROFILE绑定执行计划临时解决,但此方法不够灵活,后续维护工作量也会增加。 Oracle优化器(CBO)依赖 阅读全文

测试Oracle统计信息的导出导入

2018-12-18 19:28 by AlfredZhao, 464 阅读, 收藏, 编辑
摘要:背景: 有时我们会希望可以对Oracle的统计信息整体进行导出导入。比如在数据库迁移前后,希望统计信息保持不变;又比如想对统计信息重新进行收集,但是担心重新收集的结果反而引发性能问题,想先保存当前的统计信息,这样即使重新收集后效果不好还可以导入之前的统计信息。 Oracle提供给我们一些方法,比较常 阅读全文

Oracle 11g快速收集全库统计信息

2018-12-01 00:26 by AlfredZhao, 1088 阅读, 收藏, 编辑
摘要:环境: Oracle 11.2.0.4 采用并行的方式,快速收集全库统计信息,多用于跨版本升级之后,对全库的统计信息重新进行快速收集: 注意degree的值并不是设置越高就越快,同时要根据实际CPU具体情况来设置。 本文来自同事的经验分享,这里主要用到dbms_stats包的set_global_p 阅读全文

Oracle之SQL优化专题02-稳固SQL执行计划的方法

2018-11-05 03:32 by AlfredZhao, 348 阅读, 收藏, 编辑
摘要:首先构建一个简单的测试用例来实际演示: 测试过程中查看真实执行计划的方法: 正常的SQL执行,执行计划会走相应的索引: 糟糕的SQL执行,执行计划走全表扫描(这里实验直接利用使用hint强制不走索引来模拟这种情况): 假设此时这些糟糕的SQL就是业务实际的SQL,且对应开发人员无法更改SQL文本(这 阅读全文

使用COE脚本绑定SQL Profile

2018-11-05 00:33 by AlfredZhao, 503 阅读, 收藏, 编辑
摘要:日常运维中,经常会遇到需要绑定好的执行计划的场景。 简单来说,就是将一个sql_id绑定好的plan_hash_value。如果没有使用到绑定变量,还需要把force_match设置为true。 用到的是MOS文档215187.1提供的系列脚本中的coe_xfr_sql_profile.sql。 下 阅读全文

那些年,我们用并行遇到的坑02

2018-08-29 00:51 by AlfredZhao, 365 阅读, 收藏, 编辑
摘要:环境: Oracle 10.2.0.5 现象: RMAN分配多个通道,但实际无法使用到并行。 构建测试用例: "1.RMAN多通道但未用到并行" "2.备份语句改写使用到并行" "3.备份方式改变提高效率" 1.RMAN多通道但未用到并行 使用RMAN备份 使用下面SQL查询长操作: 实际是串行操作 阅读全文

Oracle SPA取报告阶段xml解析失败解决方案

2018-06-27 08:59 by AlfredZhao, 573 阅读, 收藏, 编辑
摘要:SPA的整体测试过程可以参考: "记录一则完整的SPA(10g 11g)测试过程" 故障描述: 数据库字符集:US7ASCII,在SPA分析阶段正常,但在取报告阶段xml解析失败,具体现象如下: 这个invalid character 207,之前是别的无效字符,用一些方法删除掉重新SPA解包分析, 阅读全文

记录一则完整的SPA(10g->11g)测试过程

2018-06-22 12:10 by AlfredZhao, 365 阅读, 收藏, 编辑
摘要:生产端: Windows 2008 + Oracle 10.2.0.5 测试端: RHEL 6.5 + Oracle 11.2.0.4 需求: 因为Oracle跨越大版本,优化器、新特性变动较多,需要进行SPA测试比对前后期性能差异。 说明: 本文是根据DBA Travel的SPA参考规范文档(在此 阅读全文

Oracle之SQL优化专题01-查看SQL执行计划的方法

2018-04-01 22:05 by AlfredZhao, 8282 阅读, 收藏, 编辑
摘要:在我2014年总结的“ "SQL Tuning 基础概述" ”中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执行计划的方法。 本文示例SQL为: "1.explain plan for" "2.set autotrace" 阅读全文

关于Oracle开启自动收集统计信息的SPA测试

2018-01-07 21:00 by AlfredZhao, 921 阅读, 收藏, 编辑
摘要:主题: 关于Oracle开启自动收集统计信息的SPA测试 环境: Oracle RAC 11.2.0.4(Primary + Standby) 需求: 生产Primary库由于历史原因关闭了自动统计信息的收集,目前客户需求是想要重新开启统计信息的自动收集,虽然一般来说,有了更准确的统计信息,SQL会 阅读全文

####### Scripts Summary #######

2017-11-09 10:54 by AlfredZhao, 264 阅读, 收藏, 编辑
摘要:Scripts Summary Version: 1.0.1 issueDate: 2017 11 11 modifiedDate: 2017 11 28 "0.configuration" "1.operation" "2.backup&recovery" "3.Tuning" "4.RAC" " 阅读全文

SQL Tuning 基础概述10 - 体会索引的常见执行计划

2017-03-22 17:33 by AlfredZhao, 225 阅读, 收藏, 编辑
摘要:在《 "SQL Tuning 基础概述05 Oracle 索引类型及介绍" 》的1.5小节,提到了几种"索引的常见执行计划": INDEX FULL SCAN:索引的全扫描,单块读,有序 INDEX RANGE SCAN:索引的范围扫描 INDEX FAST FULL SCAN:索引的快速全扫描,多 阅读全文

Oracle数据库该如何着手优化一个SQL

2016-01-12 14:53 by AlfredZhao, 3466 阅读, 收藏, 编辑
摘要:这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异。 所以有时候我们应该先搞清楚需求到底是什么,SQL本身是否合理,这些思考很可能会使优化工作事半功倍。而本文是假设SQL本身 阅读全文

SQL优化记录- hints固定执行计划

2015-12-25 16:31 by AlfredZhao, 7 阅读, 收藏, 编辑
该文被密码保护。

SQL Tuning 基础概述09 - SQL Access Advisor

2015-12-23 13:27 by AlfredZhao, 386 阅读, 收藏, 编辑
摘要:Oracle官方文档对SQL Access Advisor的描述如下: SQL Access Advisor, which is a tuning tool that provides advice on improving the performance of a database through 阅读全文

Oracle Tuning 基础概述01 - Oracle 常见等待事件

2015-05-25 23:32 by AlfredZhao, 1716 阅读, 收藏, 编辑
摘要:对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些。Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据库版本包含的等待事件。例如我在Linux平台查11.2.0.4版本的Oracle是有1367个等待事 阅读全文

SQL Tuning 基础概述08 - SQL Tuning Advisor

2015-01-26 19:06 by AlfredZhao, 728 阅读, 收藏, 编辑
摘要:SQL调优顾问 SQL Tuning Advisor的使用案例: 1.构建测试表T 2.定义调整任务 3.修改调整任务参数 4.执行调整任务 5.监控调整任务 6.查看调整任务建议 7.删除调整任务 1.构建测试表T 2.定义调整任务 对“select owner, object_id, objec 阅读全文

SQL Tuning 基础概述07 - SQL Joins

2015-01-20 20:42 by AlfredZhao, 409 阅读, 收藏, 编辑
摘要:N多年之前,刚刚接触SQL的时候,就被多表查询中的各种内连接,外连接,左外连接,右外连接等各式各样的连接弄的晕头转向。 更坑的是书上看到的各种表连接还有两种不同的写法, 比如对于表A,表B的查询 1,内连接两种写法: 2,右外连接写法: 3,左外连接写法: 而对各个查询结果的区别,也是让人抓狂的记忆 阅读全文

SQL Tuning 基础概述06 - 表的关联方式:Nested Loops Join,Merge Sort Join & Hash Join

2014-12-02 22:25 by AlfredZhao, 729 阅读, 收藏, 编辑
摘要:nested loops join(嵌套循环) 驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制。 驱动表限制条件有索引,被驱动表连接条件有索引。 hints:use_nl() merge sort join(排序合并) 驱动表和被驱动表都是最多访问1次,无驱动顺序,需要排 阅读全文

SQL Tuning 基础概述05 - Oracle 索引类型及介绍

2014-11-27 23:11 by AlfredZhao, 1055 阅读, 收藏, 编辑
摘要:一、B-Tree索引 三大特点:高度较低、存储列值、结构有序 1.1利用索引特性进行优化 外键上建立索引:不但可以提升查询效率,而且可以有效避免锁的竞争(外键所在表delete记录未提交,主键所在表会被锁住)。 统计类查询SQL:count(), avg(), sum(), max(), min() 阅读全文

SQL Tuning 基础概述04 - Oracle 表的类型及介绍

2014-11-18 11:29 by AlfredZhao, 524 阅读, 收藏, 编辑
摘要:Tables A table describes an entity such as employees. You define a table with a table name, such as employees, and set of columns. In general, you giv 阅读全文

SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

2014-11-04 23:45 by AlfredZhao, 1292 阅读, 收藏, 编辑
摘要:1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: 1.2 其他session跟踪:(根据其他session的sid, serial#定位,最常用) 1.3 Instance 级别:(很少用到,会造成系统的额外开销) 实例级别还可以在pfile/spfile参数文件中加 sql 阅读全文

SQL Tuning 基础概述02 - Explain plan的使用

2014-08-31 23:47 by AlfredZhao, 650 阅读, 收藏, 编辑
摘要:1.explain plan的使用 2.explain plan 只是显示执行计划,并不会真正执行delete语句· 阅读全文

SQL Tuning 基础概述01 - Autotrace的设定

2014-07-16 23:57 by AlfredZhao, 814 阅读, 收藏, 编辑
摘要:1.autotrace的设定 2.实验验证 set autot trace exp 没有真正执行查询类sql: 阅读全文