联动Oracle:设计思想、架构实现与AWR报告
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

为什么要写这本书

数据库管理知识,除了数据库本身的基本概念、设计、实现等知识以外,还涉及操作系统、存储、网络等内容。尤其是在对生产业务数据库进行复杂的故障诊断及性能优化时,我们总会发现仅掌握数据库本身的知识并不够。但是作为初中级DBA(数据库管理员),我们会在某个阶段陷入学习瓶颈,找不到突破的方法。

自从2008年接触Oracle数据库以来,我看了大量关于Oracle的国内外书籍,但对很多内容体会不深,看了没多久就忘了。我曾在2015年参加OCM认证考试,发现数据库性能优化和故障诊断等方面的能力无法仅凭学习考试涉及的理论知识获取。后来我有幸参加了盖国强、吕海波等专家开展的DBA短期培训,收获很大。与这些专家沟通之后,我对Oracle数据库的设计思想、架构实现、性能优化等方面有了更深入的理解,并且更进一步探究UNIX内核、进程及进程间通信、数据结构(链表、树、哈希表)、Socket通信等内容。

最终,我有了梳理、总结Oracle数据库内核知识,并将之与其他相关的关键技术点串联起来、写作成书的想法。

我把写书的想法及初步整理的素材发给ACE总监、Oracle顾问专家周亮,获得了他的鼓励和帮助。于是,我借着自己2018年在武汉大学访学的机会,充分利用了该校图书馆里的图书资源,并结合李石君教授通俗易懂的数据库原理课程,开始了系统性的整理和写作之旅。

有很多读者与我曾经的情况类似,受制于技术瓶颈而徘徊不前,迟迟无法实现进一步提升。而本书是我对自己多年学习和实践Oracle数据库的经验总结,能帮助读者节省学习时间,少走弯路,突破数据库的学习瓶颈。

读者对象

本书适合如下读者阅读:

❑初中级DBA

❑数据库技术爱好者

❑想突破Oracle学习瓶颈并拓宽思路的人

本书特色

掌握Oracle技术及原理,尤其是学习Oracle在并发控制、事务处理、诊断优化手段等方面的解决思路和实现算法,对DBA深入理解关系型数据库乃至大数据技术有很大帮助。

本书将Oracle相关知识点串联讲解,旨在令读者对该数据库理论融会贯通,以应用于实际工作,提高技术水平。而要达到这样的境界则须理解甚至掌握操作系统、计算机网络、排队论等相关的基础及辅助知识。所以,本书适当引入了超出数据库本身范畴的知识点,尽量强调概念根源和设计思想,同时力求通过梳理将Oracle相关知识由庞杂变得简洁有条理,并将其以通俗易懂的语言呈现出来。

如何阅读本书

本书共11章,分为三篇,各篇主要内容如下。

第一篇(第1~3章) 宏观掌握Oracle基础

本篇介绍了进程管理、内存管理及存储结构等基础知识,并且讲解了Linux操作系统性能工具的使用及结果分析方法,旨在帮助读者从宏观视角掌握Oracle数据库体系架构和进程组织方案。

第二篇(第4~8章) 微观理解Oracle原理

本篇围绕Oracle内部运行原理展开讲解。首先,在Oracle数据结构的基础上讨论重做和回滚日志。其次,引入了排队论和并发控制的概念,对比讲解了Oracle的数据缓冲区和共享池的设计思想及运行原理。

第三篇(第9~11章) 串联Oracle运行流程

本篇结合实践案例将从SQL提交至最终结果返回的整个运行过程串联起来。首先,总结归纳了Oracle算法和数据结构的重要知识点,打通了Oracle原理与数据结构之间的桥梁。其次,通过典型案例讲解AWR(Automatic Workload Repository,自动负载信息库)报告,让读者能够了解完整的Oracle诊断思路。再次,介绍了集群技术、Oracle RAC(真正应用集群)及其日志结构。最后,对Oracle多租户架构的演变及部分新特性进行了简要讨论及总结。

如果你是一名经验丰富的DBA,已经理解了Oracle的相关基础知识和使用技巧,那么可以直接阅读第三篇。如果你是一名初学者或中级DBA,那么建议从第一篇开始学习,以便对操作系统及进程等基础概念建立相对深入且正确的认识。

勘误和支持

如果书中出现了错误或者不准确的地方,恳请读者批评指正。为了方便与各位读者交流,我创建了微信公众号(微信号:kuqlan)。欢迎你将书中的错误发给我,或者在遇到Oracle相关问题时留言,我将努力解答。此外,本书中的全部代码都将发布在该公众号上。如果你有更多的宝贵意见,也欢迎发送邮件至819287413@qq.com,很期待听到你的反馈。

致谢

感谢ACE总监周亮。在我写作本书的过程中,他不但鼓励我,而且对我的技术疑惑有问必答。没有他的鼓励和支持,就不会有这本书。我认为,在数据库“江湖”中,周亮是故障诊断及处理领域的“小李飞刀”。

感谢吕海波专家。我因OCM(Oracle Certified Master,Oracle认证大师)培训认识了他,他的课程及著作帮助我深入理解Oracle内核,与他的每次交流都能解决我的许多疑惑。

感谢武汉大学的李石君教授及武大图书馆。李教授的课程进一步巩固了我的数据库管理理论基础;而武大图书馆为我提供了丰富的学习资料,为编写本书,我几乎翻遍了这个图书馆里所有与Oracle相关的书籍。

感谢我的家人,他们的理解及默默支持时时刻刻为我灌输着信心和力量!