Category Archives: 数据库

Consulting Firm Brainstorm

最近去上海参加公司组织的Consultant/Team Lead MileStone培训,收获最多的就是钱老师的这个session,根据session内容整理出来的这个思维导图,供参考。

Posted in 业界 | Tagged | Leave a comment

Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets

节选自MOS,仅供参考,MOS会不定期更新 先说说这几种patch的概念区别,下面是我根据自己几年的RAC研发经历总结的理解和认识,如有不对,欢迎指正。 oneoff patch fix 1 or 1+ bugs bundle patch fix lots of bugs PSU is lots of bugs fix and usually > bundle patch PSU is official release and have schedule CPU also have schedule, per release every … Continue reading

Posted in 数据库 | Tagged , | Leave a comment

Oracle Database 11gR2性能调整与优化

终于,在2013年的最后一天拿到了清华出版社寄来的这本耗费了我们三人一年多时间的新书–《Oracle Database 11gR2性能调整与优化》! 第一次抚着印着自己名字的新书,心情还是十分激动滴!过去500多天的日日夜夜,基本上所有的课余时间都花费在上面了。从初稿开始,审阅,翻译团队内部讨论,出版社初审,复审,终审,每个章节都凝结了无数个不眠之夜。 读懂一本英文原著不难,把它译出来并让人看的懂,看的明白就不是那么简单一回事了。通过翻译这本书,我更加深深的体会到了这一点。况且这还是一本技术专著,在翻译的过程中,本身我也是读者,也对很多内容是一些再学习的过程。所以书中难免有一些错漏,也欢迎大家通过这个反馈页面反馈给我们,谢谢! 在翻译的过程中,我得到了老板Steven的无数帮助和支持,很多技术的细节和文字都是他帮忙润色(其实他本人也是译者之一)。翻译团队的另外一位Steven也是一位技术专家,他来自Oracle Real World Performance团队。感谢两位团队成员的支持和帮助!清华出版社的王军编辑在本书的出版过程中也付出了辛勤的汗水和努力,我们的合作很愉快,谢谢! 本书的原作者Rich也是一位非常nice的人,虽然是世界级的大师,但是人完全没有架子。在上海OOW期间,与他的三天近距离接触更让我感受到了大师的风范。 许多朋友也在翻译过程中提供了他们的专业的并富有建设性的意见:我的大学同学高洪霞,同事小荷和Jarod,伟林,南哥,菲哥等等,恕我不能一一罗列他们的姓名…… 这一年多的时间里,还有在背后默默支持我的家庭。我的任劳任怨的妻子,七岁的儿子,还有我慈爱的父母,感谢你们!!没有你们的理解和支持,就不会有这本书的出版。  

Posted in 数据库 | Tagged , | Leave a comment

Exadata 备份恢复最佳实践

Exadata的备份恢复跟普通单机或者RAC数据库的备份恢复基本面是一样的,但是针对多节点还是有一些优化的最佳实践。今天就简单谈谈针对Exadata的备份和恢复。 为充分利用Exadata的I/O能力和多节点的优势,建议先在每个DB节点上分配2个通道进行测试。另外,为了让所有的DB节点都能参与到备份任务中,可以在每个节点建立一个failover类型的service。下面是一个实际的测试配置和脚本,仅供参考。 srvctl add service –d df –s bkup1 –r df1 –a df2 ,df3 ,df4 srvctl add service –d df –s bkup2 –r df2 –a df1 ,df3 ,df4 srvctl add service –d df –s bkup3 –r df3 –a df1 ,df2 … Continue reading

Posted in 数据库 | Tagged , | Leave a comment

Cache Fusion 剖析(一)

本系列文章翻译自网站:DataDisk.co.uk (原文链接) Cache Fusion 是RAC的核心,本系列文章意在帮助大家理解RAC的内部和运作机理,有些名词和概念在新版本的RAC中改变了名称或者很少提及,但是本质保持不变。 译文开始 我之前在GRD那一节提到过Cache Fusion, 这里我会介绍更多实现的细节。我也会给出一些我自己的RAC系统上的具体例子。 Cache Fusion尽可能使用最有效的通信方法以降低私有网络上的通信流量,现在管理RAC环境您已经不需要关心这么底层的细节了,当然了解这些有助于理解RAC的工作原理和调试问题。RAC看起来只有一个大的buffer但事实并非如此,每个节点上的buffer cache依然保持独立,数据块通过分布式锁和消息操作实现共享。RAC通过私有网络把数据块复制到别的实例,因为这比从磁盘读取要有效的多,没错,内存和网络协同工作比磁盘I/O更快。 数据块从一个实例的buffer cache传输到另外一个实例的buffer cache被称之为ping。正如较早前提到的那样,当一个实例需要一个数据块,它会发送请求到锁的master实例要求以希望的锁方式访问此块,这个过程叫做BAST。当实例收到BAST消息之后,它就会尽快的把持有的锁降级,但此时实例或许要将对应的数据块写回磁盘,这个操作叫做Disk ping或者hard ping。在最近的RAC版本中,Disk Ping已经被大大降低,然后总还是有少量的Disk Ping发生,因而更加依赖于实例间的数据块传输。在最新版本的RAC中,当实例收到BAST后,发出数据块或者把锁降级可能被延迟几十毫秒,这点额外的时间使得持有锁的实例可以完成当前活动的事务并妥善标记数据块的头。这样接受的实例就不用在接受/读取数据块之后立刻去检查事务的状态。检查事务状态是一个耗时的操作,因为可能需要访问(或者ping)相应的回滚段头和回滚段数据块。参数_gc_defer_time用来定义实例延迟降级锁的时长。 在GRD那一节我提到了PI(过去映像),简单来说他们就是存在于实例本地buffer cache中的数据块的副本。当一个实例需要发送一个刚刚修改过的数据块给别的实例时,它就会保留那个数据块的一个副本,标记为PI。PI一直被保留直到那个数据块被当前的所有者写回磁盘。当一个数据块被写回磁盘且此数据块有一个全局角色,也就是说此数据块有PI存在于其他实例的buffer cache。GCS就会通知持有这些PI的实例丢弃这些PI。当需要做检查点时,就会通知GCS要做写的动作,GCS负责找到最新的数据块映像并通知持有这些映像的实例执行数据块写操作。GCS然后通知所有全局资源的持有者他们可以释放包含PI副本数据块的缓存,从而允许释放全局资源。可以通过表X$BH查看过去映像的数据块。 select state, count(state) from X$BH group by state; Note: the state column with 8 is the past images. … Continue reading

Posted in 数据库 | Tagged , | Leave a comment

AIX PVID能不能用作ASM磁盘

好几次遇到这个问题,这次又遇到,就在这里总结一下,供大家参考。 在AIX系统中,给磁盘分配PVID以后,如果这些磁盘被用作Oracle ASM Diskgroup,那么当系统重启后可能导致ASM磁盘被破坏,数据丢失。导致这个问题的原因很简单: When the PVID is set to a disk in a volume group, the PVID is stored in two locations. In Physical disk header ( within first 4K )and in AIX’s system object database, called ODM ( … Continue reading

Posted in 数据库 | Tagged | Leave a comment

Oracle RDBMS Database patchset summary

Oracle 12c昨天终于GA了,随着今年10.2,明年11.1的支持周期告一段落,我们也将经迎来一个升级的高发期,方便找到合适的版本,转贴一个MOS note,全面介绍了Oracle RDBMS Database Patchset number:   <code> Patchset/PSU Patch Number Description 11.2.0.3.6 16056266 DATABASE PATCH SET UPDATE 11.2.0.3.6 (INCLUDES CPUAPR2013) 11.2.0.3.5 14727310 DATABASE PATCH SET UPDATE 11.2.0.3.5 (INCLUDES CPUJAN2013): 11.2.0.3.4 14275605 DATABASE PATCH SET UPDATE 11.2.0.3.4 (INCLUDES CPUOCT2012) … Continue reading

Posted in 数据库 | Leave a comment

SPA使用详解

这里的SPA不是说美容,而是Oracle的SQL性能优化分析器,SQL Performance Analyzer。说到SPA就不得不提Oracle关于SQL优化的几个常见的术语,SQL Tuning Advisor, SQL Tuning Set,SQL Performance Analyzer。 STS=SQL Tuning Set,SQL调优集,是一系列Oracle SQL的集合,这些SQL可以从AWR或者cursor cache中获得。可以使用DBMS_SQLTUNE包中SQL Tuning Set相关的函数和过程进行操作。 STA=SQL Tuning Advisor,SQL优化顾问,是针对SQL调优集或者SPA甚至单纯的SQL进行优化。可以使用DBMS_SQLTUNE包中SQL Tuning Advisor相关的函数和过程进行操作。 SPA=SQL Performance Analyzer,SQL性能分析器。针对数据库变更进行的性能分析。变更包括数据库升级,平台/版本/架构变更,参数调整,统计信息收集等等。SPA其实也是Oracle Real Application Testing的一个组件,另外一个组件就是前面介绍过的Database Replay。SPA的原理是通过变更前对收集的STS进行执行,获取基线数据,变更后再次进行执行,然后进行对比,从多个维度比如CPU时间,I/O,buffer get等生成详细的变更对比报告。 典型用法是捕捉STS,然后通过SPA生成对比报告,然后对变更后衰减的SQL调用STA进行优化。 下面是一个SPA的使用详解,其中的输入就是从AWR两个快照之间取的STS: –Drop STS: SQL> exec DBMS_SQLTUNE.DROP_SQLSET(sqlset_name => 'my_sts'); –Create … Continue reading

Posted in 数据库 | Tagged , | Leave a comment