写在前面的话
2016年7月,一个安静的午后,屋外夏日炎炎,连一向聒噪的知了都犯困噤了声。小憩的我,因为Oracle Certification Program发来的祝贺信打消了睡意。今日恰逢我的儿子,小YF,半岁,还有什么是比OCM证书更好的礼物呢?看着他睡着了还露出可爱的笑容,感觉屋里的空气都变得甜蜜起来,初为人父的我总希望能给他全部的爱和良好的引导,拿到一件OCM战袍,是自我提升的一步,更是实践我要成为更好的榜样的诺言。虽然,成为OCM并不是一件多么多么了不起的事情,但至少希望将来他可以如我这次一样,能有勇气接受挑战,可以为梦想和责任付出努力,也能在不断的探索后收获属于他的成功和快乐。
回想起来,决定报考OCM仿佛就在昨天。之所以能有这次体验OCM的机会并坚持到现在,要感谢爱人的极力“怂恿”与支持,还有双方父母的理解和默默付出,否则我想我是无论如何不可能完成这次挑战的。
初识Oracle
我是2006年开始接触Oracle,我并非计算机科班出身,属于管理学派别,大四跟着保研的导师做毕业设计,方向是专利信息检索和挖掘。毕设要做的就是一个类似爬虫的系统,主要是抓取采集USPTO的专利信息,并进行社会网络分析。采集的数据就需要存储起来,开始使用的是MySQL,主要是比较小巧,但道听途说有个Oracle数据库,很庞大、很厉害,于是乎就想试试。不试不知道,一试吓一跳。好家伙,确实很庞大,光安装文件就上G了。当时使用的还是9i的版本,找师兄拷贝了安装文件,就吭哧吭哧装起来,但当时基本都用的Windows操作系统,所以安装过程就像装普通应用软件一样,不像Linux下命令行安装那么繁琐。彼时由于机器配置不高,运行起来很卡,再开个Eclipse,简直了……
我对Oracle的最初印象总结起来就是:庞大,极为消耗资源。说实话,那时Oracle于我而言是一个封装好的黑盒子,就是来存储数据,什么体系结构,全然不知,全然不晓。
对Oracle的新认识
由于工作中需要使用Oracle,相比在学校,了解的内容会更多一些,但也有限,更多时候还是将Oracle看作存数的黑盒,所作的操作也仅限于增删改查。直到2013年,在一次参加ACOUG的线下活动时,secooler大师用一张PPT,2个小时讲解了Oralce的体系结构,严谨又不失生动,才让我第一次体会到原来Oracle背后的运行原理有这么丰富,同时不禁感叹自己之前是对Oracle有多么地不了解,虚度了……再加上同单位的Oracle大神dbsnake,开了关于基于Oracle的SQL优化的讲座,我听了之后一头雾水,但冥冥之中能感觉水平超乎寻常……无形之中,也不知具体是从何时开始,就对Oracle慢慢有了不一样的兴趣。也是从那时开始定期关注一些技术博客、MOS文章,同时也重新写起自己的技术博客,参加一些线上线下的Oracle活动,了解更多关于Oracle的事情。
决定挑战篇
其实2013年第一次听secooler宣讲的时候,他提到的一个案例就是OCM的一道考题:手工建库(当时不懂,啥玩意儿,库还能手工建……)。对于OCM,自己一直怀着一颗敬畏的心,当时压根没想过自己也会经历一次OCM的洗礼。
2015年,老婆怀孕了,预产期是2016年1月。在15年11月的时候,老婆单位有两位同事想要组团报OCM,于是乎老婆回家怂恿起我来,呼喊着,“再不考就没机会了,一起报名还可以优惠”之类的口号。相比于她的半认真半开玩笑,我反倒十分犹豫,一是老婆的预产期快到了,接下来小孩出生后正是用人的时候,二是虽然不十分了解OCM,但至少知道这个是个需要实际操作的考试,非常难,何况自己本职工作不是专职的DBA,所以经验和知识储备上要欠缺很多,三是日常的工作确实很忙,不知道自己有没有额外的精力准备。可是如果不报,自己还是有些不甘,感觉如果这次机会不挑战,可能很难再找到机会了。于是乎,还是在11月的某个周末,和擦航两位小伙伴一块听了半天课,用支付宝刷了一笔可观的培训费……中午为了纪念一下,一起在世界城的餐馆腐败了一顿……说实话,那时心中还是很忐忑,不确信自己可否坚持下来……
其实,之所以能鼓起勇气接受挑战,还有一个重要原因,就是想为我的小YF做一个榜样,为他拼搏下一件OCM战袍,让他知道,爸爸经过努力,是可以战胜看似不可能赢的困难。我想他今后也能懂得,学习、工作和生活的道理都是相通的,付出不一定有收获,但不付出一定没有收获。
准备篇
由于我的小YF在1月2日比预产期提前20多天就迫不及待地来找我们了,所以16年2月之前我基本没有精力和时间去听课。直到3月初,老婆打着为了我能好好准备考试的旗号,带着小YF回了老家,要等产假6月结束前再回来。我真是十分地不舍,一想到要和他们分开3个多月,心里就不是滋味,在送他们回老家返程的火车上,我就暗下决心,一定要把握这几个月的“自由时间”,努力得到真正实力的提升,也要尽力在她们回来之前搞定OCM。差不多是3月中旬左右,我正式进入了OCM的备战阶段。OCM的考试是上机考试,2天的时间考9个场景,也就是9门考试,在考试过程中,会有远在米国的印度工程师,实时监控,并有可能随时破坏你的考试环境,因此OCM考试考的不仅仅是对知识点的理解和实操能力,还要考核你临场查找问题处理问题的能力,因此想做Paper OCM是基本不可能的,需要的是在理解原理的基础上,熟练实操的能力。
OCM课程通常是按照场景来划分,授课时老师基本1天讲1个场景,这样周末2天就可以过2个场景。一般应考者都会选择在2~3个月的周末内循环听课。我第一遍听课的时候,确实有些不知所云,有些内容是以前王全安全没有接触过的,有些则是听过但理解不深的,一轮讲解过后,我都一度怀疑自己能不能一次通过考试……OCM最重要的除了了解理论体系外,就是实际操作。每个场景都有相应的练习题目,能否在规定的时间内完成练习可以说是通过考试的必要条件。尤记得第一次接触场景练习题,也曾经被题量和完成要求挫败了一次又一次……secooler大师要求考生每天0点发自己的练习成绩(主要是练习的完成时间)。开始做场景练习的时候,有些内容是真心不会,通常都是自己吭哧吭哧反复尝试反复验证,甚至有时都不一定能成功,被一个小问题折磨个1~2天是很正常的事情。这个阶段我感觉是OCM备考中最煎熬的,因为知识体系还不完善,练习经常会卡壳,身体和自信心都饱受考验。
关于练习设备:由于9个考试场景中有7个场景需要启动两台主机,而场景8和9由于要搭建RAC,再加上远程访问,更是需要启动三台主机,因此建议考生尽量使用SSD存储,内存越大越好,当然配置低一些也不是不行,只是快不快的问题。我一般上课还有简单场景的练习都是带着MBA,轻是一方面因素,最重要的是电池扛得住;而整体练习时则使用DELL,由于本机SSD不够,所以另外买了一块外接SSD移动硬盘,速度上还可以,但隐患就是一旦线松了,这块盘就废了(变成了只读盘),需要将其中的虚拟机拷贝出来,格式化,再拷贝回去再接着用。将近200G的虚拟机,单程拷贝需要将近1小时。而且不知什么原因,主机2用一段时间有可能出现启动时hang的情况,这时就需要重启机器,同时不能卸载硬盘,启动后就可以接着用了。摸出这条规律也是费了一些时间,还好慢慢习惯了。另外,为了模拟考场环境,闲鱼上搜了一个二手考试键盘,但事实证明没太大必要。
关于练习时间:由于工作比较忙,晚上有时会加班,所以我在刚开始备考的时候,基本是每天8、9点到家后一直练到凌晨1、2点,结果这么干了不到1个月,就有些扛不住了,上医院看了几次病……考虑到身体是革命的本钱,于是调整了策略,计划着每天10点睡觉,第二天5点起床,早睡早起,趁着早上这会功夫练习,这样坚持了几天,可是由于积累的问题实在太多,时间慢慢又不够用,就又变成了12点睡觉,5点多起床,晚睡早起……后来实在没法就中午吃完饭也趁着1小时的午休时间做练习。
大约在5月中旬,我过完了所有9个场景,课程大约听了3遍,按照secooler大师的建议,越早定下考试时间越好也考虑到老婆产假即将结束,6月初就会带着宝宝回京,于是乎预定了6月初的考试时间。但不知什么原因,可能是由于端午节临近,原定6月6、7日的考试被Oracle推迟到了6月14、15日,无法在宝贝儿子回来之前就拿下证书,也颇为遗憾。
实战篇
6月14号一早,不到8点,同考的4位兄弟就到了OU考场。secooler大师、郗总,还有全新老师都到场为我们打气助威,并做了仔细的考前叮嘱。当天考场一共6个人,我幸运地分到了倒数第二排,好处就是离窗户近,因为空调并没有传说中的那么凉。
第一天上午是考场景一,下午是场景二~四,5场考试,时间上很紧张,如果平时不能将练习速度提上来,考场上可能读题的时间就要占用大多半,很可能就不能完成所有要求。从小到大,中考、高考、硕士推免考试、工作面试、各种大大小小的考试,可谓是身经百战了,虽然不认为有什么不可战胜的考试,但场景一开始的前半个小时,依然感受到了强大的压力,甚至有些不知所措。还好,考试内容还算较为熟悉,此时只有自己能帮自己,稳住心情,慢慢调整,逐渐进入了状态,手工建库、创建表空间、GI、EM、冷备,一切都在掌握中。虽然中间也出了一些小插曲,EZCONNECT方式连接总是失败,后来检查发现是由于紧张导致连错了主机。还有一个未解决的问题,就是NFS做完后,v$dnfs_files视图中无记录,但创建显示成功了。每场考完之后,我们要出考场,等待考官刷下一场景的环境,几个兄弟就趁此机会交流一下,互相叮嘱一下下一场景要注意的问题,团队作战的优势不可小觑。
第二天上午是场景五和六,下午是七-九。场景五是所有场景中最重要的一个,可以说得场景五者得OCM,题量大、涉及面广是其特点,过程有惊无险,在SPA这题,之前选择了目标库11.2.0.1,没有一条SQL性能是下降的,删了任务重新选择11.1.0.7,才有了几条性能下降的SQL。场景六和七是有些关联的,场景六是安装GC,场景七是安装DG,如果之前练习的是使用GC安装DG,那么场景六就不能挂,我在做场景六的过程中,发现两台主机之间图形界面操作很慢,于是很纠结场景七是图形DG还是手工DG,中午犹豫了许久,最后为了安全起见,还是选择了手工建库,之前练习经常出错的duplicate等环节也格外小心,监听、dg_broker的配置,也是尽量放慢速度,避免漏了。场景八和九也是一个强关联,场景八是ASM,场景九是RAC,都还算顺利。小插曲就是之前的场景,心里还暗自庆幸印度人没有搞乱。到场景九了,装好了RAC,我记得用脚本测过连通性,但check end state却提示无法连接,ORA-01017,稍冒冷汗,反复尝试,回忆是不是设错了密码,alter user改了一次,可以连了,等了没两分钟,又不行了,晕,难道他们在逗我?接着改,结束前算是消停了,出考场前听见其他培训机构的一位兄弟正在和考官反映说RAC装好了之前还能访问,现在怎么不行了,不知道是不是同一个印度人在搞乱。
总结篇
两天的考试,比较紧张,规定不允许提前交卷,且真正做起来,可能不会提前太多时间完成,精力消耗很大,考前要注意储备体能。
整个OCM的备战过程,只有自己才清楚其中的艰辛,不仅是每天下班和周末的时间完全贡献出来,还要经受心理、身体上的多重考验。但收获也不少,在授课大师身上都学到了不少精髓,对Oracle又有了深入的认识。虽然可能其中的知识点,有些还未完全深入掌握,这些也是未来要改进的地方。OCM不是终点,我一直认为即使有了OCM认证,也不代表就是什么大牛了,毕竟OCM考察的还是Oracle的一些基本操作,并未涉及太深入的内容,例如,极端的故障恢复、SQL和数据库的深度调优,Internal的内容。这些都不是说经历了一次OCM,就没问题了,相反,学过之后,才进一步知道自己还有如此多的知识不清楚。遂时刻提醒自己,我还只是Oracle小白,经验和经历是需要积累的。勿忘初心,方得始终。
建议篇
总结一些自己在这个过程中认为值得注意的地方,不一定适用所有人,但希望会有一些借鉴意义。
1.准备OCM前,一定要问清楚自己是不是想清楚了,为什么要考OCM,因为往往在职的同学通常很忙,很有可能因为其他事就耽误了学习进程,进而消磨了斗志,拖个一年半载不是事儿,因此要问清楚自己的目标是什么,是否做好了准备。
2.准备过程中,练习是非常重要的,建议最好边做练习边听课,最好先做练习再听课,这样可以带着问题来听,效率更高,否则直接听课,很有可能吸收地较少、较慢。
3.设备若有条件,建议稍好一些,推荐16G内存、至少256建议512M的SSD硬盘,工欲善其事必先利其器,但这不是绝对,照样有兄弟机器配置低,照样做练习,所以不用苛求,因人而异。注意若是MBA或MBP,操作习惯上和Windows键盘有区别,考场上是Windows键盘。
4.是否有必要提前熟悉考场的鼠标和键盘?我觉得这不是最重要的,当然若有条件可以淘一些,而且现在大部分都是二手了,看个人的适应能力。
5.组团备战:微信群、QQ群,考前集中备战,这些必不可少,让你知道你不是一个人在战斗,互相鼓励,又可以查漏补缺,弥补自己的不足。
6.合理安排时间:平时工作都很忙,这就要自己安排好学习、训练的时间,早点起,稍晚些睡,抓住一切碎片时间,上下班路上可以看文档,整块时间过场景,这些都决定了备考的进度和效率。
7.注意身体,这点很重要,因为我们人生的目标绝不是仅仅一个OCM考试,这只是其中的一个历程,不要因为一时的冲动,影响了其他。
8.学习的过程中,做好总结,包括实际操作过程、不理解的原理知识,自己总结出来才是自己的财富,看别人的永远不能成为自己的知识,只有自己真正了解、实践过的内容才是最牢靠。
9.最重要的一点:坚持。因为备考过程至少要有几个月的时间,如果不熟悉可能时间更长,而且建议有持续性,不是这个月学,下个月休息,这就需要有比较强的意志力,每日0点发成绩,能不能坚持下来,这是对自己的考验,每个人会有自己的极限,会有自己的各种事情,如何克服困难,摒除杂念,取决于个人。
送给未来打算经历这个会让你难以忘怀的OCM过程的朋友们一句话,“梅花香自苦寒来,宝剑锋从磨砺出”,祝好运!