免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1641 | 回复: 0
打印 上一主题 下一主题

oracle [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-14 07:41 |只看该作者 |倒序浏览
开始使用Oracle数据库,主要是做报表视图、写PL/SQL程序、数据库建模,知道了很多小技巧,如表按什么顺序连接,什么时候要用索引,什么不应该用索引,怎样避免死锁。印象中书看的最多的就是机械工业出版社那套Oracle8丛书中的Oracle初学者指南,PL/SQL程序设计指南,PL/SQL高级程序设计指南。也隐隐约约知道Oracle中有个SGA,有个叫做池子的东西。并在Linux上自豪的装上了Oracle 815,不到一年的时间很快过去了。
第二年开始迷恋上了Oracle的结构,SGA,知道了什么叫做DB Buffer,什么叫做Log Buffer,如何分配,很笼统的概念:“DB Buffer一般要给SGA的80%左右”,知道了高速缓存率等等多概念,还知道了控制文件很重要,有人问我假如控制文件全部丢失了,只有数据文件和日志文件,能不能恢复,我不是很确定的说不能吧,结果对方很轻蔑地对待自己,话语至今还记忆尤新。
于是在那个夏天,我知道了scn,大致明白了备份与恢复的原理,知道了如何创建控制文件,什么时候用resetlogs,什么时候用noresetlogs,但是为什么不知道。接着知道了DBWR,LGWR,CPKT等等的作用,还看了"oracle8i internal services for waits, latches, locks"那本书,明白latch,lock,semphore的各种类型和确切用途。知道了free list,pct free,大致明白了Db buffer、Log Buffer,Large Pool,Share Pool这些东西该怎么去配置,更知道了用Unix里面的top,vmstat,sar来监控性能,印象最深的就是ITPUB上面当时的几位高手知道lular2000对泰国一个关于智能网的数据库如何配置。并Ixora网站的文章制作成电子书在ITPUB上。
也开始看高性能SQL调整内幕,知道了Neeted loops,Merge join,Hash join,也知道了Unique scan,fast full scan,index skip scan,full scan这些名词和作用,也知道了如何根据执行计划调整SQL语句,知道了如何跟踪调优。并带着两个同事负责这边系统包括Oracle在内的程序改进和维护工作。于是开始以为过去很苯,什么都不懂。现在是高手了,一定要做一个Oracle优化软件。很多书我都扔掉了,当时买的Oracle性能优化内幕(Oracle Performance 101)现在还保留在身边。
结果下一年春天的时候,发现写一个Oracle优化软件的难度很大,根本做不来。只是隐隐约约的构想整个Oracle的运行情况,是懂非懂。但是觉得对搞应用来讲足够了。
其实我也一直关注Java和OO的东西。接下来因为工作上的原因,很少关注Oracle,即使关注也是看文章和思索层次(唯一有点相关的是关注到了主机和存储方面的东西,还琢磨过hp和IBM的宣传手册)。全心做Java和OO的东西。有一天明白了事务的acid属性,明白了分布式事务,事务是怎么实现的,才算明白为什么Oracle的每一部分为什么要那样设计。从此以后我觉得豁然开朗,提升了一个档次,知道了结构上Oracle为什么会这样设计,直到现在的RAC,各种备份方法。看了JBoss的Marc Fleury的blue自传,他说"cache is the king",尽管以前都说缓存可以提高性能,Marc的话才让我明白了为什么,知道了CPU,CPU cache,Memory,Disk,Network之间的关系,每一层何尝不是下一层的缓存。就这样,我清楚DBWR,LGWR,CPKT,semphare,Latch,DB BUFFER、Log Buffer、log file、data file、Control file、lock是如何精确协作的,block里面是什么结构,事务如何实现,各种等待事件什么会发生。
结果直到去年8月的一天,突然要和公司的同事一起去为一家单位做异地容灾方案,各种原理我都清楚,只是用的oracle 8.0.5和HP-UX 11i的组合,硬件是吓人的hp superdome。oracle 8.0.5版本我没有用过,虽然整个过程很顺利,我还以为oracle 8.0.5还要用x window来图形安装,像个笑话。开始苦苦实践,身经百战才能够所想披靡。
接着我像很多人一样,分析了Oracle物理实现方面的问题,特别是control file,data file,log file,各种文件的结构和关系,加上原来的不少经验,备份与恢复方面的各个概念和内容、为什么要这样做,很easy。这是我的又一次提升。
更接着我从Oracle体会到了Hash算法、B+树、List的作用和实现,如何实现高速查找的,虽然书本上早就看过。这个时候我也明白了Oracle是如何解析和执行SQL语句的,于是虽然我还看执行计划,还看执行计划所化的IO代价和CPU代价,但是和过去的感觉已经不可同日而语了,这又是一次提升。
又是在去年那段时间,我看了scaling oracle 8i这本书,明白了硬件结构上很多东西,加上这两天明白了Linux内核是如何实现的,特别是如何调度进程、如何实现semphare,latch,lock、如何测量CPU和IO性能。以前所不能够理解的东西,如java和weblogic调优方面,一下子明白了很多,我觉得这是我从事IT行业技术上的最大提升。
这段时间我一直在想,Oracle就像一个公司(说国家这句话可能有点大了)一样,你要规划公司的运作和发展方向,你要预防不可预料的事情发生,你要评估公司的运作效率,改进公司的工作流程和方法。持续改进,才是适应形势的发展。但是你永远也不可作最精确的评估公司的运行效率(也没有意义),假如公司被整理井井有条,做什么事都是严格按照所谓科学的东西来做,那么公司很可能就会出问题,有时候出点乱子才是活力的象征。Oracle何尝不是如此。运作一件事情其实也是工程,很多东西需要平衡和折衷。
更有一个滑稽的念头冒了出来,做Oracle的,和作茶叶蛋的,其实也没有本质的区别。只不过做Oracle的门槛高了一点而已。都是在前人和自己经验的基础上,进行不断升华和总结(参考Oracle公司发展史,今天我们以为很基本的功能如事务、表锁定、行锁定直到ops,rac,data  guard都是很多年来一点一点实现和挖掘出来的,一边抽象、一边挖掘)。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/44757/showart_477952.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP