Jonathan Lewis 是世界级Oracle资深专家,有20多年Oracle关系数据库管理经验。主要从事自由咨询顾问工作,其Oracle数据库引擎方面的培训课程和研讨会世界闻名。Jonathan曾是UKOUG(UK Oracle User Group)的负责人,他著有多本Oracle方面的畅销书,并维护自己的Oracle技术博客。他的博客:http://jonathanlewis.wordpress.com
图灵社区: Oracle的自动化程度变得越来越高,很多需要人为介入的优化手段也变得越来越简单。在这种情况下,DBA怎么才能跟上发展、更好地提高数据库的效率?
JL:要想跟上Oracle的发展是十分困难的。我之所以无法完成我想要写的书,就是因为我总是跟不上(笑)。虽然我可以解决很多实际问题,就算面对全新的难题,我也可以通过了解Oracle的表现,结合它的工作原理,很快诊断出问题。但是我却无法反向推断,如果你告诉我某种情况,我可能无法说出Oracle会做什么。我现在已经很难再进行预测了,但是我可以根据问题找原因。跟上发展的意思我认为应该是预前判断Oracle的工作状态,要做到这些,我认为要有足够的经验。
阅读手册是十分重要的事。我认为市面上还有两三本书,也可以帮助你掌握必要的信息。Christian Antognini有一本书叫做《Oracle性能诊断艺术》,在这本书中,他讲述了很多Oracle运作的知识,以及如何利用工具找到问题,同时也提出了如何解决问题的建议,这样的好书会教你Oracle怎么工作,然后会举一些例子告诉你Oracle能完成什么。如果你仔细读过手册,也读过这些书,你就知道如何构造模型,如何用特殊方式建立两个表,如何选择查询,如何选择Oracle的特性……你可以亲手实践手册或者从《Oracle性能诊断艺术》里学来的东西,然后自己创造出一个可以解决自己实际问题的办法。通过亲力亲为的实践这些知识,你就会知道Oracle可以做什么,什么又是错的了。我认为实践是最好的学习方法。
但是很多人没有时间来做这些事。你的公司可能会说:9点到岗,5点之前不许下班。这样你就没有空余时间,一直都忙着做别人安排好的事情。每天重复做同样的事,一做就是5年,于是你没有时间跳出来,尝试一些新方法。
有两个办法可以帮你获取更多的经验。第一个就是像今天这样的大会是很好的机会。你可以离开你的工作,听听别人分享的经验。你会得到很多新的启发,也会找到解决问题的不同方法。得到这样的启发是大有裨益的。
另外一点就是,我作为一个咨询师,我工作的方式会让我每年大概接触到20家公司,我就会知道20种运作方式。大多数人只能有机会看到Oracle如何工作的冰山一角,但是我几乎有机会看到全貌。所以关于在Oracle上可以做什么,我可能更有经验。常规公司的DBA经常会说:我们公司在过去5年中就是这么做的,我们有其他的办法吗?DBA们应该经常安排自己重头思考一下,忘掉自己惯常的做法和思路,重新读手册,看看能不能想到一些新的办法。对于我来说,如果我看到你们在做的工作,我可能会想出5种不同的方式来达到同样的目的,因为我见过这些方式。对于 Oracle来说,完成任务的方式多种多样,而普通DBA只能看到他每天接触的方