Oracle DBA实战攻略:运维管理、诊断优化、高可用与最佳实践

Oracle DBA实战攻略:运维管理、诊断优化、高可用与最佳实践
作 者: 周亮
出版社: 机械工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 计算机与互联网 数据库
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  周亮,杭州美创科技Oracle技术服务团队负责人,Oracle 10g OCM。精通Oracle数据库原理,对于数据库架构设计、运维、调优、排故有着丰富的实战经验。带领Oracle技术服务团队,为公司客户提供上百套数据库维护工作。客户涉及政府、通信、金融、公安、电力、交通、医疗、制造等行业。

内容简介

《Oracle DBA实战攻略:运维管理、诊断优化、高可用与最佳实践》是目前Oracle数据库运维领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包含实战方法论的著作。作者根据其多年的运维诊断经验,从数据库如何创建开始,循序渐进地介绍了数据库的启动关闭过程,如何配置监听并连接到数据库,如何对数据库空间进行管理和监控,SGA的调整和优化方法,CHECKPOINT和SCN核心机制,数据库的备份与恢复,数据库性能优化的方法论以及Oracle Data Guard的配置和管理等内容。书中作者结合了大量的真实案例,把自己多年的宝贵经验融入其中,通过一些复杂案例的诊断过程来说明这些简单的原理和知识点,同时,作者并没有简单地停留在案例诊断分析的层面上,而是根据大量案例的经验汇总,把问题的优化、诊断和解决提升到了方法论的层面上,进一步帮助读者知其然,知其所以然。

图书目录

推荐序一

推荐序二

推荐序三

前言

第1章 数据库故障的诊断方法与分析思路 / 1

1.1 数据库安装类故障 / 1

1.1.1 安装数据库时容易犯的错误 / 1

1.1.2 无法启动安装界面的解决方法 / 2

1.1.3 安装数据库的最佳实践 / 3

1.2 数据库连接类故障 / 4

1.2.1 检查是否由网络故障引起 / 4

1.2.2 检查是否由主机资源引起 / 5

1.2.3 检查是否由监听故障引起 / 5

1.2.4 检查是否由数据库故障引起 / 6

1.3 数据库HANG类故障 / 6

1.3.1 数据库全局性HANG的处理过程 / 7

1.3.2 数据库局部性HANG处理过程 / 8

1.4 数据库性能类故障 / 9

1.4.1 性能类故障的处理思路 / 9

1.4.2 怎样快速定位资源持有者 / 9

1.5 数据误操作类故障的处理思路 / 10

1.6 数据库坏块类故障 / 11

1.6.1 数据库对象坏块的处理思路 / 11

1.6.2 SYSTEM/UNDO表空间损坏的处理思路 / 11

1.6.3 数据库在线日志文件损坏的处理思路 / 12

1.6.4 控制文件损坏的处理思路 / 12

1.7 总结 / 13

第2章 监听的配置和管理 / 14

2.1 简析监听连接示意图 / 14

2.2 深入解析监听配置文件 / 16

2.2.1 一个典型的监听配置模板 / 16

2.2.2 监听的常用命令 / 16

2.2.3 配置监听别名 / 17

2.2.4 配置文件中的关键字解析 / 18

2.3 tnsping命令的作用和适用场景 / 23

2.4 监听的静态注册 / 24

2.4.1 静态注册的配置内容 / 24

2.4.2 监听状态中服务名和实例名 / 25

2.5 监听的动态注册 / 26

2.5.1 动态注册的内容 / 26

2.5.2 监听状态中的服务名和实例名 / 26

2.5.3 监听动态注册时的实例状态 / 27

2.5.4 动态注册的时间点 / 28

2.5.5 实例不能动态注册的处理思路 / 29

2.5.6 跟踪实例的动态注册过程 / 31

2.6 巧用SSH的端口转发功能 / 32

2.7 跟踪监听的工作过程 / 33

2.8 监听的优化思路 / 35

2.9 诊断案例之一:RAC 某节点宕机之后的监听故障处理 / 36

2.10 诊断案例之二:使用客户端跟踪数据库连接问题 / 40

2.11 诊断案例之三:本地sqlplus连接HANG的诊断和分析 / 42

第3章 命令行创建和删除数据库 / 45

3.1 创建数据库的大概流程 / 46

3.2 理解Oracle SID / 46

3.3 检查操作系统环境 / 47

3.4 规划数据库文件系统 / 50

3.5 创建Oracle日志文件目录和密码文件 / 51

3.6 创建Oracle参数文件 / 52

3.6.1 设置内存相关参数 / 53

3.6.2 设置进程相关参数 / 53

3.6.3 设置DB_FILES参数 / 54

3.6.4 设置BLOCK_SIZE和DB_FILE_MULTIBLOCK_READ_COUNT参数 / 54

3.6.5 设置参数OPEN_CURSORS和SESSION_CACHED_CURSORS / 55

3.6.6 一个典型的数据库参数文件 / 56

3.7 创建数据库 / 57

3.7.1 数据库的创建脚本 / 57

3.7.2 使用OMF特性创建数据库 / 61

3.8 创建数据字典 / 61

3.8.1 执行catalog.sql / 62

3.8.2 执行catproc.sql / 63

3.8.3 执行utlrp.sql / 64

3.8.4 执行pupbld.sql / 64

3.9 命令行创建RAC数据库 / 66

3.10 怎样彻底删除数据库 / 68

第4章 SCN和CHECKPOINT / 70

4.1 SCN / 70

4.1.1 SCN的作用 / 70

4.1.2 SCN和时间之间的转换 / 71

4.2 SCN的最大阈值 / 74

4.3 几种常见的SCN / 75

4.3.1 控制文件中的SCN / 75

4.3.2 数据文件头中的SCN / 77

4.3.3 数据块中的SCN / 80

4.3.4 日志文件头中的SCN / 83

4.3.5 事务开始时的SCN / 84

4.3.6 数据库的CURRENT SCN / 85

4.4 CHECKPOINT / 86

4.4.1 CHECKPOINT的作用 / 86

4.4.2 全量CHECKPOINT和增量CHECKPOINT / 87

4.4.3 CHECKPOINT和REDOLOG / 89

4.4.4 影响数据库打开速度的因素 / 90

4.4.5 CHECKPOINT的优化思路 / 91

第5章 数据库的启动与关闭 / 93

5.1 实例与数据库 / 93

5.2 数据库参数文件 / 95

5.2.1 参数文件的类型 / 95

5.2.2 参数设置 / 96

5.2.3 参数文件之间的类型转换 / 98

5.3 简述数据库的启动步骤 / 99

5.4 数据库的启动步骤之一:NOMOUNT / 102

5.4.1 连接至空闲实例 / 102

5.4.2 读取数据库参数文件 / 107

5.4.3 分配SGA内存 / 110

5.4.4 派生后台进程 / 115

5.4.5 诊断案例:主机内存的使用率达到99% / 116

5.5 数据库的启动步骤之二:MOUNT / 118

5.5.1 读取控制文件 / 118

5.5.2 校验控制文件 / 118

5.5.3 MOUNT数据库 / 122

5.5.4 控制文件损坏的处理思路 / 127

5.6 数据库的启动步骤之三:OPEN / 128

5.6.1 详解CRASH RECOVERY / 130

5.6.2 CRASH RECOVERY的故障处理思路 / 137

5.6.3 详解CACHE RECOVERY / 139

5.6.4 CACHE RECOVERY的故障处理思路 / 148

5.6.5 详解TX RECOVERY / 157

5.6.6 TX RECOVERY的故障处理思路 / 158

5.7 数据库打开HANG的故障处理思路 / 160

5.8 如何强制打开数据库 / 161

5.9 如何快速关闭数据库 / 165

5.9.1 影响数据库关闭速度的因素 / 165

5.9.2 数据库无法关闭的诊断方法 / 166

第6章 数据库空间的管理与监控 / 168

6.1 数据库的空间管理 / 168

6.2 表空间管理 / 169

6.2.1 区管理和段管理 / 169

6.2.2 临时段管理 / 176

6.2.3 回滚段管理 / 182

6.2.4 表空间的监控脚本 / 196

6.2.5 维护表空间的注意事项 / 197

6.3 数据文件管理 / 198

6.3.1 裸设备头上的保留信息 / 198

6.3.2 浅析数据文件的操作系统头 / 200

6.3.3 破解数据文件头内容 / 201

6.3.4 维护数据文件的注意事项 / 203

6.4 在线日志文件管理 / 205

6.4.1 破解日志文件头信息 / 206

6.4.2 LGWR进程在日志文件中的写进度 / 207

6.4.3 维护日志文件的注意事项 / 208

6.5 归档日志管理 / 209

6.5.1 开启和关闭归档模式步骤 / 209

6.5.2 归档日志的命名参数 / 210

6.5.3 查看归档日志的几个脚本 / 212

6.5.4 使用LOGMNR挖掘归档日志 / 213

6.5.5 开启归档模式的注意点 / 214

6.5.6 开启归档模式的好处 / 215

6.6 闪回日志管理 / 217

6.6.1 数据库闪回相关的视图和参数 / 217

6.6.2 数据库级别的闪回种类 / 218

6.6.3 闪回日志空间的释放 / 219

6.7 控制文件管理 / 222

6.7.1 常见的控制文件故障处理 / 222

6.7.2 维护控制文件的注意事项 / 225

6.8 跟踪文件管理 / 226

第7章 Oracle性能优化方法论 / 228

7.1 数据库性能优化的目标 / 228

7.2 建立数据库性能基线 / 229

7.3 寻找关键变化 / 230

7.4 定位主要影响因素 / 230

7.5 检查操作系统资源 / 231

7.5.1 查看CPU资源 / 231

7.5.2 查看内存资源 / 231

7.5.3 查看I/O资源 / 232

7.5.4 查看网络资源 / 233

7.6 常见的数据库性能故障 / 234

7.7 数据库性能优化的常规方法 / 235

7.7.1 数据库性能调整的基本流程 / 235

7.7.2 调整Oracle内存参数 / 237

7.7.3 调整数据库在线日志 / 237

7.7.4 调整SQL的执行计划 / 238

7.7.5 优化对象的I/O读取 / 239

7.7.6 降低CURSOR解析成本 / 240

7.7.7 其他数据库性能调整手段 / 240

7.8 利用OWI监控数据库性能 / 241

7.8.1 OWI的基本原理 / 241

7.8.2 等待事件的含义 / 241

7.8.3 监控数据库的手段 / 243

7.9 利用时间模型监控数据库性能 / 244

第8章 SGA的性能调整和优化思路 / 245

8.1 BUFFER CACHE的内部结构 / 245

8.1.1 BUFFER HEADER / 247

8.1.2 HASH CHAIN和HASH BUCKET / 249

8.1.3 LATCH:CACHE BUFFERS CHAINS / 250

8.1.4 LATCH:CACHE BUFFERS LRU CHAIN / 252

8.1.5 FREE BUFFER WAITS / 255

8.1.6 BUFFER BUSY WAITS / 256

8.2 BUFFER CACHE的优化指标 / 257

8.2.1 BUFFER CACHE的命中率 / 258

8.2.2 AWR报告中BUFFER CACHE的一些争用指标 / 259

8.2.3 BUFFER CACHE大小的建议值 / 260

8.3 BUFFER CACHE的优化思路 / 261

8.3.1 BUFFER CACHE内存不足的优化思路 / 261

8.3.2 BUFFER CACHE的数据块争用的优化思路 / 263

8.3.3 其他有关BUFFER CACHE的优化思路 / 265

8.4 SHARED POOL的内部结构 / 265

8.4.1 堆管理 / 267

8.4.2 CHUNK / 267

8.4.3 FREE LIST / 268

8.4.4 LRU LIST / 271

8.4.5 RESERVED FREE LIST / 272

8.4.6 SHARED POOL的SUB POOL技术 / 273

8.4.7 关于SGA内存抖动 / 276

8.5 LIBRARY CACHE的内部结构及等待事件 / 279

8.5.1 LATCH:LIBRARY CACHE / 279

8.5.2 LIBRARY CACHE LOCK/PIN / 281

8.5.3 LIBRARY CACHE OBJECT / 283

8.6 浅析SQL的解析过程 / 287

8.6.1 软解析 / 287

8.6.2 硬解析 / 288

8.6.3 软软解析 / 290

8.7 ROW CACHE上的故障诊断方法 / 294

8.7.1 ROW CACHE的大小 / 294

8.7.2 ROW CACHE上的LATCH / 295

8.7.3 诊断案例:LATCH:ROW CACHE OBJECTS故障处理 / 297

8.7.4 建立测试环境重现问题 / 301

8.8 SHARED POOL上的优化思路 / 307

8.9 LOG BUFFER上的优化思路 / 309

8.9.1 LOG BUFFER的大小 / 309

8.9.2 浅析REDO WASTAGE / 310

8.9.3 LOG FILE SYNC等待事件 / 312

8.9.4 减少日志量的方法 / 314

第9章 数据库的物理备份与恢复 / 316

9.1 物理备份与恢复的基本概念 / 316

9.1.1 物理备份的基本概念 / 317

9.1.2 物理备份时的注意点 / 319

9.1.3 物理恢复的基本概念 / 320

9.1.4 物理恢复时的注意点 / 323

9.2 数据库的冷备份和恢复 / 323

9.2.1 冷备份数据库步骤 / 323

9.2.2 冷备份下的数据库恢复 / 325

9.3 数据库手动热备份和恢复 / 326

9.3.1 手动热备份 / 327

9.3.2 热备份下的数据库恢复 / 331

9.4 使用RMAN备份和恢复数据库 / 332

9.4.1 RMAN的结构 / 332

9.4.2 RMAN占用的内存 / 333

9.4.3 RMAN备份与恢复示例 / 334

9.5 数据库闪回 / 344

9.5.1 数据库闪回和普通闪回点 / 345

9.5.2 强制闪回点 / 348

第10章 物理Data Guard的配置与管理 / 350

10.1 Data Guard的原理 / 350

10.1.1 解析Data Guard原理图 / 351

10.1.2 Data Guard正常运行的前提 / 352

10.2 Data Guard的保护模式 / 353

10.2.1 最大保护模式 / 353

10.2.2 最大可用模式 / 353

10.2.3 最大性能模式 / 354

10.2.4 切换保护模式 / 354

10.3 配置物理Data Guard / 354

10.3.1 配置Data Guard简要流程 / 354

10.3.2 配置Data Guard相关参数 / 356

10.4 管理物理Data Guard / 357

10.4.1 配置Data Guard的注意点 / 357

10.4.2 管理Data Guard的注意点 / 358