本期采访嘉宾我们邀请了专业的oracle DBA专家李轶楠先生,与大家一起分享了自己的职场经历,DBA创业经验以及新数据库技术对DBA前景的冲击和影响方面都是做了详细的阐述,欢迎大家在此跟贴与ora-600一起探讨和分享相关的经验。
Hwayw:
您先自我介绍一下?分享以下您的职业经历?您目前的从事的工作?
ORA-600:
大家好,我是李轶楠,PUB上的id是ora-600,是ITPUB Oracle入门认证版的斑竹。
我的职业经历应该说与大部分人都不同,我真正在公司里任职的时间并不长,尤其是从事DBA工作的任职时间仅仅不到一年,而更多的时间,我是处于自由职业和公司创业的过程中,到目前为止,我仍然在创业,不过不再是一个人在奋斗,而是与一群志趣相投的同伴们共同成长与进步。
我的职业曾经是高级培训讲师,到现在还挂着这个头衔,同时也肩负着技术支持的工作。
我的工作经历,简单来讲,5年开发,5年漂泊,5年创业。97年毕业开始工作,从西安到北京换了4家公司,从Delphi、PB、Lotus到Form、Report,开发了n个项目。在这个过程中,2000年底,在一个项目中刚好参加了一次Oracle培训,应该说我职业的转折点,就是从那一次开始的。有时候,遇到一个好的老师,对人生的意义重大。就在那次培训的过程中,那位老师给我打开了一扇从未开启的窗,让我突然发现,我做了3、4年开发所用到的那个Oracle数据库,原来里面还有这么多秘密可以探寻,兴趣,于是一发不可收拾。当然,很现实的另一个方面也促使或者叫诱惑着我向这方面发展,通过与老师的交流,我知道了原来这世界上除了微软的证书之外,还有OCP证书,而且在2000年的时候,据说OCP在国内不超过500人,可见其价值,于是乎,有了兴趣加上诱惑,我顺理成章的开始向OCP的目标迈进了。2001年6月-2001年10月期间,我换了工作,另一个开发公司,但吸引我的不是薪水,不是开发工作,而是这家公司除了开发部门外,还有一个OCP培训部,这非常利于我的转行,于是我去了,用了5个月,将Oracle原厂的11本8i全英文教材从头到尾翻看了4遍,力图吃透里面的每一个单词、短语。与此同时,ITPUB也组建了,我与众多从Smilling搬到ITPUB的朋友们相互讨论交流着各种学习心得,努力提高自己对Oracle知识的理解和掌握,最终我考完了OCP,而且通过这次考试,我打下了非常扎实的Oracle基础,也为我日后的职业生涯作了铺垫。感谢那时候共同奋战的Puber们,我们一起在进步。
全面转行进入Oracle领域是在2002年,在这一年,我开始接触Oracle培训领域,同时兼DBA的工作,开发的事情也在负责,是否转行仍然很犹豫。这一年对我而言,既是一个不幸的年头,也是一个幸运的年头,不幸的是,02年底我被公司辞退了,而幸运的也是我被辞退了,因为正是此事促使我下定决心开始专心做Oracle方面的工作,而培训就是快速切入点。03年之后的这几年是快速发展的过程,随着培训业务的开展,不断的提高自身的能力,积累自己的知名度,而在这个过程中,ITPUB给了我一个大舞台。在这里我认识了很多的朋友,与他们共同探讨一些技术问题,交流一些心得体会,在技术能力提高的同时,也弥补了我去现场机会较少的短板,通过交流与案例讨论,极大提高了我技术服务的能力。随着我的培训业务的广泛开展和知名度的不断提高,终于在一次跟tigerfish交流之后,决定与PUB共同作培训以回馈PUB带给我的帮助,于是从04年开始,我不断为ITPUB的培训课程进行讲解,从北京到上海再到广州,每年超过7、8次培训课程,一直到2011年,这期间我不再有任何的五一、十一,只要有三天以上的假期,基本上都是在培训中度过。在这个过程中,结识了很多朋友,也从他们那里学习了很多运维、开发中的经验,为我的成长和进步积累了很多素材。
随着经验和知名度的积累,越来越多的客户知道了我,也认可了我,所以当他们有技术问题的时候,他们会想起我,会咨询我,逐渐的,他们开始将技术服务打包交给我,由我帮他们进行维护、调整。从05年底开始,走过1年多的培训生涯,我开始运作自己的创业公司,为企业客户提供培训和技术服务,那段时间,时间过的非常快,因为每天都在忙碌中度过,解答问题、业务咨询、故障处理、性能优化、健康检查、企业培训。。。几乎每个月工作的时间都超过了22天,最忙碌的时节甚至每月工作27天,而仅剩的那几天也都在路上飞来飞去。这段时间是我快速成长的时间,即收获了不菲的收入,也收获了更多的名气和结识更多的朋友,慢慢的,随着业务的饱满和忙碌,我和一些朋友开始谈论共同创业的话题。
2009年,随着一些想法的逐渐成熟,我的一些朋友开始逐渐从公司中走出来,开始独立创业,在这个过程中,我们也在不断的交流着创业的经验和体会,经过近一年的沟通,我们发现独立创业的种种局限和弊端越来越明显,而随着运维需求的增加和客户服务意识的增强,客户对于专业服务团队在数据库服务领域的需求越来越迫切,因此,我和朋友们决定一起合作,共同把我们的服务做大作强,同时也希望能够通过这种强强联手,来把我们的一些服务理念推送给客户,希望为客户带来一些不一样的服务感受,真正从专业服务中得到一些获益,而不是简单的提供一些廉价的维护。因此,在2010年,我加入了恩墨团队,并且在大家的共同努力下,将恩墨团队整合放大,在2011年成立了现在的云和恩墨公司。在这里,我们有众多国内知名的技术高手,也希望能用我们的专业和态度为客户提供更具品质和价值的服务。
现在在公司中,我仍然负责着培训工作,同时也肩负着与客户进行技术交流的工作,我希望通过我的讲解,让越来越多的客户对服务有不一样的感受和期待,让技术服务越来越精细化、专业化、前瞻化,也希望能通过我们的推广,让我们的DBA成为更有价值的DBA,而不再是平常默默无闻的小卒子,只在出现问题时才会出现的救火队。
Hwayw:
根据您多年的oracle开发经验,分享一些在大型oracle开发项目中,前期需要准备什么?中期需要注意什么?后期需要做什么维护?
ORA-600:
首先说一下,其实我没有多年的开发经验,我做开发,也就五年,之后就全面转行了,呵呵。
随着企业信息化的发展,越来越多的大型行业、企业用户对信息化的要求变得更高,他们不再局限于能做什么,而更强调能做到什么、能得到什么,尤其是一些行业用户,经过多年的信息化发展,分散式管理已经不再适合他们的需求,他们开始强调集中管理、综合应用,所以越来越多的项目开始变得大型化、规模化、集中化,在这样的需求下,如何保障这种应用系统的稳定、高效、可靠的运行,就变得非常重要。
在大型应用系统中,由于业务量、数据量的巨大,很容易造成前期规划不当,中期维护复杂,后期调整难度大的情况,因此,必须在前期就要尽可能考虑全面。由于我是从开发转到数据库服务、培训,因此有些观点会有相当的局限性,下面提到的仅仅是从我个人的感受中提炼的所想,希望对大家有一定的启发,不足之处也希望大家谅解。
在我们的技术团队成立之初,就一直带着一个理念,希望把DBA的工作从简单的后台维护和救火,转换到前期的规划设计上,DBA在一个项目的生命期中应该是无处不在的,一个有丰富经验,尤其是有过项目开发经验的DBA,对于项目生命期的各个环节对性能、稳定性的影响力感受颇深,因此,不论项目的前期、中期还是后期,DBA都应该积极参与,尽其能力为项目的性能提供无穷尽的理念、方法、思路。
在项目的前期,主要是需求分析、架构设计、应用设计等工作,在这个过程中,DBA都可以参与或者提供建议,在需求分析时,DBA可以提供业务、技术实现手段的评判,对一些需求进行适度的限制以保障优化方法的实现;在架构规划时,可以根据用户对高可用、容灾、健壮性、性能等多方面的要求,提供Rac、HA、DG、GG、使用版本、硬件资源需求等多方面的数据库架构规划;在应用设计阶段,对应用的需求评估,确定使用前台语言实现还是使用PLSQL实现,并设计E-R模型,构建应用的数据模型。在项目前期更多工作集中在规划设计上,虽然这时并不需要DBA去做什么,但DBA的经验对于前期设计的准确性与完整性有很大的帮助。
项目的中期主要是代码开发、数据库部署、性能测试等工作,在代码开发阶段,DBA将会辅助开发人员制定代码规范和数据规范,并对高效SQL进行评估,确保在大数据需求下高质量的SQL代码;同时通过对需求的了解和代码的掌握,确定了应用对数据库的资源需求特性和资源消耗量,在此基础上,更准确地规划存储、网络、主机、中间件等资源,并且配合理配置数据库,为不同需求构建不同类型的表,并且在相应字段上构建索引以满足各种查询需求;而对于性能测试阶段,DBA则需要做更细节的监控和精细分析工作,通过各种测试数据的分析,确定目前系统仍然存在的潜在风险,从稳定、可靠、高效等多方位确定调整方案,确保系统上线后的平稳运行。
项目的后期主要就是运维,这就是大家认为的传统意义上DBA应该去做的事情,日常运维中最主要的就是监控和预警,通过对系统的理解,DBA可以设定一些监控点和阀值,通过这些方法将系统潜在的隐患提前发现和排除,以保证系统的正常运行。。。可以说,DBA的参与对整个系统的性能和稳定性都有着非常重大的意义,所以别再把DBA当作路上的石子,其实他是大厦的脊梁。
Hwayw:
信息化的飞速的发展对数据库的提出了更多的要求,很多人现在都在讨论要做数据库性能优化,数据库的性能优化主要需要从哪些方面来实施?一般多大的数据量才需要考虑数据库型性能优化?是否在数据库设计之初就需要考虑性能优化呢?
ORA-600:
说到性能问题绝不能简单的说是数据库性能,而应该考虑的是整体应用性能,因此,需要优化的地方涉及应用系统的各个环节,就像问题2所说,不论是前期的规划设计,还是中期的运维调整,还是后期的SQL分析,都是性能的一部分,所以在项目整个生命期内,从需求分析、架构设计、应用设计、数据库设计、存储规划、网络规划、中间件规划到代码开发、数据库部署等各个环节,都需要考虑性能的影响。
性能问题与数据量有关,但并没有绝对值,影响性能的因素很多,数据量、并发量、主机配置、网络环境、应用架构、代码质量等等都会对性能带来很大影响。我所见过的最小的一个数据库,最大的单表数据量仅有几M,也就是10万条数据左右,整个数据库不到200M的数据,并发会话只有100左右,但最慢的查询一次就要执行十几分钟,所以很难简单的说数据量多大就要考虑性能优化。
既然影响性能的因素很多,而其中不少因素又是在系统上线后很难调整的,所以前期规划设计的优化肯定很重要。如果前期不做好,即使系统上线运行了,在一段时间之后,各种性能问题也会随后出现,而到了那个时候,就会发现很多优化方法都受到了种种限制,以至于无法顺利实施,这就是前期没有考虑性能问题所带来的隐患。因此,前期规划设计绝对不能忽视,必须提前考虑各种设计方案在性能上的影响,综合平衡多方面的需求。
Hwayw:
很多人认为:现在oracle的技术越来越成熟,功能也越来越完备,这样对于oracle的开发会变的更加的简单,不需要多高的技术水平就可以用oracle完成数据库的建设,您是否认同这种观点?为什么?
ORA-600:
我并不同意这种观点。不要把希望寄托在别人身上。这个观点只有在系统负载量不大、业务不繁忙的时候才能使用,所有大型系统必须摒弃这个观点。
现在很多数据库都在通过各种技术手段使开发简单化、实施傻瓜化,这是技术发展的一个必然阶段,任何用户都不希望使用的是一个自己搞不定的软件,但是傻瓜式的构建只适合傻瓜式(或者叫通用性)的需求,这种开发和实施的自动化、简单化,实际上是数据库软件智能化的一个发展过程,但这种智能化到目前为止还非常弱,不论是自动诊断还是自动调整,都有很大的局限性和延迟性,所以如果大型系统完全依赖于自动管理与调整,将会有非常多的问题发生。同时目前我们所用到的自动化与智能化仅限于数据库内,而一套应用系统需要考虑健壮性、可用性、高效性、安全性等各个方面,这些方面是否能满足需求,并不仅仅是通过数据库的自动化就能解决的,需要考虑系统、架构、需求、代码、存储、网络等多个环节,因此,绝对不要认为数据库技术发展了,我们就可以完全丢掉系统规划设计、代码优化、存储调整等一系列技术需求。数据库技术发展,仅仅意味着Oracle希望能减轻我们的工作,并且从SQL级进行一些自动调整,并不能根本上改变系统优化的模式。
Hwayw:
随着信息量的增多,商务智能和数据挖掘越来越重视,现在很多人认为:oracle已经不如一些新技术如hadoop,nosql等能满足企业的业务需求,这些都会对现在的oracle DBA的工作带来冲击?具体体现在哪些方面?
ORA-600:
技术在不断的发展,我们有时候也会感叹,Oracle这种传统的数据库,终将会逐渐衰退,也许是五年,也许是十年。当然,并不是说将来不会再有传统数据库了,而是说数据库的领域将会逐渐细分,大型数据库、小型数据库、巨型数据库,结构化数据库、非结构化数据库,图像数据库、文件数据库、媒体数据库。。。现在我们一律放在Oracle数据库中,通过不同的应用满足不同的需求,但随着数据和需求的不断变化,技术的推进终将会将每种需求满足到极致,到了那个时候,传统数据库可能更多的被使用在中小型数据量的通用领域,而在一些专用领域将是百家争鸣、各展所长的各种新技术广泛使用。
DBA作为核心数据的管理人员,必须能够掌握相关的技术细节,因此技能的提高是必须的,新技术的使用将会迫使我们不断学习新的知识,不断掌握这些新技能。当然,并不是说将来DBA会很辛苦,要学习这么多新技术,因为任何一种技术,都有它使用的领域,大部分DBA都只在他自己的数据库领域中工作,很少跨多种数据库领域,就像现在绝大多数OracleDBA并不会管理SQL一样,所以说有什么冲击有点夸张,我觉得更多的是要去了解那些新技术,从而选择是否要通过学习来进入相应的数据库领域。
新技术带给我们的是更多的选择,而不是必须的技能,因此,了解它是需要的,但是否选择它那要看对自己的定位以及对新技术的认可。
Hwayw:
您对未来想成为DBA的网友什么意见和建议?
ORA-600:
勤奋、自学是非常重要的,汗水永远是成功的基石。
为了工作,去google,但为了自己,看书和试验更重要。
不要说你没有环境可以测试,所以学不会,环境是可以自己创造的,你可以装虚拟机,你也可以在网上与别人讨论他们的案例,这都是产生学习环境的基本方法,说没有环境就学不会,那只是逃避的借口。
与别人的交流和讨论是快速成长的必要手段。
多看书,多练习,踏踏实实的学习,别总盯着别人的薪水,至少在你能力不够之前。
DBA是个好职业,但DBA不是终点,而是另一个起点,事实证明,很多经验丰富的DBA,逐渐成为系统运维的管理者,或者企业级架构师,它们在另外的岗位上,很好的运用他们的DBA经验为企业的IT发展提供着必要的技术、经验支撑。