编辑推荐
Oracle数据库运维领域经典著作,盖国强等专家鼎力推荐
作者毫无保留地分享了多年来在运维管理、诊断优化、高可用等方面积累的宝贵经验和**实践,包含大量来自实际生产环境的经典案例
 ;
内容简介
本书是目前Oracle数据库运维领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包含实战方法论的著作。作者根据其多年的运维诊断经验,从数据库如何创建开始,循序渐进地介绍了数据库的启动关闭过程,如何配置监听并连接到数据库,如何对数据库空间进行管理和监控,SGA的调整和优化方法,CHECKPOINT和SCN核心机制,数据库的备份与恢复,数据库性能优化的方法论以及Oracle Data Guard的配置和管理等内容。书中作者结合了大量的真实案例,把自己多年的宝贵经验融入其中,通过一些复杂案例的诊断过程来说明这些简单的原理和知识点,同时,作者并没有简单地停留在案例诊断分析的层面上,而是根据大量案例的经验汇总,把问题的优化、诊断和解决提升到了方法论的层面上,进一步帮助读者知其然,知其所以然。
作者简介
周亮 杭州美创科技Oracle技术服务团队负责人,Oracle 10g OCM。精通Oracle数据库原理,对于数据库架构设计、运维、调优、排故有着丰富的实战经验。带领Oracle技术服务团队,为公司客户提供上百套数据库维护工作。客户涉及政府、通信、金融、公安、电力、交通、医疗、制造等行业。
目录
推荐序一
推荐序二
推荐序三
前言
第1章 数据库故障的诊断方法与分析思路  ;
1.1 数据库安装类故障  ;
1.1.1 安装数据库时容易犯的错误  ;
1.1.2 无法启动安装界面的解决方法  ;
1.1.3 安装数据库的最佳实践  ;
1.2 数据库连接类故障  ;
1.2.1 检查是否由网络故障引起  ;
1.2.2 检查是否由主机资源引起  ;
1.2.3 检查是否由监听故障引起  ;
1.2.4 检查是否由数据库故障引起  ;
1.3 数据库HANG类故障  ;
1.3.1 数据库全局性HANG的处理过程  ;
1.3.2 数据库局部性HANG处理过程  ;
1.4 数据库性能类故障  ;
1.4.1 性能类故障的处理思路  ;
1.4.2 怎样快速定位资源持有者  ;
1.5 数据误操作类故障的处理思路  ;
1.6 数据库坏块类故障  ;
1.6.1 数据库对象坏块的处理思路  ;
1.6.2 SYSTEMUNDO表空间损坏的处理思路  ;
1.6.3 数据库在线日志文件损坏的处理思路  ;
1.6.4 控制文件损坏的处理思路  ;
1.7 总结  ;
第2章 监听的配置和管理  ;
2.1 简析监听连接示意图  ;
2.2 深入解析监听配置文件  ;
2.2.1 一个典型的监听配置模板  ;
2.2.2 监听的常用命令  ;
2.2.3 配置监听别名  ;
2.2.4 配置文件中的关键字解析  ;
2.3 tnsping命令的作用和适用场景  ;
2.4 监听的静态注册  ;
2.4.1 静态注册的配置内容  ;
2.4.2 监听状态中服务名和实例名  ;
2.5 监听的动态注册  ;
2.5.1 动态注册的内容  ;
2.5.2 监听状态中的服务名和实例名  ;
2.5.3 监听动态注册时的实例状态  ;
2.5.4 动态注册的时间点  ;
2.5.5 实例不能动态注册的处理思路  ;
2.5.6 跟踪实例的动态注册过程  ;
2.6 巧用SSH的端口转发功能  ;
2.7 跟踪监听的工作过程  ; ;
2.8 监听的优化思路  ;
2.9 诊断案例之一:RAC 某节点宕机之后的监听故障处理  ;
2.10 诊断案例之二:使用客户端跟踪数据库连接问题  ;
2.11 诊断案例之三:本地sqlplus连接HANG的诊断和分析  ;
第3章 命令行创建和删除数据库  ;
3.1 创建数据库的大概流程  ;
3.2 理解Oracle SID  ; ;
3.3 检查操作系统环境  ;
3.4 规划数据库文件系统  ;
3.5 创建Oracle日志文件目录和密码文件  ;
3.6 创建Oracle参数文件  ;
3.6.1 设置内存相关参数  ;
3.6.2 设置进程相关参数  ;
3.6.3 设置DB_FILES参数  ;
3.6.4 设置BLOCK_SIZE和DB_FILE_MULTIBLOCK_READ_COUNT参数  ;
3.6.5 设置参数OPEN_CURSORS和SESSION_CACHED_CURSORS  ;
3.6.6 一个典型的数据库参数文件  ;
3.7 创建数据库  ;
3.7.1 数据库的创建脚本  ;
3.7.2 使用OMF特性创建数据库  ;
3.8 创建数据字典  ;
3.8.1 执行catalog.sql  ;
3.8.2 执行catproc.sql  ;
3.8.3 执行utlrp.sql  ;
3.8.4 执行pupbld.sql  ;
3.9 命令行创建RAC数据库  ;
3.10 怎样彻底删除数据库  ;
第4章 SCN和CHECKPOINT  ;
4.1 SCN  ;
4.1.1 SCN的作用  ;
4.1.2 SCN和时间之间的转换  ;
4.2 SCN的最大阈值  ;
4.3 几种常见的SCN  ;
4.3.1 控制文件中的SCN  ;
4.3.2 数据文件头中的SCN  ;
4.3.3 数据块中的SCN  ;
4.3.4 日志文件头中的SCN  ;
4.3.5 事务开始时的SCN  ;
4.3.6 数据库的CURRENT SCN  ;
4.4 CHECKPOINT  ;
4.4.1 CHECKPOINT的作用  ;
4.4.2 全量CHECKPOINT和增量CHECKPOINT  ;
4.4.3 CHECKPOINT和REDOLOG  ;
4.4.4 影响数据库打开速度的因素  ;
4.4.5 CHECKPOINT的优化思路  ;
第5章 数据库的启动与关闭  ;
5.1 实例与数据库  ;
5.2 数据库参数文件  ;
5.2.1 参数文件的类型  ;
5.2.2 参数设置  ;
5.2.3 参数文件之间的类型转换  ;
5.3 简述数据库的启动步骤  ;
5.4 数据库的启动步骤之一:NOMOUNT  ;
5.4.1 连接至空闲实例  ;
5.4.2 读取数据库参数文件
5.4.3 分配SGA内存
5.4.4 派生后台进程
5.4.5 诊断案例:主机内存的使用率达到99%
5.5 数据库的启动步骤之二:MOUNT
5.5.1 读取控制文件
5.5.2 校验控制文件
5.5.3 MOUNT数据库
5.5.4 控制文件损坏的处理思路
5.6 数据库的启动步骤之三:OPEN
5.6.1 详解CRASH RECOVERY
5.6.2 CRASH RECOVERY的故障处理思路
5.6.3 详解CACHE RECOVERY
5.6.4 CACHE RECOVERY的故障处理思路
5.6.5 详解TX RECOVERY
5.6.6 TX RECOVERY的故障处理思路
5.7 数据库打开HANG的故障处理思路
5.8 如何强制打开数据库
5.9 如何快速关闭数据库
5.9.1 影响数据库关闭速度的因素
5.9.2 数据库无法关闭的诊断方法
第6章 数据库空间的管理与监控
6.1 数据库的空间管理
6.2 表空间管理
6.2.1 区管理和段管理
6.2.2 临时段管理
6.2.3 回滚段管理
6.2.4 表空间的监控脚本
6.2.5 维护表空间的注意事项
6.3 数据文件管理
6.3.1 裸设备头上的保留信息
6.3.2 浅析数据文件的操作系统头
6.3.3 破解数据文件头内容
6.3.4 维护数据文件的注意事项
6.4 在线日志文件管理
6.4.1 破解日志文件头信息
6.4.2 LGWR进程在日志文件中的写进度
6.4.3 维护日志文件的注意事项
6.5 归档日志管理
6.5.1 开启和关闭归档模式步骤
6.5.2 归档日志的命名参数
6.5.3 查看归档日志的几个脚本
6.5.4 使用LOGMNR挖掘归档日志
6.5.5 开启归档模式的注意点
6.5.6 开启归档模式的好处
6.6 闪回日志管理
6.6.1 数据库闪回相关的视图和参数
6.6.2 数据库级别的闪回种类
6.6.3 闪回日志空间的释放
6.7 控制文件管理
6.7.1 常见的控制文件故障处理
6.7.2 维护控制文件的注意事项
6.8 跟踪文件管理
第7章 Oracle性能优化方法论
7.1 数据库性能优化的目标
7.2 建立数据库性能基线
7.3 寻找关键变化
7.4 定位主要影响因素
7.5 检查操作系统资源
7.5.1 查看CPU资源
7.5.2 查看内存资源
7.5.3 查看IO资源
7.5.4 查看网络资源
7.6 常见的数据库性能故障
7.7 数据库性能优化的常规方法
7.7.1 数据库性能调整的基本流程
7.7.2 调整Oracle内存参数
7.7.3 调整数据库在线日志
7.7.4 调整SQL的执行计划
7.7.5 优化对象的IO读取
7.7.6 降低CURSOR解析成本
7.7.7 其他数据库性能调整手段
7.8 利用OWI监控数据库性能
7.8.1 OWI的基本原理
7.8.2 等待事件的含义
7.8.3 监控数据库的手段
7.9 利用时间模型监控数据库性能
第8章 SGA的性能调整和优化思路
8.1 BUFFER CACHE的内部结构
8.1.1 BUFFER HEADER
8.1.2 HASH CHAIN和HASH BUCKET
8.1.3 LATCH:CACHE BUFFERS CHAINS
8.1.4 LATCH:CACHE BUFFERS LRU CHAIN
8.1.5 FREE BUFFER WAITS
8.1.6 BUFFER BUSY WAITS
8.2 BUFFER CACHE的优化指标
8.2.1 BUFFER CACHE的命中率
8.2.2 AWR报告中BUFFER CACHE的一些争用指标
8.2.3 BUFFER CACHE大小的建议值
8.3 BUFFER CACHE的优化思路
8.3.1 BUFFER CACHE内存不足的优化思路
8.3.2 BUFFER CACHE的数据块争用的优化思路
8.3.3 其他有关BUFFER CACHE的优化思路
8.4 SHARED POOL的内部结构
8.4.1 堆管理
8.4.2 CHUNK
8.4.3 FREE LIST
8.4.4 LRU LIST
8.4.5 RESERVED FREE LIST
8.4.6 SHARED POOL的SUB POOL技术
8.4.7 关于SGA内存抖动
8.5 LIBRARY CACHE的内部结构及等待事件
8.5.1 LATCH:LIBRARY CACHE
8.5.2 LIBRARY CACHE LOCKPIN
8.5.3 LIBRARY CACHE OBJECT
8.6 浅析SQL的解析过程
8.6.1 软解析
8.6.2 硬解析
8.6.3 软软解析
8.7 ROW CACHE上的故障诊断方法
8.7.1 ROW CACHE的大小
8.7.2 ROW CACHE上的LATCH
8.7.3 诊断案例:LATCH:ROW CACHE OBJECTS故障处理
8.7.4 建立测试环境重现问题
8.8 SHARED POOL上的优化思路
8.9 LOG BUFFER上的优化思路
8.9.1 LOG BUFFER的大小
8.9.2 浅析REDO WASTAGE
8.9.3 LOG FILE SYNC等待事件
8.9.4 减少日志量的方法
第9章 数据库的物理备份与恢复
9.1 物理备份与恢复的基本概念
9.1.1 物理备份的基本概念
9.1.2 物理备份时的注意点
9.1.3 物理恢复的基本概念
9.1.4 物理恢复时的注意点
9.2 数据库的冷备份和恢复
9.2.1 冷备份数据库步骤
9.2.2 冷备份下的数据库恢复
9.3 数据库手动热备份和恢复
9.3.1 手动热备份
9.3.2 热备份下的数据库恢复
9.4 使用RMAN备份和恢复数据库
9.4.1 RMAN的结构
9.4.2 RMAN占用的内存
9.4.3 RMAN备份与恢复示例
9.5 数据库闪回
9.5.1 数据库闪回和普通闪回点
9.5.2 强制闪回点
第10章 物理Data Guard的配置与管理
10.1 Data Guard的原理
10.1.1 解析Data Guard原理图
10.1.2 Data Guard正常运行的前提
10.2 Data Guard的保护模式
10.2.1 最大保护模式
10.2.2 最大可用模式
10.2.3 最大性能模式
10.2.4 切换保护模式
10.3 配置物理Data Guard
10.3.1 配置Data Guard简要流程
10.3.2 配置Data Guard相关参数
10.4 管理物理Data Guard
10.4.1 配置Data Guard的注意点
10.4.2 管理Data Guard的注意点
免费在线读
前言
为什么要写这本书
经常有同行问我:“你为什么要学习Oracle?”
我往往这样回答:“我不喜欢编程,所以经朋友介绍去了一个大型项目团队做测试。在测试过程中用到Oracle,而且每天的实习工资有90块呢!”
我说的是实话。我确实不喜欢编程(至今仍然讨厌编程,熟悉我的人应该都知道),因为我讨厌记程序的语法,讨厌调试代码时出现的各种错误,而且每天90块钱的实习工资在当时确实诱惑力还是很大的。就这样,我阴差阳错地进入了Oracle这个博大精深的世界。
学习了3个月的理论知识后,我自信心暴涨,以为Oracle就那么一回事。被领导派往某客户处安装数据库时,结果连一条切换操作系统用户的命令都不会(su-oracle)。当时真是感觉后背发热,如坐针毡,这才真切地感受到了理论和实践的差距。
我永远记得同事说过的一句话:“工作了,不再像在学校里有老师逼着学习,现在都要靠自己了。”为了生存,我不得不硬着头皮逼自己学习领导交给我的Oracle官方文档,那段时间真的比高考都辛苦。我满脑子都是Oracle,睡觉前都在想Oracle后台进程之间的协调。随着学习的深入,我对Oracle的兴趣也越来越浓。不知从何时起,被动学习变成了主动学习(到今天为止,我每天都至少学习2小时以上),一天如果不打几条sqlplus命令,不看几篇MOS文章就感觉心里空荡荡的。当习惯已成自然的时候,我发觉我已经“入魔”了。
兴趣是最好的老师,我坚信这句话。
值得庆幸的是,我不是纯理论派的Oracle人,我的工作性质决定了我每天必须要处理好几个故障,所以这几年下来,也积累了相当的实践经验。很多同行碰到问题来问我,我基本上都能快速地给出一个处理思路或者解决问题的方向。他们在佩服之余,还送了我一个雅号—周处(双重含义:本人处女座,另外,处理故障快速到位)。殊不知,在从理论迈向实践的路上,我也经历过风雨,熬过很多个通宵。
我目前所在的公司是一家第三方Oracle服务厂商,所以差不多有十几个DBA专门负责维护客户的数据库。“铁打的营盘,流水的兵”,当新员工加入团队的时候,就面临着如何让新员工快速成长的问题,于是我就有了将自己的实战经验写出来的想法,希望可以有助于新人的学习。当新人碰到问题时,我可以说:“嗨,XXX,请参阅《OracleDBA实战攻略》的第N章第M节,那里有解决问题的思路!”那岂不是很威风?!不知终点的等待,会让人觉得无助。如果哪天故障来了,你能迅速判断出方向,那就行了!接下来的事情,就是使用什么样的技术了!写书不仅可以传授经验,而且也可以系统整理自己的Oracle知识,“赠人玫瑰之手,经久犹有余香”。这种双赢的事情,何乐而不为呢?
我必须承认,严格来说,这本书不能说是我“写”的,太多来自于各位大师的研究成果,这么多年浸淫其中,我已无法一一指明出处。中国人常说“落字为证”。当真正开始要写书的时候,我就变得诚惶诚恐,生怕误导同行。学习Oracle最难的是如何将理论与实践结合起来。本书是我多年来工作经验的总结,书中的内容偏重于实战,并尽可能在每个重要的知识点之后说明需要注意的地方。抛开Oracle基本理论,阅读本书,你将会看到我在故障处理方面的思考过程和方法。将思考过程展现给读者是本书的特色,相信会给读者带来实际的提升。
不得不提一下,至今为止,虽然我仍然很讨厌编程,但是由于我痴迷于Oracle,在研究Oracle的过程中,深深感到自身的编码缺陷,所以我又反过头来再学编程了。因为有编程基础再学Oracle会更加得心应手。
“没有解决不了的技术问题”,这是我们领导说的。在学习Oracle的路上,我一直用它来鞭策和激励自己,与君共勉。
读者对象
本书是为以下读者写作的:
OracleDBA或者开发人员。
有一定Oracle管理经验、希望进一步提升的读者。
迫切希望在Oracle数据库领域一展拳脚的初中级DBA。
如何阅读本书
本书覆盖面较广,内容涉及Oracle运维过程中常见故障的诊断、空间管理、性能优化、备份恢复等方面。虽然Oracle是一台巨大的同步机器,但每一部分内容相对独立,读者可以根据需要有选择性地阅读相关章节。由于本书侧重实战,所以数据库故障处理思路、运维过程中的注意点始终贯穿本书。
本书共有10章。第1章为数据库故障的诊断方法与分析思路,主要讲解我在碰到各类故障时的解决思路,这些实战方法源于我的经验,不一定适合所有的DBA,但对大家有一定的借鉴作用。
第2章为监听的配置和管理。数据库的连接问题是运维过程中比较容易碰到的,而Oracle监听(listener)则是客户端连接到数据库的必经之路,相信通过本章的学习,读者能找到解决问题的思路。
第3章为命令行创建和删除数据库,主要讲述命令行安装数据库的一些知识以及注意事项,因为研究命令行安装能比较清楚地知道创建数据库的来龙去脉。
第4章为SCN和CHECKPOINT。CHECKPOINT的最终结果会使得CHECKPOINTNUMBER增加,即SCN值增加。对于初学者来说,要将这么多SCN串联起来会有一定的难度,可是,如果理解了SCN机制,也就相当于理解了Oracle的核心,所以在本章会分批介绍几种常见的SCN,帮助大家理解。
第5章为数据库的启动与关闭。数据库的启动是一个相当复杂的过程。本章将花较大的篇幅来讲述数据库的启动过程,并通过大量的真实案例指出数据库在启动过程中潜在的故障点,以及解决这些故障的具体思路。希望通过本章的阅读,能让读者对数据库的启动过程有个较为清晰的认识。
第6章为数据库空间的管理与监控。本章很少涉及理论,侧重探讨数据库在日常运维过程中的注意事项。在到处充斥着Oracle理论的今天,运维经验显得弥足珍贵。
第7章为Oracle性能优化方法论。在大多数DBA眼里,数据库的性能优化似乎是一门虚无缥缈、难以掌握的技术。本章尽量使用形象直白的语言去介绍Oracle性能优化方法,从而帮助读者相对快速地找到Oracle性能优化的方向。
第8章为SGA的性能调整和优化思路。本章主要从我的实际工作经验出发,结合SGA的内存结构,着重与读者分享在处理SGA性能问题时的优化思路。由于生产环境异常复杂,再加上本人水平有限,其中有些观点难免有失偏颇,欢迎读者批评和指正。
第9章为数据库的物理备份与恢复。墨菲定理指出,事情如果有变坏的可能,不管这种可能性有多小,它总会发生。对于Oracle故障来说,当然也存在着由可能发生变为必然发生的风险。本章主要讨论的是数据库的物理备份和恢复技术,同时还会介绍一些与其相关的注意事项和最佳实践。
第10章为物理DataGuard的配置与管理,主要讲解Oracle物理DataGuard的配置和日常运维中的一些注意点。
勘误和支持
由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,不妥之处在所难免,恳请读者批评指正。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱za88888@gmail.com,我很期待你们的真挚反馈。如果你有微博,也欢迎互粉,大家一起学习、交流,共同进步。
致谢
首先要感谢我的妻子,没有她的支持和肯定,我是不可能完成本书的。
感谢我的岳母,没有她精心照顾儿子,我是没有精力完成此书的。
感谢我的团队,他们出色地保证了系统的稳定运行,给了我写书的可能。
感谢陈佳媛、杨绣国对书稿的审阅,她们提出了很多中肯意见和宝贵建议。
最后,谨把本书献给我可爱淘气的儿子,愿他快乐健康成长。希望通过本书让他知道,老爸不陪他的日子里,还是做了很多有意义的事情的。
周亮
2013年4月写于杭州
……
Oracle DBA实战攻略:运维管理、诊断优化、高可用与最佳实践 pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版