前言
写作背景
随着信息技术的发展,企业对IT的依赖不断增长,数据规模不断扩大,对高可用、高性能也提出了更高的要求,这些都对DBA提出了更高的挑战。与此同时,随着投入的增大,IT成本控制也成为每个公司的迫切需求。现在企业对DBA的要求已经不仅仅是单纯的维护,还要求从整体架构、存储规划、应用设计和性能优化等方面提供咨询建议,以减少数据库系统的软硬件支出,提高企业竞争力。
DB2数据库是IBM信息管理家族的核心产品,与Oracle、SQL Server一起占据着国内关系数据库领域的大部分市场份额,广泛应用在金融、通信、电力、烟草等行业。但与其他数据库相比,DB2相对封闭,学习曲线较陡,市场的书籍也不多,导致用户出现问题时很难独立诊断和解决。
这些我是深有感触的,在IBM原厂工作的5年到目前DB2独立咨询,我一直战斗在一线,曾经帮助很多银行、通信、电力、烟草、高速等客户进行DB2运维支持、性能调优和问题诊断,并为几十家企业提供DB2企业内训。在这个过程中,与很多IT部门经理、DBA进行过沟通和交流,大家的普遍感觉是DB2比较稳定,在海量数据处理方面性能很好,但DB2的公开资料及懂DB2的工程师太少,导致运维成本相对较高。特别希望市场上能多出现一些DB2实战的书籍。
信息技术的发展日新月异,留给DBA学习的时间越来越短,独立承担运维管理任务并快速解决问题是对每个DBA的基本要求。为了让一些初学者少走弯路,让中级水平的人快速提升,高手也能有所收获,决定写一本DB2数据库运维管理的书,将自己多年的实战经验毫无保留地奉献给大家,也算为DB2的推广做一点微不足道的贡献。
有了想法,真正写起来却是比较孤寂和艰辛的,因为白天还要为客户做一些性能调优、问题诊断和培训工作,只能利用晚上的宝贵时间。当我邀请我的好朋友王涛一起来写时,立即得到了他的积极响应,当晚我们就完成了该书的大概框架。以后的进展就比较顺利了,我们将每天写的部分互相审阅,交流意见和想法,最大程度地保证本书的质量。
本书在创作之初就定位为“面向实践”,前前后后共串联了几十个命令和工具,每个重要的命令和工具均配有相关实例演示,便于实战操作。在写作过程中,我们也随时补充在客户现场遇到的一些调优和问题诊断案例,并积极听取客户和培训学员的一些宝贵意见和建议。
由于DB2的知识点太多,要想在一本书里兼顾所有几乎是不可能的,因此,决定将一些相对高级但又比较实用的特性,如数据库分区、表分区、压缩、MQT、高级优化器、HADR、DB2联邦和Q复制等集成到《DB2数据库高级管理》一书,这样大家可以根据自己的需要来选择。
本书组织结构
第一部分(第1、2章)DB2概述
本部分共分两章,第1章概要介绍了DB2的产品发展和演变历史,第2章概述DB2体系结构,从静态和动态两个方面介绍了DB2的对象层次关系和执行流程。该部分起到提纲挈领、统领全局的作用,更有助于后续章节的把握。
第二部分(第3~7章)DB2部署和规划
本部分共分5 章,详细介绍了从产品安装到实例创建、数据库创建、表空间规划管理、表创建到访问数据的每一个步骤。存储规划是数据库系统上线前最重要的环节,如果规划不好会对以后的性能造成很严重的影响,并且系统一旦上线就很难改动。我们会与大家一起分享部署规划的最佳实践。
第三部分(第8~11章)DB2运维管理
本部分共分4章,数据迁移章节介绍了数据迁移的方法和几个最常用的命令:export、import、load、db2move、db2look、db2dart等,针对最常遇到的问题,我们用问答的方式演示了解决方案。日志原理较难理解,也是最容易出问题的地方,我们用最简洁、易懂的语言向大家阐述。作为一名DBA,确保数据安全和可用是最重要的任务(注意:没有之一),在备份和恢复章节,通过十几个案例让你对备份恢复技术烂熟于心。
本部分是核心内容,信息量大,知识点多,需要读者多实践、多操作才能融会贯通。
第四部分(第12~16章)DB2监控和调优
监控和调优本身是作为运维管理的一部分,但由于监控调优的内容相对高级和深入,因此另成体系。本部分共包含5章,DB2通过锁来实现多用户并发情况下数据的一致性,了解和掌握DB2进程模型和内存模型对于调优和问题诊断都有重要的意义,在监控章节,重点介绍了几个命令:snapshot快照、db2pd、db2top等,并重点介绍一些常用的KPI。在调优章节,通过几个真实案例介绍性能分析和调优的思路和方法。
第五部分(第17、18章)DB2问题诊断及安全
本部分包含两章内容,在实际操作和运维中,几乎每天都不可避免地遇到各类问题,有些问题可能会对系统造成严重影响,第17章介绍了几种问题诊断的方法,学会这些方法和工具将大大加快问题诊断和处理的速度。第18章介绍了数据库安全,可以保证数据库安全稳定的运行,为企业和个人减小损失。
致初学者
学习DB2有前途吗?
DB2好找工作吗?
没有环境,能学好DB2吗?
学DB2好还是Oracle好?
这些几乎是每个初学者都曾经遇到的问题。对于前两个问题,我们所能够回答的就是只要你学得好,工作就好找,就会有前途,现在很多公司在热招DB2职位,只要机会来的时候能够准备好、把握住就可以了。
对于第三个问题,有人可能会说,现在绝大多数的生产都是UNIX系统,没有环境。其实Linux上的DB2命令和UNIX上几乎完全一样,我们完全可以轻松地利用Linux虚拟机开始学习,包括一些问题的模拟、性能优化和了解仓库特性,都可以在Linux中实现。
对于第四个问题,这是个见仁见智的问题。如果是从来没有接触过数据库的读者,并且有志于在数据库领域发展,我们建议直接学DB2,毕竟先入为主,比从Oracle转过来要轻松许多。这个市场上懂Oracle的人太多了,高手如云,想出人头地做出成绩太难了。
因此,对于初学者的建议就是抓紧行动,去除浮躁,踏踏实实地把基础打牢,待机会来临的时候抓住。
致谢
本书在写作过程中得到了很多朋友的支持、鼓励和帮助。特别感谢我的好兄弟管伟(北京快通高速路有限公司首席DBA)、王敬东(北京电讯盈科首席DBA)和孙云峰(深圳市共济科技有限公司产品经理),他们几乎逐字审阅了本书内容,从用户的视角提出了很多宝贵意见和建议。
感谢加拿大丰业银行DB2性能优化架构师唐迅,IBM加拿大实验室的专家Arthur Chen、Deliang Han、Angela Yang和Shen Li,他们从专家视角审核了本书的大部分章节。
最后,感谢我的家人和朋友在背后的默默支持,是他们激励着我不断前进。
徐明伟
2011年5月