由于这一年多来写了若干个一步一步学的系列文章,并记录成三思笔记,得到了很多朋友的支持和热心鼓励,也有不少oracle的初学者与我沟通,交流问题。在这个过程中,我发现很多初学者朋友在学习方法上的困惑,在不断的交流中,我也一直在出主意提建议,在连续对n位朋友说了n次类似的建议之后,我感觉这似乎是不少初学者朋友的大众化问题了(虽然我也还是一位oracle的初学者,一个刚刚得窥门径,正如饥似渴地汲取知识迫切希望提高水平的入门者),这也促使我决定写一篇文章,记录学习oracle这些时日来的一些体会,和我就学习oracle方式方法上的一些看法。

我完全能够理解那些初学者朋友遇到问题时的迫切心情,我想信多数人也都能够想像,毕竟这是我们都曾经走过的路,这里,我想说的有以下几点:

1、提问的方式
这是个老生长谈的问题了,pub里经常能够见到这种帖子“打开XXX或操作XX时报错了,该怎么办啊~”

我汗,大哥好歹您也要把问题描述清楚,描述不清楚,最起码要把错误号贴出来吧,啥都没有,让人生猜吗,猜你也得给个提示吧,操作系统,软硬件环境啥都不知道,无从猜起啊~~

关于这点呢,oracle管理区rollingpig发表的“ 提问的智慧 for Oracle[展开版] ”以及oracle开发版nyfor发表的“ Oracle 开发版提问建议 ”对此都有深入阐述,再详细不过,我就不费口舌了~


2、基础很重要

比如说,spfile中的初始化参数还搞不清楚如何修改,就匆忙去学着架设dataguard、rac,我想说:
第1,真的很有勇气;
第2,何必要给自己这么大的压力(如果遇到问题决定自己搞清楚的话),何苦给别人那么大的压力(如果遇到问题想也不想就问别人的话,注意,此处通常又与第1条相关联)。

在我的一步一步学DataGuard的章节中,我曾经写到:
如果你看过三思之前的几个笔记系列,那么这块想必已经非常熟悉,操作这个必然也不成问题,如果你还没有看过,建议你先回去看看,然后再回来操作必然也没有问题,如果你一定不准备看,没关系,只要你严格按照实践部分的步骤操作,我相信你一定也可以创建成功,操作应该也没有问题,不过如果这样你也觉着没有问题,那么我要告诉你,可能就这是最大的问题:不知道做过什么,不知道该做什么,不知道为什么要做,一旦需求稍变,你甚至什么都不敢做。

基础的重要性并不仅仅意味着你知道在做什么,更重要的是在关键时刻能够给你以启发:可以做什么,应该怎么做!

举个例子,我们经常碰到语句优化,或者被人问到优化的问题~~
优化是什么,归纳起来就两条:尽可能少读,尽可能少写!能一次读即可完成的就绝不让他读十次,能只写一个块的就绝不让它去写100个块。

比如我们通常遇到语句执行效率问题会先去看看执行计划,查看表是否创建索引,尝试创建索引能否提高执行速度等,就是基于尽可能少读方面的考虑。写也是一样,比如update tbl set a=0通常会写成update tbl set a=0 where nvl(a,1)!=0就是基于尽可能少写的考虑。XXXXX都不是目的,目的是为了满足我们前面所说的两个尽可能少,为了达到这一目的当然还可能采取其它方面的操作,这些操作我并不认为是技巧,相反,我认为这些操作正是源自于对基础的理解的融会贯通。

又比如你发现创建了索引效率依旧没有改善,难道就一定说明是索引创建的不正确吗,又或者创建了索引,速度得到了提高,就一定是最佳的方式了吗(此处省略5000句口水)~~~~

当然,这些都需要有相当的积累,绝非一日之功可达,我之所以提到这里,我所想强调的就是,正是由于你对基础的了解足够深入,你才有可能在遇到困难遇到问题时,知道从何处着手解决,知道如何灵活的处理。


3、从何学起呢

提到学习,就不得不说应该看哪些书,以及从哪里开始看,在这个方面,我觉着我还是有一些发言权,我刚刚拨开选择的迷雾,隐约感受到前方闪烁的光芒。

在此之前,我也曾走过很多的弯路,也曾在网上四处游荡,硬盘中保存了数G的各种文档,电子书,视频教程,也曾动员前东家买了大量oracle的相关书籍,但所得甚少。现在,已经基本返普归真,只看oracle的官方文档(当然我这个也是极端,只看官方文档呢,从内容的完整性上是足够的,但显然养分是不足的,因此官方文档为主,其它参考资料为辅应该是个不错的选择,只是这可能要花费更多的时间,时间啊时间,对我来说,现在最缺少的就是时间),我建议如果你尚未找到合适的教材,不妨也试试阅读oracle官方文档,还能省笔买书钱(毕竟不是所有企业都愿意给员工提供机会购买技术书籍),不要过于担心英文阅读的问题,刚读也许很困难,看多了自然就熟练了。

说到要从何处学起,管理版的yang版主曾数次建议我多看concept,对此我深以为然(如果你对自己的英文水平实在缺少自信,我建议你可以看看:黄河出版的"oracle 9i数据库系统培训教程",应该说翻译的质量很不错,基础篇可以视为中文版的concept),在此也转告给所有的初学者朋友,我认为不管你是准备做oracle管理或是oracle开发,concept都应该做为必看文档。之后,可以再看一看administrator guide,如果是定位于oracle开发,那么SQL reference则是必看文档。


我一直坚持一种观点:

第1,学习一定要有驱动力
在你对oracle有一个清晰认识之后,我建议可以就你目前工作所需的技术、可能应用到的特性、或者自己感兴趣的方向着手学习。不要盲目跟风,看到别人在搞什么自己也马上要跟过去;也不要妄自菲薄,看到别人钻研的很深入,就觉着自己没有了机会。我觉着,至少要在某个方面,通过不断的学习,持续的专注,达到一个相当的水准。这即是你立业的根本,也是信心的来源(像我,小生不才,但sql还是敢说精通的),以此为节点,再逐步迈向其它的特性。


第2,技术书籍一定不能漫无目地的看。
现在天下文章一大抄,连技术类书籍也没能逃脱厄运。学外语通常都有精读和泛读的学习方式,我觉着技术书籍也是这样。专注于某项特性的时候,官方文档应该做为精读的书籍,起码相关特性的guide要过一遍,其它辅助的书籍可以找一些看,或者是通过google,baidu搜索相关专题,多多了解,这可以算是一个泛读的过程。需要注意在泛读过程中千万不要被相关联的其它特性吸引去了注意力,做事情要专注,学习也是有过程的。

当你突破了专注的层面,对于oracle的体系结构有了相当深刻的理解,对于一些常规应用有了熟练的掌握,对于一些高级特性有了切身的尝试,我相信你的脑子里会自然的有股声音,是的,就是现在,i need more~~由线到面的连接已经完成,下面需要由面到体系。这将会是一个更加广阔的天地,你所需要关注的已经不再仅仅是oracle,你需要更多,比如OS,比如存储,比如网络,比如应用衔接等等。

当然,这只是我个人的见解,我选择了我觉着适合的方式,但不一定也适合你,欢迎你穿着我的鞋,走自己的路:)

另外,在pub的oracle管理版中有篇Fenng发表的文章: 看过的最有帮助的 Oracle 图书

如果你还没有拿定主意,不妨去看看这篇帖子。


最后,再给大家打打气,一口吃不成个胖子,但胖子都是一口一口吃出来的。大家一定要有坚定的信念,在当下这个物质高度发达,网络极其便利的时代,长成个胖子并不是件太困难的事情哟~

GOOD LUCK:)