大家好,我是落落http://blog.csdn.net/robinson1988/ QQ692162374,其实我选择Oracle是一件很神奇的事情,但是现在回想起来又觉得是命中注定。我2006年就读于西南大学软件工程专业,我之所以选择软件工程是因受了电影***帝国的影响,依稀还记得某个工程师对着一个黑屏幕,敲击一串代码,然后控制了某个机器,当时觉得好酷。

  大一,学校开设VB.NET,全英文授课,还好哥英文很好,当时高中全年级前5名,对于全英文上课自然是无压力,大一上半期结束的时候,我还是会用VB.NET简单的编写一些小程序,比如说复杂功能的计算器之类的。大一下,学校开设了C专业课,因为有了VB.NET的底子,学习C也是相当轻松的,而且当时并没有涉及到一些复杂算法,这样大一我就稀里糊涂的过去了,大一下的暑假,我还勾引了一个安徽妹子,用现在网络流行语,可以说天然呆,自然萌,卡哇伊,她是外国语学院的,哥是计算机学院,简称妓院。至于怎么勾引妹子就不说了,有兴趣私聊我啊。

  到了大二,学校开设了C++这门课,他奶奶的,C++是面向对象的,VB.NET,C是面向过程的编程语言,因为一时思想没转换那么快,加上女朋友的关系,没怎么把心思放在学习上,所以C++这门课学得非常差,学了2个月的C++,我就只会写一个类,并且就只会 Hello World其他的什么继承,封装,多态,乱七八糟的完全是搞不懂,然后我发现,其实我不喜欢写代码。大二上期要结束的时候,系主任上了一门课,课程名字我忘了,系主任在讲课中偶然的提到了 ORACLE这个关键字,我当时就在想,ORACLE不是先知的意思吗 因为***帝国里面有个ORACLE(先知),所以我对ORACLE这个单词很有印象,然后系主任就说 ORACLE是数据库,当时我们还没开设数据库这门课程,所以对它还不是很了解,下课之后我就百度了一下ORACLE,结果他妈的,冒出一个广告,考OCM,考过之后年薪30W+,并且也知道了一个职位---DBA,网上都说DBA是越老越吃香,越老工资越高,程序员是吃青春饭,而且程序员最苦逼的是要写代码。当年才07年,30W确实是非常吸引人,于是就全方面的搜索ORACLE,关注ORACLE,加QQ群,上ORACLE论坛,大二上快要结束的时候,我去请教了系主任,问关于ORACLE的事情,系主任回答我,你去考ORACLE认证,考OCP。 请注意,现在别去考什么OCM了,都烂大街了。你想浪费钱随便你。考个OCP还可以的。

  大二上期结束的时候,女朋友在学校留校两周,学习选修课,我也自然是留了下来,这期间我每天到图书馆阅读ORACLE书籍,很郁闷,我看了1周ORACLE书,妈的上面讲什么啊,感觉是天书,比C++感觉都难。后来选了一本ORACLE10g宝典,这本书在以windows为基础讲解ORACLE,于是跟着书做实验,安装ORACLE,用SQLPLUS查询 SCOTT.EMP。 这期间因为没有其他课程干扰,还有书中内容比较简单,就很快上手了,回到家之后,依然阅读这本书,整个寒假,我把这本书看完了,当然了,当时只理解了其中20--30%内容。

  到了大二下,女朋友与我分手了,让我很郁闷的是她居然被人挖墙脚了,艹,现在想起来老子就郁闷,哥还是处男呢,真是郁闷当时为啥没把她骗到学校的桂园宾馆。失恋让哥意志消沉了一个星期,大二下我们又开设了JAVA,C#,数据结构与算法,以及一大堆的专业课。JAVA,C#这两本课非常坑爹,我根本就不喜欢,学校开了就得上,数据结构与算法更坑爹,太他妈难了。这个时候,我发现班上有个寝室,有个人自学JAVAEE,并且都自己写了个小系统了,有个人一直研究C与算法,自己编了个小病毒,另外一个在学C++,他妈的,这个寝室的人怎么这么厉害,都能写小病毒了,还能写小系统了,事实上也证明,他们确实厉害,大四他们有2个人去阿里巴巴了,有个人去金山了,可能是他们寝室气氛好吧,一个人学往往能带动一堆人学。我们寝室就不一样了,一个人天天下×××,另外一个人天天玩游戏,还有个人更奇葩,喜欢看小说,神马极品家丁啊,很纯很暧昧啊,艹,而且每天晚上自己偷偷在那里淫笑,我没什么不良嗜好,虽然我也喜欢看×××,但是就是不知道哪里下载,从来不玩游戏,我觉得玩游戏头痛,我只喜欢看电影。大学的时候,我可以这样说,所有的经典电影我全看过,无论鬼片,禁片,庸俗片,科幻片,动作片啥都看过,基本上唯一爱好就是看电影,学校的BT资源太丰富了,想看什么电影求各种,立马有人发。

  因为失恋的关系,加上我跟不上JAVA/C#,加上我确实不喜欢编程,加上那个OCM广告,以及我在大二的寒假我有了点ORACLE基础,我毅然决定选择ORACLE这条道路。这个期间,老师上课讲JAVA,我就学ORACLE,老师讲C#我也学ORACLE,当然了,数据结构与算法还是必须听的,其他无价值的课程我全都没学,只学ORACLE了。这样一直持续到大三下。在08年9月份,考了一个OCA,没看题库,直接过的OCA。本来想考OCP的,但是当时觉得自己是学生,就没考了,当然了也觉得OCP题目太简单了,有个证书顶毛用。大二到大三的一年内,我几乎阅读了市面上能买到的所有ORACLE书籍,图书馆能看到的所有ORACLE书籍,知识面广度已经够了,只是欠缺深度,但是对于一个大学生来说,我需要的是广度,而不是深度。

  大三下,上海HP重庆分公司来学校做校园招聘,当时班里成绩排名高的,全没面上,恰好我寝室的面试上了2个,另外还有一部分女生。面试用了5分钟做了个简短的英文对话,然后谈了一下ORACLE的体系结构,看了一下我的OCA证书,从他那微笑的眼神中,我就知道,我通过了面试。恰好班里的有些同学,拿奖学金的,成绩非常突出的反而没面试上,后来才知道,企业要的是有独立思维的人,有能力有魄力的人,成绩好的人恰好他们不愿意招,因为这种人没创造性思维,属于按部就班的,当然了,企业也需要进去之后能真正干活的人,

因为我已经有相当好的ORACLE基础,而企业也缺乏这方面的人才,所以正好就去了。

   大四的时候,进入HP实习了1年,最开始在微软产品与ORACLE产品部门,因为是实习生,无法进入真正的项目,我只能作为一个旁观者,在这期间我阅读了大量的ORACLE官方文档,之前学习看的是市面上的书籍,在这之后因为HP是外企的原因,他们提倡看英文文档,全英文环境办公,所以我也开始看ORACLE官方文档,这个期间,我对ORACLE非常多的知识又得以进一步深入,我的技术成长期就是在这段时间内。要想成为ORACLE大牛,你必须阅读ORACLE官方文档!!!而且要彻底的理解。

  大四即将毕业的时候,在HP内部我转到了BI/DW部门,这个部门专门做数据挖掘与数据仓库,BI用了Oracle的OBIEE/SAPBO报表,还有一些其他报表技术,这些SQL都是自动生成的,而且很多都是几百行,经常一个报表跑几十分钟甚至几个小时不出结果。在数据仓库方面,有大量的ETL跑得非常慢,经常几个小时甚至1天都跑不完。中国HP内部当时没人解决这些问题,很多人都是工作8年以上,有些还是OCM,都无法解决这些问题。这些问题最终交给了老外,老外也无法彻底解决,而且老外解决一个SQL起码耗时1周。我曾经试图请教当时HP内部的一个DBA,问他如何优化这个SQL,他直接给我说太难了,做不了,不久之后,他跳槽去IBM了。我当时真的很鄙视他。

   年轻人总是有着一颗争强好斗的心,因为当时有大量SQL跑得慢,并且全都是数据仓库的超大型SQL,都几百行的,而且很多是工具自动生成的,所以我有了环境学习SQL优化,之前我也是什么ORACLE技术都学,RMAN,BBED,DUMP,DSI....各种INTERNAL文档,但是学了之后发现没多大作用,遇到真正的CASE还是无法处理,所以我毅然决定,我专门研究SQL优化,研究ORACLE性能优化,其他技术我暂时放弃。于是我每天从上班到晚上1点钟,就只研究SQL优化,因为HP可以在家办公,我晚上研究晚了,第二天可以在家上班,这样我起床之后,没洗漱又开始研究SQL优化。我的SQL优化技术,终于从最开始完全找不到如何下手,到我能3天优化一个SQL,到之后1天优化一个,然后几个小时优化一个,到最终几乎能达到看一眼就能知道SQL性能瓶颈出现在哪里。我的SQL优化技术在HP慢慢就出名了,老外也慢慢知道中国有这么一个DBA,比他们本国的DBA优化SQL速度快N倍,这样我在HP毕业半年就破例涨了一次工资,翻了一番,年底又涨了2K,并且获得了60股的股票(当时40美元一股)。毕业第二年(也就是在HP第三年),我又想涨工资,老板给我说,我涨了2次了,而且对于刚毕业的小伙子来说,这个价格在重庆很不错了,他说很多工作几年的都没我工资高,那意思就很明显了,不给我涨呗。搞IT的人要明白一个事情,工资是跳槽跳出来滴。正好北京用友某个技术负责人寻找性能优化工程师,他和我接触了半年,一直邀请我去北京发展,在这之后,我决定离开我的家乡重庆,去北京用友,当时薪水也不高,年薪20W左右,对于一个才毕业1年多的人来说,20W已经相当高了,并且那边有安排住宿,有餐补,有交通补贴,通宵补贴,基本上一个月不怎么花钱。工作非常轻松,每天就优化SQL,然后研究一下中间件,以及JAVA虚拟机内存泄露,以及研究一些业务。SQL优化不用说了,基本上瞄一眼搞定,中间件优化,JAVA虚拟机因为之前没怎么接触过,所以时间放在了这边,同时也学习了业务。但是因为北京空气原因,环境太恶劣了,加上自己一个人在北京,觉得很孤独,就在重庆找了一个DBA工作,待遇比北京低点,但是也没低太多,就回重庆发展了。重庆这边的工作基本上也是做优化相关,在这家公司我进一步的接触到了SYBASE IQ,GREENPLUM,进一步的学习了EXADATA(2010年就开始接触了,HP最开始用第一代EXADATA),以及国产的GBASE,甚至HADOOP,还接触了各种存储,这个期间对我知识面又是更进一步的提升。在那个公司呆了大概1年之后我来到了现在的公司,主要负责数据库设计,数据库设计优化,SQL优化,系统架构优化,等等。我之所以离开之前的公司,是因为要写一些很无聊的技术架构文档,妈的哥最讨厌写文档。

  从2010年以来,本人一直专注于SQL优化,SQL改写,ORACLE系统优化,表设计优化,累计优化过超过10000个以上SQL,是的,你没看错,是一万个以上SQL。帮人优化SQL收过3000元一个,也收过50元一个,当然了更多的是免费的。同时也优化过接近60套系统,当然了系统的优化是一个整体项目,并不是我一个人完成的,但是我扮演了绝对不可替代的作用。曾经改造过某个系统的表设计,使得磁盘IO经常100%降低为60-70%,CPU从60降低到30--40%,该系统数据量每天产生接近5TB。

  大家如果有什么SQL需要优化的,有系统需要优化的,请直接发QQ邮件[email protected]完全免费,如果超级复杂,比如几百行的,我可以远程帮助,同样的免费。如果有SQL需要改写的,我会亲自指导你手把手改写。

  写到这里,我想告诉大家,学习技术一定要有恒心,要抱着必胜的心态去征服它,当然了,掌握好的学习方法同样重要,我之前是阅读了大量ORACLE书籍(绝大部分是英文),以及官方文档,有了知识广度,再根据工作需要,特立独行研究某一个领域,把某一项做精通之后,再研究其他技术,比如再去研究特殊恢复,或者研究NOSQL,或者研究架构等等。如果你一直什么都学,什么都看,最终的结果是,你什么都懂,但是不精通,那么你就是一个打杂的,你觉得自己和牛吧,与别人比差太远了,你觉得自己菜吧,但是ORACLE的玩意儿啥都玩过,就是不精通。我相信很多人都有这样的感觉,So,找个方向深入研究吧!!!

   对于ORACLE初学者,建议先增加ORACLE知识广度,再根据自己喜好,选个方向深入研究。祝各位生活愉快,工作愉快,事业有成。