本期我们邀请到了福建富士通公司在聘数据库专家梁敬彬(ID:wabjtam123),ITPUB版主,参与编写过《剑破冰山--ORACLE开发艺术》,《DBA手记2》等书籍,多年从事电信相关行业工作,负责系统架构设计、优化、培训等工作,有着丰富的数据库管理、设计、开发、培训经验和电信行业经验。今天的采访,十分精彩相信大家一定会喜欢。欢迎大家跟贴分享相关自己的观点和经验,随时与专家活动交流!
arron刘: 很高兴今天能对您进行一个采访,您在ITpub的好多精华帖我都看过了,感觉非常不错,其中《小余买鱼》《武朝迷案》等精彩的技术小说更让人耳目一新,拍案叫绝,给社区的同学带来了很大的启发。另外您参与编写的大作《剑破冰山-ORACLE开发艺术》也在业内有着极好的口碑,让很多业内人士受益匪浅,这里替大家向您说一声谢谢。下面咱们言归正传,首先还是您先见的介绍一些自己的职业生涯,您是怎么走上Oracle这条路的,以及您工作这么多年的经验总结。 wabjtam123: 我开始是从事过工程维护及开发相关工作。只是在偶尔的机会,解决了一些数据库相关的故障、优化了部分SQL,主动做了相关培训后,在同事之间慢慢有了一定的名声,发展到最后,只要一有数据相关问题,同事们都会条件反射般想到我。最后领导将我从开发维护调整成从事数据库相关的工作,从业余友情帮助被扶正为专业本质工作。最后被聘任为公司级数据库专家。这个经历说明了,只要你肯钻研、乐于助人,你的才能迟早要被人发现的,不需要刻意去表现什么。 关于我的工作经验总结,学习经历等其他的我不想多说,就说我的工作习惯吧,我的工作习惯用八个字来描述:记录、整理、总结、分享。至今我已经记录了自己工作中遇到的案例近千个,然后分门别类,分为SQL开发类、故障类、模型设计类、平台环境类、优化类这五大类。处理的过程中我会详细的记录日志、思路和具体问题等细节。这是第一阶段,记录阶段。接下来等问题基本解决了,就开始整理思路,简化输出解决问题的关键思路,这是第二阶段。然后总结并输出成文档,最后分享给大家,这是第三第四阶段。分享的方式有邮件转发总结文档、SVN共享、WIKI平台共享、甚至是ITPUB、书籍出版等其他公司外平台,其中《剑破冰山》和《DBA手记》中我的文章就是从案例的记录中得到的。分享还不仅限于文章的共享,我往往会根据近期部门和公司遇到的各类问题,找出大家的问题所在,有针对性的组织培训。进而提升大家的数据库水平。
arron刘: 问一个大家比较关心的问题。说说您觉得oracle最有意思的部分或者最困难的部分? wabjtam123: 如果只是具体的某个问题,处理起来并不难,比如如何建表空间,如何导入导出数据,如何生成AWR报表...等等。这些东西如果不会没关系,简单的搜索一下就好了。难的是什么呢?我认为主要在于综合应用、选择使用什么技术的场景。举个简单的例子,要求你在规定的时长内完成某库数据到导出,并导入到新的环境,你如何做。这里如何迁移其实太简单了,命令随便都搜索的到。不过现实中这里需要考虑的问题太多了。你需要考虑什么呢? 1. 旧库数据量有多大?30G、300G和3T,处理起来截然不同。 2. 旧库所在的主机有足够的空间存储导出文件吗,新库所在的主机和数据库有足够的空间存储导入的数据吗? 3. 有垃圾数据吗,真的需要导出那么多数据吗,你确认了没?比如回收站数据,比如旧的历史数据,比如临时处理的表。。。。 4. 你知道旧库最大的对象都有哪些吗,分别占用了当前数据库的百分比,他们是属于垃圾数据吗? 5. 当前机器的CPU等资源情况,导入目标机器的资源情况 。这是为了能有效的利用到并行度,你有合理利用资源的意识吗? 6. 导出数据DATA占用A机器资源,接下来导入数据,占用B机器资源,而A机器却闲着。 是否有更快的方法呢?有,比如旧库数据有400G,其中某些 大表合起来有200G,那这时候我们完全可以把数据分成两部分来导,这样先导出DATA变为DATA1,然后立即导入到新库,解下来导出DATA2,再导入新库,这样从原先的A,B机器的资源就被合理的利用了,完全迁移的时间就更短了。我为什么举这个例子呢?其实想说的就是,难的不是知识点,知识点的组合显而易见是更难的,而巧妙的利用特定场景完成知识点的组合应用,那才是最难的。从事数据库开发工作如此,其实各行各业也都是如此,我觉的是相通的,你们不觉的刚才我描述的6点,每一点都和ORACLE具体的知识没有关系,都和生活息息相关?
arron刘: 我们都知道Oracle数据库也分两块,数据库管理方向和开发方向,这也是在我们社区广泛争议的一个话题,您认为是开发方向的技术更加核心还是管理方向更加核心?对于初学者,从哪块入门比较好? wabjtam123: 其实我觉的如果要细分的话,应该增加出设计这个方向,而不仅仅是管理和开发。无论是管理还是开发,我觉的都只是数据库相关工作中的一个分类,不好说谁比谁更核心,管理方面承当的责任会更重一些,比如备份与恢复、故障定位与处理。关键生产环境出了问题,高层领导可能都会关注,压力很大。开发方面,更注重于SQL的编写、业务需求的理解,这些也是非常有挑战的,从思维难度来看,开发应该难于管理,但是管理需要承担的责任很大,需要经验更丰富,心理素质非常好,所以真不好说谁更核心。 此外我认为数据库设计在整个数据库应用分类方面,对人员的要求会更高一些。根据我们多年的经验,我打个比方吧:一个应届毕业生,一到两年,只要经常干活,而且肯干活,可以把数据库管理和开发做的比较好,但是想做好设计相关工作,却至少需要5年以上的时间,而且知识面要宽,只做过管理或者只做过开发,都是不够的,要都干过。
arron刘: 现在中国很多大型的集团公司包括垄断性行业用的都是Oracle的产品,Oracle可以说是这个行业的主流了,您能不能从客户的角度跟我们谈一下Oracle技术在未来的一个行业发展趋势? wabjtam123: ORACLE始终就是一个数据库软件,ORACLE公司也仅仅是一个公司而已。是软件就不可能完美到没有缺点,是公司就必须首先考虑生存,考虑生存最重要的就是首先要客户的感受,客户的感受其实通俗点说,就是希望方便好用,避免各种缺点。因此从这个非常普通的生活道理来分析,ORACLE未来的行业发展趋势就是使用越来越简化方便。让我们有更多的精力做有意义的事情。比如开发、设计等等。 如果一定要多说几句,就可以从早期版本说起,大家知道最早的ORACLE优化器是基于规则的,写SQL的时候a,b表写法的顺序决定了访问的顺序,好吧,一个开发人员,在理解业务需求和开发逻辑的同时,还需要了解a,b哪个大,哪个小?这不是做了分心了?而且这个分心有技术含量吗?不少人还把记这个无意义的规则当成了技术能力高低的体现,其实真是傻了,殊不知你在为ORACLE当时的无能在投入无谓的精力。如果再有一天a,b大小变化了,那你还需要改代码,把a,b的顺序调换?过几天a,b的大小又变化了,你再去修改代码?所以后来ORACLE用基于代价的方式解决了这个问题,开发人员不用关心表的大小和写法的顺序,专心干好你要干的活,ORACLE的优化器解决你的性能问题,这多好。 举例子是三天三夜举不完的,所以我不多说了,比如现在大家知道的ORACLE一体机Oracle Exadata,虽然很昂贵,但是软硬件一体结合,使得无论性能、备份、恢复、同步多方面都因为整合给大家提供了极大的方便,解放出更多的人手,时间,从而有更多的精力去做专业化的工作。 总结起来就是,一个卖软件的公司,想自己生存发展在竞争中脱颖而出,就必须要考虑让客户越来越好用,简化,让客户有精力做更有意义的事,如果因为软件的不成熟,让客户浪费了额外的时间,就必然被淘汰。因此ORACLE的未来趋势通俗的来说,就是使用越来越方便,简化,让客户投入更少的精力,做更多有意义的事情。
arron刘: 目前大学生就业成了一个严重的问题。好多学生为了就业选择了参加Oracle培训,对于Oracle认证价值您是怎么看的?就您所在的公司来看。这些证书是不是一个衡量的标准? wabjtam123: 我觉的ORACLE的认证对于一个新人还是有用的,面对刚毕业的或者毕业时间很短的求职者,我们主要不是去判断水平如何,而是去判断是否值得培养!但有证书,至少说明此人是积极向上的,曾经接受过专业培训的。所以看到新人获取过OCP甚至OCM证书,我们对此首先是有好感的。但是即使是OCM证书,也不能说明水平。我说过了,数据库工作最核心的是设计,而这两本证书意味什么呢?OCP意味着懂部分理论知识,而OCM意味着有一定的动手能力去完成一些软件的安装和部署,真的是仅此而已!大家也见过大学生就获取过OCM的情况,并不少见。但是在于一个大的专业公司,应届生从事模型设计、需求分析、建模调优等,这是完全不可能的。我说过了,至少需要锻炼五年以上,需要在数据库管理、开发方面都从事过,并且深刻理解业务,这三个条件缺一不可,这远不是OCP、OCM证书所能覆盖的。
arron刘: 目前市面上各类数据库层出不穷,NOSQL大行起道,还有列式数据库、内存数据库等等,可谓五花八门。你觉的ORACLE等传统数据库是否会被取代,市场份额越来越小呢?Oracle在中国的用户及合作伙伴已经有一万多家,那么未来人才市场对于Oracle 人才需求会是一个什么样的局面,能不能请您做个预测。 wabjtam123: 现在有不少误解关于传统数据库的,认为啥NOSQL、列式数据库大行其道,传统数据库会被替代。于是还有人说学ORACLE等没用,OUT了,其实这是错误的。传统数据库,从当前来分析,是不可能被替代的。前面我说过了,综合应用、选择使用什么技术的场景才是最难的,因此我们要保持清醒冷静的头脑,明白这些五花八门的各类数据库各自适用的场景。 那我们首先描述一下特定的场景吧,比如微博,有人在乎谁丢了一条评论吗?比如GOOGLE搜索,你怎么知道你返回的100万条搜索记录不符合你的要求,应该是100万零1条。你查不到你要的资料你也不会随便去谩骂吧GOOGLE吗?再有淘宝查询同类产品,展现几个其实都无所谓,对我们来说,就是参考而已。原来此类的查询都有一个共同的特点,就是不关键!甚至不需要考虑事务性、安全性、一致性、及时性。。。这就是NOSQL他们应用的场景,大多都是互联网应用。但是在计费系统、CRM系统、银行核心业务系统、证券交易系统上绝无适用的场景。未来人才市场对于Oracle 人才需求会是一个什么样的局面? 这个我换个角度从ORACLE人才分类来回答,我前面说可分为的开发、管理、设计三类。从人员分布来看,开发应该是需求最大的,几乎所有的开发人员都要会写SQL和PL/SQL代码。而管理类似于系统集成工作,需要的人相对就比较少,而设计方面的人要求更高,处于IT建设最上层的阶段,人员就更少了。所以如果为了就业方便,了解SQL和PLSQL还是最实用的。你想从事管理和设计,或许暂时没有这个机会给你。
arron刘: 感谢梁敬彬的耐心作答和分享!谢谢他给我们带来这么宝贵的经验分享以及对大学毕业生的一些指导。相信这些对于他们是非常有用的。最后欢迎大家回帖留言,发表自己的观点或相关问题。
嘉宾介绍:
梁敬彬:社区ID: wabjtam123 ITPUB版主,参与编写过《剑破冰山--ORACLE开发艺术》,《DBA手记2》等书籍,多年从事电信相关行业工作,负责系统架构设计、优化、培训等工作,有着丰富的数据库管理、设计、开发、培训经验和电信行业经验。 |