• 博客访问: 2250085
  • 博文数量: 426
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-04 10:12
  • 认证徽章:
个人简介

ORACLE ACE-A,自07年接触ORACLE数据库,拥有7年ORACLE数据库运维经验,ACOUG,SHOUG核心成员,曾先后就职于东软集团股份有限公司、阿里巴巴(中国)网络科技有限公司,现就职于无锡新彩软件有限公司担任数据库架构师、DBA主管,负责公司数据库架构的设计、DB的规模化运维和性能调优。

文章分类

全部博文(426)

发布时间:2018-05-30 17:49:20

默认通过SQL Tuning Advisor创建的SQL Profile,是通过一些修正因子来达到修正执行计划的目的,但是随着数据的变化,时间的推移,这些SQL Profile里包含的修正因子可能也已经不再准确,因此在某些使用了SQL Profile的SQL上可能会发现刚开始这些SQL Profile工作的很好,但是不久就会产生一些问题。......【阅读全文】

阅读(5) | 评论(0) | 转发(0)

发布时间:2018-05-25 11:51:35

我们已经学习了如何通过SQL Tuning Advisor来使用SQL Profile,接下来我们来学习一些更高级的知识,如何手工创建一个SQL Profile。本章一开头我们提到,SQL Profile其实也是通过一些存储的hint来发挥作用的,那么这些hint是存储在什么地方的?ORACLE 10G版本,可以通过查看sys.sqlprof$、sys.sqlprof$attr来获得SQL Profile使用的hint,但是11G后这两个数据字典基表不再有效,需要通过查看sys.sqlobj$data、sys.sqlobj$来查看SQL Profile使用的hint。......【阅读全文】

阅读(637) | 评论(0) | 转发(0)

发布时间:2018-05-23 11:26:31

在11GR2上SQL Tuning Advisor已经变得非常好用,我非常喜欢将一些非常复杂的SQL语句交给SQL Tuning Advisor来调优,几乎每次都不让我失望,通常调优结束后,SQL Tuning Advisor都会给你一些建议,例如建议你创建索引或者收集统计信息,或者建议你接受SQL Profile并且给出了接受SQL Profile后性能将得到的提升。......【阅读全文】

阅读(37) | 评论(0) | 转发(0)

发布时间:2018-05-15 11:43:31

SQL Profile是我非常喜欢的一个技术,通过它可以在不修改SQL语句的情况下,为SQL绑定任何需要的hint,与SQL代码是分离的,而且相对Baseline、outline来说,操作步骤简单,如果使用熟练可以在极短的时间内修正一个查询语句的执行计划,我已经在多个场合使用SQL Profile解决了数据库的性能问题。......【阅读全文】

阅读(33) | 评论(0) | 转发(0)

发布时间:2018-05-10 10:06:57

Oracle数据库对于做那些做运维的DBA是非常友好的,在Oracle的数据库中,有着大量的性能视图可以供DBA来进行性能诊断,也有AWR,ADDM这些极易上手的性能诊断工具帮助DBA分析数据库性能问题。但是就我看到的,依然存在着不少的DBA还是以一种毫无章法的方式优化着Oracle的性能问题。记得一次在杭州的面试另我印象深刻,面试我的是一位DBA老者,他说为什么一个根据主键更新的update语句执行了很久,而同样的根据这个主键的查询语句却很快。我当时的回答是:首先需要知道update所在会话在等待什么,然后兴致冲冲的讲了什么是OWI、什么是响应时间模型,但是看得出来老者对于我的回答并不满意,就在我继续滔滔不绝的说着等待事件时,他打断了我,说:其实是因为锁导致的。我当时觉得有点尴尬,我问:你是如何定位到是锁导致的,他面露得意的说:根据他多年的经验通过猜测最后验证确实是锁导致的。可能在其他非ORACLE数据库里,经验的重要性是首屈一指的,但是在ORACLE里,经验虽然重要,但是又不重要,经验这个词,有猜测的成分在。ORACLE提供了大量的性能视图、诊断工具方便我们去做调优、做诊断,让优化......【阅读全文】

阅读(32) | 评论(0) | 转发(0)

发布时间:2018-05-04 10:02:19


11G以前ORACLE处理带有绑定变量的SQL存在一些问题,由于SQL在硬解析时使用了绑定变量窥探,产生出的执行计划不是对所有值都好,取决于第一次硬解析时窥探到的值,产生出的执行计划有一定的随机性,11GR1版本推出了Adaptive Cursor Sharing,后面简称ACS,用来解决绑定变量窥探带来的问题,提升SQL语句的执行性能。优化器在使用ACS技术后,已经可以为一个带有绑定变量的SQL产生出多个执行计划(如果必要的话)。这个特性对于有数据倾斜的列非常有用,而在11G之前,一个SQL在一个特定的优化器环境下,只可能有一个执行计划(在不同的优化器环境下,可能存在多个执行计划,如:first_rows,all_rows)。本章会将为你启开ACS的神秘面纱,为你揭示ACS的技术内幕,通过本章几小节的学习,带你深入了解ACS的方方面面。......【阅读全文】

阅读(1114) | 评论(0) | 转发(0)

发布时间:2018-05-02 22:08:19

ACS与PL/SQL前面的章节论述了ACS的特性,我们来看下ACS在PL/SQL里的工作情况,结果可能会令你非常失望。首先构造一个PL/SQL,里面使用到了我们在本章中创建的表T:SQL>var sql_id varchar2(255)SQL>alter system flush shared_pool;.........【阅读全文】

阅读(211) | 评论(0) | 转发(0)

发布时间:2018-05-01 23:01:38

一般情况下ACS必须结合直方图一起使用才能发挥作用,我们看看列上的数据有倾斜,但是却不收集直方图情况下,ACS的表现会怎么样,紧接着还会举出一个特例。......【阅读全文】

阅读(61) | 评论(0) | 转发(0)

发布时间:2018-04-29 12:40:28

我们上面提到了,在v$sql_cs_histogram视图中,如果此游标的3个桶中出现了两个桶中的count都有非0值,那么此后的解析都要窥探绑定变量的值计算谓词选择率,如果计算选择率不在现有的游标的选择率范围内,就会基于窥探到的绑定变量的值重新硬解析产生一个新的游标,当然这个新游标的执行计划可能与之前是一样的。我们还是来看一个例子就会非常明白这种机制了。......【阅读全文】

阅读(61) | 评论(0) | 转发(0)

发布时间:2018-04-28 17:59:03

性能神化,聊聊Exadata 的“七宗罪”前几天,ITPUB的总编老覃发布了一篇我的采访记录,我说到了我们新一代的QData T5比Exadata快,(点击这里查看),虽然有点标题党,但是我还是打算把这个事扩展一下,因为我发现很多人把Exadata神化了。性能,吾将上下而求索先说说性能的事。它很重要。人类在历史上有.........【阅读全文】

阅读(32) | 评论(0) | 转发(0)

发布时间:2018-04-26 10:40:47

11G以前ORACLE处理带有绑定变量的SQL存在一些问题,由于SQL在硬解析时使用了绑定变量窥探,产生出的执行计划不是对所有值都好,取决于第一次硬解析时窥探到的值,产生出的执行计划有一定的随机性,11GR1版本推出了Adaptive Cursor Sharing,后面简称ACS,用来解决绑定变量窥探带来的问题,提升SQL语句的执行性能。优化器在使用ACS技术后,已经可以为一个带有绑定变量的SQL产生出多个执行计划(如果必要的话)。这个特性对于有数据倾斜的列非常有用,而在11G之前,一个SQL在一个特定的优化器环境下,只可能有一个执行计划(在不同的优化器环境下,可能存在多个执行计划,如:first_rows,all_rows)。本章会将为你启开ACS的神秘面纱,为你揭示ACS的技术内幕,通过本章几小节的学习,带你深入了解ACS的方方面面。......【阅读全文】

阅读(842) | 评论(0) | 转发(0)

发布时间:2018-04-25 14:09:10

1. 脏读、不可重复读、幻读,是一种缺陷2. 隔离级别越高,能解决的“缺陷”越多,为什么不直接使用最高的事务隔离级别,那不就没有缺陷了?因为传统的以锁的方式去实现的隔离级别,级别越高,并发性越低。3. 脏读,解决 写不阻塞读 的问题,提高并发现,牺牲一致性。现在绝大多数的主流数据库,都是.........【阅读全文】

阅读(3213) | 评论(0) | 转发(0)

发布时间:2018-04-24 10:38:49

事务在进行提交的时候,对事务修改的,还在内存里的块做commit cleanout,其实主要就是设置ITL槽位里的commit scn,不会去清楚lb信息。ORACLE在进行commit cleanout期间,会获取相关buffer的buffer pin,而且是排他模式获取,这个pin直到lgwr把日志刷入到磁盘才释放,如果在此期间,有进程对相关的buffer进行select/update/insert就会造成buffer busy waits。因此如果你的系统log file sync指标很高,也可能会导致一定程度的buffer busy waits等待事件。......【阅读全文】

阅读(3157) | 评论(1) | 转发(0)

发布时间:2018-04-23 14:20:44

新的调优手段

10G之前,在事务做提交的时候,必须等待Lgwr刷日志完成才能继续做其它事,也就是说必须符合事务持久化的条件,可能学过其他数据库的同学学ORACLE的时候怪怪的,因为像MYSQL、MONGODB等数据库都支持对日志的异步刷新,我想之所以ORACLE这么晚才推出这一功能,主要还是使用ORACLE的客户都是金融、证券等行业巨多,这些行业对于数据的丢失是零容忍的,因此他们对此并无需求,直到10GR1,ORACLE公司才默默的推出了一个参数:commit_logging,这个参数可以实现让事务在提交时,并不同步刷新日志,而是在合适的时候去触发,这个参数可以有四种组合:......【阅读全文】

阅读(901) | 评论(0) | 转发(0)

发布时间:2018-04-22 23:33:32

作为通用的log file sync的诊断、调优方法,一般可以通过诊断系统的IO延迟为多大,CPU资源是否充足来判断哪里出现了问题。

......【阅读全文】

阅读(183) | 评论(0) | 转发(0)

发布时间:2018-04-20 10:18:04

曾经有一个网友咨询我,说在自己的系统中看到了log file sync等待事件,问我该如何“消灭”这个等待事件,解决log file sync争用的问题。之所以提出这样的问题,还是对log file sync的产生过程不清楚导致的,log file sync不是争用产生的等待事件,而是事务在提交过程中产生的一个正常等待事件,只能去优化,而不能被消灭。......【阅读全文】

阅读(91) | 评论(0) | 转发(0)

发布时间:2018-04-19 11:11:09

commit与log file sync是息息相关的,在每次事务提交时,commit会触发增进系统的SCN(通过函数kcmgas),然后产生一个commit的改变向量被拷贝进log buffer中,commit的改变向量一旦被拷贝到log buffer中,会触发通知Lgwr进程刷新日志。commit的改变向量是用来描述数据块(undo头块)的改变的,commit之所以会产生改变向量是由于commit本身修改了undo段头块的事务表,如:修改了事务表中此事务的提交状态,提交SCN等信息,这些修改信息组合成了一个commit的改变向量。10G之前commit的改变向量都是stand alone(独立的)的redo record,10G之后由于出现了私有redo,commit的改变向量可以跟事务的其他改变向量一起组成一个redo record。在10G版本,commit产生的stand alone的redo record有140个字节,如果是非stand alone的会有72字节。......【阅读全文】

阅读(122) | 评论(0) | 转发(0)

发布时间:2018-04-17 21:44:49

曾经有将近半年的时间,我都在跟log file sync打交道,每次查看系统压测期间的TOP 5等待事件,log file sync都稳稳的排在第一的位置,而且平均响应时间已经达到了10ms,随着一步步的优化,系统压测的TPS从刚开始时候的4000到6000到8000,TPS提升的过程也是对log file sync等待事件优化的过程。本章主要介绍log file sync相关的原理和优化技巧,希望本章的内容能或多或少的帮助到你。 ......【阅读全文】

阅读(122) | 评论(0) | 转发(0)

发布时间:2015-12-22 15:04:31

术语说明Table Queue,消息缓冲区,在并行操作中使用,用于PX进程之间的通信,或者PX进程与QC进程之间的通信,是内存中的一些page,每个消息缓冲区的大小由参数parallel_execution_message_size控制,11GR2版本默认为16K,之前的各个大版本这个值都不一样,详细请参考ORACLE官方文档。墙面时间、持续时间指的.........【阅读全文】

阅读(4563) | 评论(0) | 转发(0)

发布时间:2015-09-09 12:33:38

<div style="font-family:'Microsoft YaHei UI';font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">12C下进程产生不了跟踪文件的异常,记录一下,大家可以看看。</div><div style="font-family:'Microsoft YaHei UI';font-size:14px;line-height:21px;white-space:normal;wi.........【阅读全文】

阅读(4233) | 评论(1) | 转发(0)

发布时间:2015-09-06 13:06:09

<div style="font-family:'Microsoft YaHei UI';font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;"><span style="font-family:'\Microsoft YaHei UI\';">表大小&nbsp;<span style="line-height:1.5;">136 BLOCKS&nbsp;</span><span style="line-height:1.5;">17,408</span></s.........【阅读全文】

阅读(3821) | 评论(0) | 转发(0)

发布时间:2015-08-27 15:35:37

<div style="font-family:'Microsoft YaHei UI';font-size:14px;line-height:21px;white-space:normal;widows:auto;"><span style="font-family:Simsun;">ora.cssd 起不来一般是voting disk数量不够,或者voting disk盘头损坏<br /></span></div><div style="font-family:'Microsoft YaHei UI';font-size:14px;line-he.........【阅读全文】

阅读(4113) | 评论(0) | 转发(0)

发布时间:2015-08-13 17:00:10

<p style="margin-top:10px;margin-bottom:10px;color:#555555;font-family:Arial, Verdana, sans-serif;font-size:12px;line-height:18px;white-space:normal;background-color:#FFFFFF;"><span style="font-size:x-small;">简介<br />------------<br />从11G开始oracle提供了一个新功能Active Database Duplication .........【阅读全文】

阅读(4024) | 评论(0) | 转发(0)

发布时间:2015-08-13 16:51:03

<p class="MsoNormal" style="margin-top:10px;margin-bottom:10px;color:#555555;font-family:Arial, Verdana, sans-serif;font-size:12px;line-height:18px;white-space:normal;background-color:#FFFFFF;"><span style="font-family:宋体;">在这篇文章中,我们会对</span><span lang="EN-US">11gR2&nbsp;</span><span .........【阅读全文】

阅读(4321) | 评论(0) | 转发(0)

发布时间:2015-08-13 16:37:24

<p class="MsoNormal" style="margin-top:10px;margin-bottom:10px;color:#555555;font-family:Arial, Verdana, sans-serif;font-size:12px;line-height:18px;white-space:normal;background-color:#FFFFFF;"><span style="font-family:宋体;">在这篇文章里我们会对</span><span lang="EN-US">11gR2<br />GI&nbsp;</span.........【阅读全文】

阅读(4441) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册