| 作者 |
| Devraj,V.S. |
| 丛书名 |
| Oracle技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111082217 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书主要介绍在Oracle数据库服务器系统中实现高可用性的技术途径以及系统性能优化方法,从而为用户提供具有24×7 正常工作时间特点的系统。全书共八个部分,分别从系统需求、软硬件环境、数据库安装与维护、数据库疑难解决、高可用性解决方案、实用工具、Oracle 新特性等方面进行阐述。 本书讨论的是Oracle数据库系统管理与开发中的高级技巧,许多设计实例都来自作者的实际工作,因此具有很高的适用性。其特点是很少论及关于数据库的深奥理论,而注重于技术的实际应用。 本书的读者对象主要是公司的技术人员,包括DBA、数据库开发人员;但其内容对于各层次的读者,特别是那些从事数据库应用程序开发的人员同样具有深远的指导意义。 |
| 目录 |
| 目 录 贺辞 序 译者序 引言 前言 第一部分 简 介 第1章 确定自己的正常工作时间需求 1 1.1 理解24×7对于公司的重大作用 2 1.1.1 分析是否需要24×7正常工作时间的系统可用性 2 1.1.2 理解“数据库”中的各个组件 9 1.1.3 分析数据库系统中容易出错的部分以及出错时所产生的症状 11 1.2 实现一个“理想的”24×7系统 13 1.2.1 24×7数据库系统的共同目标 13 1.2.2 利用服务级协议管理系统需求 14 1.2.3 只有90%的系统可用性就意味着节省90%的系统开销 18 1.2.4 理解系统维护动作对于可用性的影响 19 1.3 半专业技术管理员与主管人技巧 21 1.3.1 24×7方式需要对操作管理实施的基本方法 21 1.3.2 在关键数据库访问时间创建“24×7小组” 21 1.3.3 维护一个在数据库系统出现问题时需要告知的扩展人员列表 23 1.3.4 尽量在数据库系统停工之前预先通知客户或者终端用户 24 1.4 小结 24 第2章 理解与处理紧急事件 25 2.1 什么是紧急事件 25 2.1.1 分类与罗列公司特定数据库环境下的所有可能紧急事件 26 2.1.2 如何应付紧急事件 27 2.2 小结 43 第二部分 理解系统环境 第3章 硬件配置 45 3.1 硬件配置简介 46 3.1.1 真正熟悉系统的构成组件 46 3.1.2 慎重选择磁盘阵列大小 57 3.1.3 不要在OLTP应用程序中使用预读Cache 58 3.1.4 不要依赖于写Cache来清除I/O热点 58 3.1.5 使用多级RAID 59 3.1.6 确保分条大小与操作系统和数据库的数据块大小一致 60 3.1.7 确保硬盘与磁带的I/O数据块大小相匹配 62 3.2 采用体系结构技术实现系统冗余和系统性能 63 3.2.1 分析哪些组件是“可热插拔”的 63 3.2.2 考虑实现基于簇的解决方案 64 3.2.3 除非是大规模的实现问题,否则避免使用MPP计算机 66 3.2.4 考虑使用NUMA计算机代替MPP计算机 69 3.2.5 向硬件提供商租借替代计算机 72 3.3 小结 72 第4章 操作系统 73 4.1 UNIX上的Oracle与Windows NT上的Oracle 74 4.2 内核与块大小 74 4.2.1 定制内核 75 4.2.2 了解操作系统的逻辑块大小与物理块大小 77 4.3 raw设备 78 4.3.1 熟悉raw设备及其作用 78 4.3.2 预先创建充足的raw划分 82 4.3.3 为raw划分选择多个标准大小 82 4.3.4 如果使用的是raw设备,应该将联机重作日志直接放置在这些设备上 83 4.3.5 不要使用硬盘的0柱面来创建raw划分 84 4.3.6 为所有的raw设备创建符号链接 85 4.3.7 了解其他文件系统选项 85 4.4 系统功能与瓶颈 86 4.4.1 预先确保任何时候都不会达到系统能力极限 86 4.4.2 将所有资源密集型应用程序分配到多个服务器上 89 4.4.3 建立非数据库服务器对CPU与内存的使用限制 89 4.4.4 不要为与Oracle相关的进程设置优先级 90 4.4.5 不要在数据库服务器上使用处理器仿射 91 4.4.6 在产品高峰期不要执行非产品作业 92 4.4.7 避免使用与Oracle进程竞争的资源密集型命令 92 4.4.8 经常检查内存泄漏 95 4.4.9 将交换区空间设置为物理内存的2~4倍大小 95 4.4.10 在最快的硬盘上分布交换区空间 96 4.4.11 判断操作系统是否能够对2GB之外的RAM进行寻址 96 4.4.12 如果可能,对物理内存中的共享内存区域加锁 97 4.4.13 理解逻辑驱动器与物理驱动器映射 99 4.4.14 在所有的产品中打开文件系统日志功能 100 4.4.15 周期性地检查空闲硬盘空间的可用性 100 4.4.16 保持文件系统与的简洁 100 4.4.17 维护一个后备根文件系统 101 4.4.18 尽可能启用大文件支持 101 4.4.19 周期性地查看重要的操作系统日志 101 4.4.20 利用自动化工具来监视系统瓶颈 102 4.5 小结 102 第5章 网络 103 5.1 管理网络 103 5.1.1 确保网络没有过载 104 5.1.2 频繁地ping关键主机 105 5.1.3 购买网络电缆分析器 106 5.1.4 不要在NFS的mount分区上创建Oracle数据文件 106 5.1.5 不要用数据库服务器作为NFS服务器 106 5.1.6 将网络配置为能够有效地使用子网 107 5.2 为网络配置定制SQL*Net与Net8 107 5.2.1 增加网络队列大小 107 5.2.2 关闭NAGEL算法 108 5.2.3 使SQL*Net/Net8报文大小与协议MTU能够最佳匹配 109 5.2.4 在整个公司里使用相同的服务器系列 114 5.3 半技术性管理员与公司主管技巧 114 5.4 小结 115 第6章 应用程序与数据 116 6.1 应用程序 116 6.1.1 熟悉应用程序 117 6.1.2 应用程序分类 120 6.1.3 代码优化 120 6.1.4 使应用程序独立于未来的计划改变 123 6.1.5 利用事务分割的方法来复制数据 126 6.1.6 对所有的会话关键型应用程序使用Pro*C或OCI 126 6.1.7 在所有会话关键型应用程序中实现失败恢复能力 127 6.1.8 熟悉各种自动失败恢复选项 132 6.1.9 将所有可变应用程序段的MAXEXTENTS设置为无穷大 142 6.1.10 加速数据加载过程 143 6.1.11 对应用程序源代码进行版本控制 150 6.1.12 有效地管理索引 151 6.1.13 在应用程序中不使用进程而使用线程 163 6.1.14 在应用程序中使用共享库 164 6.1.15 仔细进行物理数据库设计 165 6.1.16 与快速应用程序相关的技巧 173 6.2 数据 174 6.2.1 理解计划模型 174 6.2.2 数据分类 175 6.3 小结 177 第三部分 数据库安装和配置 第7章 安装、配置和定制数据库环境 179 7.1 服务器配置 180 7.1.1 遵守OFA标准 180 7.1.2 经常使用config.ora文件 183 7.1.3 使用crdb_SID.sql和crdb2_SID.sql创建脚本 183 7.1.4 确保有足够的磁盘空间以维持至少两周的跟踪文件和警告日志 184 7.1.5 设置数据库块大小时要考虑OS块大小和应用特点 184 7.1.6 确保将每次写的连续块数目设置大一些 186 7.1.7 对于Oracle7.X下的大量数据文件,允许CKPT 186 7.1.8 使用LOG_CHECKPOINT_TIMEOUT和/或LOG_CHECKPOINT_INTERVAL 来确保实例修复时间满足SLA中指定的标准 188 7.1.9 对于活动量很大的数据库创建多于3个的镜像联机重作日志组 188 7.1.10 适当放置重作日志使ARCH和LGWR相互之间不发生竞争 190 7.1.11 配置足够多的重作锁存器使竞争最小化 194 7.1.12 确保DBWR能够与数据库负载保持一致 197 7.1.13 根据段使用模式将缓冲区缓存划分为多个缓冲池 208 7.1.14 在数据库活动多时使用从属进程减轻I/O瓶颈 211 7.1.15 允许向量通知 213 7.1.16 建立专门的临时表空间 213 7.1.17 有效地建立排序区域 214 7.1.18 对于排序使用直接写操作 216 7.1.19 使用配置文件以避免失去控制的进程消耗系统资源 217 7.1.20 对于Cooked文件系统使用向量化读操作 217 7.1.21 使用Cooked文件系统时允许直接I/O 218 7.1.22 对于大量并行用户访问的情况使用ISM 218 7.1.23 对于大IPC吞吐量使用通知:等待驱动程序 219 7.1.24 在主存中预分页并且“加锁”SGA 219 7.1.25 只要可能,就对当前的数据库版本设置COMPATIBLE 220 7.1.26 安装SQL*Plus帮助 221 7.2 其他一些自解释的服务器配置技巧 221 7.3 SQL*Net/Net8配置 224 7.3.1 处理大量客户时使用Oracle Name 224 7.3.2 对SQL*Net/Net8 使用out-of-band break或者当out-of-band break 不可用时将轮询频率设得高一些 225 7.3.3 保持死连接检测为最小 226 7.3.4 通过SQL*Net和Net8有效地管理大量用户 227 7.3.5 预先生成专门的服务器进程 233 7.4 小结 234 第8章 数据库升级、降级、重组和移植 235 8.1 升级 235 8.2 降级 235 8.3 重组 236 8.4 移植 236 8.5 何时应该升级 236 8.5.1 在测试环境下练习移植 238 8.5.2 分析每一步并且构造加速移植的策略 238 8.5.3 从Oracle7升级到Oracle8/8i时要注意一些事情 243 8.5.4 提高装入/卸载性能的快速技巧 245 8.6 现实生活中的移植个案研究 249 8.7 小结 254 第9章 备份、恢复、存档策略和规程 255 9.1 备份 256 9.1.1 经过适当的分析后,选择至少两种备份方法 256 9.1.2 在低DML 活动期间执行热备份 257 9.1.3 不要同时将所有表空间置于热备份模式 259 9.1.4 尽可能先备份到磁盘,再备份到磁带 262 9.1.5 不要在操作系统热备份时对联机重作日志进行备份 264 9.1.6 考虑使用三重镜像 267 9.1.7 确保热备份命令被同步执行 269 9.1.8 定期检查备份日志文件 270 9.1.9 避免手工执行备份 270 9.1.10 确保在使用备份工具时不会影响系统的安全 271 9.1.11 使用RMAN时,定期对恢复进行重同步 271 9.1.12 确保备份策略适用于所有的Oracle文件类型 271 9.1.13 数据库发生变化之后立即备份控制文件 274 9.1.14 开始执行导出之前考虑好与导出相关的各个方面 276 9.1.15 为段间一致性形成导出组 276 9.1.16 为导出转储预备足够的空间 278 9.1.17 执行导出时使用直接路径而不是传统路径 278 9.1.18 确保所有备份导出转储的兼容性和可用性 280 9.1.19 系统时钟发生变化后立即备份 280 9.1.20 备份中和备份后检查数据库错误 281 9.1.21 备份时设置优化的I/O尺寸 282 9.1.22 使用Oracle8中增加的备份 282 9.2 存档 283 9.2.1 考虑特定环境是否需要ARCHIVELOG模式 283 9.2.2 以自动存档作为主要存档模式 286 9.2.3 为 ARCHIVE _LOG_DEST分配足够的空间 287 9.2.4 用“ALTER DATABASE ARCHIVELOG”使能存档功能 287 9.2.5 ARCHIVELOG模式使能后,立即执行一次完整备份 288 9.2.6 更充分地利用ARCHIVE LOG CURRENT 290 9.2.7 不要在存档日志序列中生成空洞 290 9.2.8 如果可能的话,在磁盘上保留存档日志的双拷贝 292 9.2.9 存档到脱机介质上时,创建更多的联机重作日志组 292 9.2.10 使用OPS时考虑存档的特殊要求 293 9.3 恢复 294 9.3.1 理解恢复的必要性并设法避免失败 294 9.3.2 理解影响恢复时间的因素 295 9.3.3 确保恢复时机与SLA MTTR规范的一致 299 9.3.4 为时间点恢复考虑另外的备份/恢复方法 299 9.3.5 确保检查点之间有足够的间隔并设置合理的重作日志尺寸防止恢复延迟 300 9.3.6 恢复的最小单元 302 9.3.7 恢复之前检查v$datafile 303 9.3.8 为恢复操作维持一个特殊的init.ora文件 303 9.3.9 RESELOGS可用作最后采用的措施 305 9.3.10 估计所有的UNRECOVERABLE和NOLOGGING操作 308 9.3.11 为恢复将所有的段和表空间进行分类 308 9.3.12 为加速备份和恢复,将没有写活动的表空间保持为READONLY 310 9.3.13 恢复期间设置AUTORECOVERY 310 9.4 给半专门的管理人和监督人准备的技巧 311 9.4.1 经常测试备份以保证有效恢复 311 9.4.2 确保数据库管理员能够熟练地执行恢复操作 311 9.4.3 创建数据库恢复小组 311 9.4.4 记录所有数据库结构上的变化 312 9.5 小结 312 第10章 启动和关闭过程 313 10.1 启动与关闭过程 313 10.1.1 将数据库的启动和关闭自动化 313 10.1.2 使用OEM启动/关闭多个数据库 317 10.1.3 对于紧急的数据库反应需求,考虑采用“关闭放弃” 318 10.1.4 执行shutdown abort前先执行ALTER SYSTEM CHECKPOINT 321 10.2 小结 321 第四部分 数据库维护 第11章 一般维护 323 11.1 主动维护和按需维护 323 11.1.1 在所有可能级上实现健壮的安全性 325 11.1.2 理解“ORA-1555:Snapshot too old ”错误并采取步骤避免它 329 11.1.3 理解、防止并解决门闩锁和排队锁的竞争 337 11.1.4 熟悉不同的等待事件并采取步骤减少等待事件 341 11.1.5 周期性地监测并解决锁冲突 352 11.1.6 监测共享池的效率并在需要时调节 356 11.2 通用维护例程需要注意的其他重要问题 364 11.3 小结 364 第12章 空间和增长管理 365 12.1 理解并管理空间及增长 365 12.1.1 理解影响段增长的商业动因 366 12.1.2 理解空间消耗的单位 366 12.1.3 理解构成数据库的各种段 370 12.1.4 熟悉由于空间管理不足而引发的错误及其影响 383 12.1.5 对所有的应用程序表空间和SYSTEM表空间使能自动扩展功能 399 12.1.6 使用标准化文件大小 399 12.1.7 在标准的文件大小中分配数据文件头块 400 12.1.8 为每个段类型使用标准的存储语句以减少分段,使空间使用最优 400 12.1.9 设置INITIAL和NEXT时要考虑DB_BLOCK_SIZE的影响 403 12.1.10 最优地设置PCTINCREASE来减少分段 404 12.1.11 理解空闲表并进行最优的设置来减少锁竞争 406 12.1.12 周期性地合并应用程序表空间 409 12.1.13 理解错误位置标记的影响 410 12.1.14 周期性地释放未被使用的块 413 12.1.15 避免显式地丢弃数据文件 415 12.1.16 从未预期的紧急空间需求学习“表空间改组” 415 12.1.17 在DSS环境下不要盲目接受不受限制的段增长 417 12.2 小结 418 第五部分 难题解决 第13章 警告日志与跟踪文件 419 13.1 警告日志 419 13.1.1 尽可能保持对警告日志的跟踪 420 13.1.2 熟悉警告日志中的事件或消息 421 13.1.3 编辑重要的错误信息使之仅被列出一次 435 13.1.4 每两个星期到三个月对警告日志进行存档整理一次 435 13.2 跟踪文件 437 13.2.1 了解跟踪文件中可以获得的信息 437 13.2.2 了解如何确认跟踪文件所述的具体事件或会话 438 13.2.3 了解引起跟踪文件产生的原因 439 13.3 跟踪 446 13.4 使用SQL*Net和Net8跟踪 446 13.5 PL/SQL跟踪 451 13.6 ODBC跟踪 454 13.7 核心转储文件 454 13.8 Oracle调试工具 455 13.9 小结 462 第14章 标识并解决数据库中断 463 14.1 了解、预防并修复中断 463 14.1.1 了解中断及其出现方式 463 14.1.2 提前检测介质中断 477 14.1.3 了解如何防止介质中断 477 14.1.4 了解处理内存中断的技术 478 14.1.5 熟悉处理逻辑中断的技术 480 14.1.6 标识并列出所有被怀疑发生中断的部件 483 14.1.7 标识并列出用户环境下预防、检测和修复中断的措施 483 14.1.8 获取涉及中断的相关信息 487 14.1.9 培训管理员处理中断的能力 488 14.2 小结 488 第六部分 高可用性解决方案 第15章 备用方法 489 15.1 Oracle 提供的备用方法 489 15.1.1 利用备用数据库进行系统灾难修复 489 15.1.2 当不特别要求24×7连续工作时考虑使用备用实例 497 15.1.3 利用多个解决方案构造更加有效的方案 504 15.2 在例行维护和紧急情况下的可用性策略问题 505 15.2.1 使用定制备用数据库评估 507 15.2.2 考虑利用备用表处理段级故障 519 15.2.3 本章讨论的定制解决方案相关注意事项 530 15.3 小结 531 第16章 Oracle并行服务器 532 16.1 理解和管理OPS环境 532 16.1.1 理解什么是OPS以及它是如何提高可用性的 532 16.1.2 理解、检测、删除错误的ping 540 16.1.3 OPS环境下在使用应用程序之前对它们进行划分 544 16.2 小结 546 第17章 高级复制 547 17.1 理解AR 547 17.1.1 熟悉AR操作和基本功能 547 17.1.2 理解可以实施的AR高可用性选项 553 17.1.3 AR体系结构配置方式 553 17.2 小结 558 第18章 第三方HA解决方案 559 18.1 基于硬件/OS的产品 559 18.1.1 为灾难修复目的考虑使用EMC SRDF 559 18.1.2 利用EMC TIMEFINDER 投资回报进行评估 564 18.2 基于数据库的产品 567 第七部分 构建实际的高可用性系统 第19章 24×7工具箱 575 19.1 利用脚本报告问题 575 19.1.1 通过定期运行轮询脚本监控特定的故障 575 19.1.2 当调用PL/SQL时,要熟悉应用失败恢复技术 585 19.2 小结 587 第八部分 新 特 性 第20章 Oracle8i中的新HA特性 589 20.1 面向维护的特性 589 20.1.1 为了快速移动数据子集而考虑使用可传输的表空间 589 20.1.2 为了避免碎片而考虑使用本地管理的表空间 590 20.1.3 熟悉新改变的管理特性 591 20.1.4 联机创建、重建和消除索引碎片 592 20.1.5 熟悉对没有划分的表进行重组的特性 592 20.1.6 如果需要的话,可以很容易地丢弃列 593 20.1.7 提高连续工作时间的划分特性的增强 593 20.2 难题解决特性 594 20.3 备份和面向恢复的特性 594 20.3.1 利用一些方法方便并且加速RMAN备份 595 20.3.2 控制和加速恢复时间 595 20.4 其他HA特性 596 20.4.1 使用新的监听者失败恢复和负载平衡服务 596 20.4.2 熟悉LogMiner功能 596 20.4.3 去掉“胖”OS开销 597 20.5 小结 598 |