做Oracle的和作茶叶蛋的没有本质的区别
2007-08-15 12:38:36 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

就这样,我清楚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都是很多年来一点一点实现和挖掘出来的,一边抽象、一边挖掘)。做好茶叶蛋也需要很多工夫细微观察和总结的,也可以发财的。不知道这个算不算提升。
大繁至简,很多不同的领域也许是有相通之处的,也许可以简单用几句话来表达出来。虽然我有些关于方法方面的观点没有说,看过这篇文章,也许每个都有自己的观点,每个人经历不同,感受和体会就不同。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
赞助商链接