本书帮助读者学习如何正确调整和配置Oracle数据库。\r\n 全书分为四个部分,共19章。第一部分“实例调整”,包括Oracle系统调整的基础知识、使用配置参数、调整实例、相关性能特性等话题。第二部分包括第8到第10章,介绍了与Oracle性能调整相关的硬件话题。第三部分是第11章到第15章,详细讲解了应用程序和SQL语句性能调整的方法,具有很强的实用性。第四部分包括应用程序群集、备份和恢复调整、灾难恢复和Oracle网络性能等高级话题。\r\n 本书适合Oracle数据库系统的管理员和开发人员阅读。
第一部分 实例调整\r\n\r\n第1章 Oracle系统调整基础\r\n\r\n1.1 系统调整的基本概念\r\n1.1.1 系统调整的含义\r\n1.1.2 确定系统是否需要调整\r\n1.1.3 确定何时停止调整系统\r\n1.2 调整目标\r\n1.2.1 为提高系统吞吐量的调整\r\n1.2.2 为缩短系统响应时间的调整\r\n1.2.3 为支持众多用户的调整\r\n1.2.4 为提高系统容错能力的调整\r\n1.2.5 为缩短数据加载时间的调整\r\n1.3 系统调整方法\r\n1.3.1 分析问题\r\n1.3.2 确定问题\r\n1.3.3 确定解决方案和设定系统调整目标\r\n1.3.4 确定系统调整目标\r\n1.3.5 测试解决方案\r\n1.3.6 分析调整结果\r\n1.4 影响Oracle服务器性能的因素\r\n1.4.1 系统瓶颈\r\n1.4.2 调整硬件资源\r\n1.4.3 其他调整因素\r\n1.4.4 系统限制\r\n1.5 设计系统软硬件规模和规划系统能力\r\n1.5.1 设计系统软硬件规模和规划系统能力之比较\r\n1.5.2 设计系统软硬件规模的步骤\r\n1.5.3 规划系统能力的步骤\r\n1.6 总结\r\n\r\n第2章 使用Oracle的配置参数\r\n\r\n2.1 启动Oracle实例\r\n2.1.1 连接Oracle实例\r\n2.1.2 使用STARTUP命令启动实例\r\n2.1.3 启动Oracle实例\r\n2.1.4 确定实例启动过程中的故障\r\n2.1.5 关闭Oracle实例\r\n2.2 初始化参数\r\n2.2.1 与实例调整有关的参数\r\n2.2.2 与限制系统资源有关的参数\r\n2.3 总结\r\n\r\n第3章 调整Oracle实例\r\n\r\n3.1 本章使用的初始化参数\r\n3.1.1 SGA参数\r\n3.1.2 程序全局区和用户内存参数\r\n3.1.3 Undo参数\r\n3.1.4 混合参数\r\n3.2 调整SGA\r\n3.2.1 调整操作系统\r\n3.2.2 调整私有SQL区和PL/SQL区\r\n3.2.3 调整共享内存池\r\n3.2.4 调整数据库缓冲区\r\n3.3 管理回滚段和Undo信息\r\n3.3.1 在SMU模式下调整Undo\r\n3.3.2 在RBU模式下调整Undo\r\n3.4 管理重做日志缓冲区\r\n3.4.1 重做日志缓冲区的竞争\r\n3.4.2 调整检查点\r\n3.4.3 优化系统的排序操作\r\n3.4.4 调整排序区域\r\n3.4.5 调整排序区域的预留尺寸\r\n3.4.6 调整临时表空间\r\n3.5 降低空闲数据块列表竞争\r\n3.6 总结\r\n\r\n第4章 与提高性能有关的特性\r\n\r\n4.1 本章需要使用的参数\r\n4.2 索引\r\n4.2.1 与索引有关的概念\r\n4.2.2 索引类型\r\n4.2.3 B树索引\r\n4.2.4 Oracle位图索引的工作方式\r\n4.2.5 选择创建索引的字段\r\n4.2.6 如何创建索引\r\n4.3 Oracle的并行执行特性\r\n4.3.1 并行查询处理\r\n4.3.2 并行创建索引\r\n4.3.3 并行加载数据\r\n4.3.4 并行恢复\r\n4.4 簇\r\n4.5 散列簇\r\n4.6 同时读取多块数据\r\n4.7 分区\r\n4.7.1 分区的概念\r\n4.7.2 按数据范围进行分区\r\n4.7.3 List分区方案\r\n4.7.4 散列分区方案\r\n4.7.5 复合分区方案\r\n4.7.6 分区的好处\r\n4.7.7 分区和索引\r\n4.8 稳定性计划\r\n4.9 多线程服务器\r\n4.9.1 专用服务器进程\r\n4.9.2 多线程服务器进程\r\n4.9.3 调整多线程服务器进程\r\n4.10 总结\r\n\r\n第5章 调整系统负载\r\n\r\n5.1 本章使用的一些参数\r\n5.2 使用资源使用者组\r\n5.2.1 资源使用者组概述\r\n5.2.2 配置资源使用者组\r\n5.2.3 监控资源使用者组\r\n5.3 调整用户资源\r\n5.4 重新部署不同系统的功能\r\n5.4.1 部署历史报表\r\n5.4.2 部署在线报表\r\n5.4.3 支持分布式系统的应用程序\r\n5.5 总结\r\n\r\n第6章 Oracle性能视图\r\n\r\n6.1 V$视图和G$视图的比较\r\n6.2 动态性能视图概述\r\n6.3 使用动态性能视图\r\n6.3.1 使用查询语句访问动态性能视图\r\n6.3.2 使用UTLBSTAT/UTLESTAT工具和Statpack工具\r\n6.3.3 使用性能监控工具\r\n6.4 总结\r\n\r\n第7章 使用UTLBSTAT和UTLESTAT\r\n\r\n7.1 UTLBSTAT和UTLESTAT\r\n7.1.1 运行UTLBSTAT和UTLESTAT\r\n7.1.2 UTLBSTAT和UTLESTAT的输出文件\r\n7.1.3 理解BSTAT和ESTAT的统计数据\r\n7.2 Statspack\r\n7.2.1 安装Statspack\r\n7.2.2 运行Statspack\r\n7.2.3 管理Statspack\r\n7.2.4 Statspack的输出结果\r\n7.3 总结\r\n\r\n第二部分 Oracle硬件话题\r\n\r\n第8章 Oracle和系统硬件\r\n\r\n8.1 本章使用的参数\r\n8.2 Oracle实例概述\r\n8.2.1 Oracle内存结构\r\n8.2.2 Oracle实例中的进程概述\r\n8.3 计算机系统结构概述\r\n8.3.1 CPU和高速缓冲区\r\n8.3.2 CPU的设计\r\n8.3.3 系统内存结构\r\n8.3.4 设计数据总线\r\n8.3.5 I/O总线\r\n8.3.6 网络\r\n8.3.7 是否使用群集\r\n8.4 总结\r\n\r\n第9章 I/O基本概念\r\n\r\n9.1 磁盘驱动器\r\n9.1.1 I/O子系统概述\r\n9.1.2 磁盘驱动器的性能\r\n9.1.3 顺序I/O操作的性能\r\n9.1.4 随机I/O操作的性能\r\n9.1.5 关于驱动器I/O的更多考虑\r\n9.2 RAID磁盘子系统\r\n9.2.1 硬件RAID和软件RAID的比较\r\n9.2.2 磁盘分片\r\n9.2.3 RAID0\r\n9.2.4 RAID1\r\n9.2.5 RAID10\r\n9.2.6 RAID2\r\n9.2.7 RAID3\r\n9.2.8 RAID4\r\n9.2.9 RAID5\r\n9.2.10 奇偶校验概述\r\n9.2.11 RAID性能概述\r\n9.2.12 不同RAID级别之间性能的比较\r\n9.3 RAID控制器性能特征\r\n9.3.1 电梯排序法\r\n9.3.2 磁盘控制器缓冲区\r\n9.3.3 内外部RAID系统之间的比较\r\n9.4 SAN系统\r\n9.5 NAS系统\r\n9.6 总结\r\n\r\n第10章 Oracle和I/O\r\n\r\n10.1 本章使用到的参数\r\n10.2 Oracle对I/O的依赖性\r\n10.2.1 读操作延迟的重要性\r\n10.2.2 写操作延迟\r\n10.2.3 容错\r\n10.3 为Oracle配置I/O子系统\r\n10.3.1 性能、容错能力和经济性\r\n10.3.2 保护读者的投资\r\n10.4 调整I/O\r\n10.4.1 理解磁盘竞争\r\n10.4.2 识别磁盘竞争问题\r\n10.4.3 解决磁盘竞争问题\r\n10.5 降低不必要的I/O开销\r\n10.5.1 迁移和链接数据行\r\n10.5.2 动态扩展\r\n10.5.3 PCTFREE和PCTUSED命令选项\r\n10.5.4 关于降低I/O操作技术的回顾\r\n10.5.5 块尺寸\r\n10.5.6 使用多种块尺寸\r\n10.6 磁盘碎片\r\n10.7 总结\r\n\r\n第三部分 应用程序和SQL语句调整\r\n\r\n第11章 使用EXPLAIN PLAN和SQL Trace\r\n\r\n11.1 SQL Trace\r\n11.1.1 初始化SQL Trace\r\n11.1.2 控制SQL Trace\r\n11.1.3 SQL Trace的功能\r\n11.1.4 TKPROF的功能\r\n11.1.5 分析SQL Trace的输出结果\r\n11.2 EXPLAIN PLAN命令\r\n11.2.1 初始化EXPLAIN PLAN\r\n11.2.2 启动EXPLAIN PLAN\r\n11.2.3 从EXPLAIN PLAN命令的输出结果中提取信息\r\n11.2.4 跟踪应用程序\r\n11.3 总结\r\n\r\n第12章 调整索引\r\n\r\n12.1 本章使用的参数\r\n12.2 索引的类型\r\n12.3 使用B树索引\r\n12.3.1 创建索引的对象\r\n12.3.2 维护索引\r\n12.4 IOT\r\n12.5 位图索引\r\n12.6 基于函数的索引\r\n12.7 使用线索\r\n12.8 监控和分析索引\r\n12.9 总结\r\n\r\n第13章 Oracle优化器\r\n\r\n13.1 理解Oracle优化器\r\n13.1.1 Oracle优化器的工作方式\r\n13.1.2 优化器初始化参数\r\n13.1.3 优化方法\r\n13.2 使用DBMS_STATS包\r\n13.2.1 创建存放统计数据的表\r\n13.2.2 收集统计数据\r\n13.2.3 删除统计数据\r\n13.2.4 恢复统计数据\r\n13.2.5 DBMS_STATS包中的其他函数\r\n13.2.6 使用统计数据\r\n13.3 使用ANALYZE命令\r\n13.3.1 如何运行ANALYZE命令\r\n13.3.2 数据字典统计数据\r\n13.4 事务处理\r\n13.5 SQL语句的执行\r\n13.5.1 创建游标\r\n13.5.2 解析SQL语句\r\n13.5.3 执行查询\r\n13.5.4 绑定变量\r\n13.5.5 执行SQL语句\r\n13.5.6 并行化SQL语句的执行\r\n13.5.7 向用户返回查询返回的数据记录\r\n13.6 分析SQL语句\r\n13.7 设计新的SQL语句\r\n13.8 使用线索\r\n13.9 总结\r\n\r\n第14章 调整SQL语句\r\n\r\n14.1 优化SQL语句\r\n14.2 如何识别调整不良的SQL语句\r\n14.3 连接类型\r\n14.3.1 嵌套循环连接\r\n14.3.2 合并连接\r\n14.3.3 散列连接\r\n14.4 调整SQL语句\r\n14.4.1 调整已有应用程序\r\n14.4.2 设计新应用程序\r\n14.5 总结\r\n\r\n第15章 使用线索\r\n\r\n15.1 实现线索\r\n15.1.1 线索的语法\r\n15.1.2 线索错误\r\n15.1.3 使用多条线索\r\n15.2 线索\r\n15.2.1 优化方法\r\n15.2.2 关于访问方法的线索\r\n15.2.3 与表的连接顺序有关的线索\r\n15.2.4 与连接操作有关的线索\r\n15.2.5 与并行查询选项有关的线索\r\n15.2.6 有关查询转换方式的线索\r\n15.2.7 其他线索\r\n15.3 总结\r\n\r\n第四部分 高级话题\r\n\r\n第16章 Oracle9i实时应用程序群集\r\n\r\n16.1 RAC概述\r\n16.1.1 计算机系统\r\n16.1.2 共享磁盘子系统\r\n16.1.3 服务器连接\r\n16.1.4 锁定数据\r\n16.1.5 配置群集\r\n16.2 RAC的适用条件\r\n16.3 调整RAC\r\n16.3.1 配置和规模\r\n16.3.2 实例和锁调整\r\n16.3.3 应用程序调整\r\n16.4 总结\r\n\r\n第17章 备份和恢复调整\r\n\r\n17.1 本章使用的参数\r\n17.2 Oracle运行方式回顾\r\n17.2.1 备份过程\r\n17.2.2 恢复过程\r\n17.3 Oracle备份过程的特征\r\n17.3.1 使用用户管理备份方法对系统进行冷(离线)备份\r\n17.3.2 使用用户管理备份方法对系统进行热(在线)备份\r\n17.3.3 使用RMAN工具对系统进行热(在线)备份\r\n17.3.4 使用SAN提供的功能对系统进行热(在线)备份\r\n17.3.5 使用用户管理备份方式时的数据访问模式\r\n17.3.6 使用RMAN备份时的数据访问模式\r\n17.3.7 备份时的系统负载\r\n17.3.8 备份目标\r\n17.4 系统设计的考虑\r\n17.4.1 数据库冷备份\r\n17.4.2 数据库热备份\r\n17.4.3 使用用户管理备份方法时的调整考虑\r\n17.4.4 使用RMAN备份工具的调整考虑\r\n17.5 为提高备份操作的性能而提高系统性能\r\n17.5.1 提高CPU的性能\r\n17.5.2 提高系统的I/O性能\r\n17.5.3 提高网络性能\r\n17.5.4 将备份划分成不同的部分\r\n17.6 验证备份操作的性能\r\n17.6.1 应当测试RDBMS哪些方面的性能\r\n17.6.2 应当测试操作系统哪些方面的性能\r\n17.7 总结\r\n\r\n第18章 创建高性能的灾难恢复系统\r\n\r\n18.1 本章使用的初始化参数\r\n18.2 为什么要制定灾难恢复计划\r\n18.3 与灾难恢复有关的概念\r\n18.3.1 远程镜像\r\n18.3.2 Oracle9i数据卫士\r\n18.4 制定灾难恢复计划\r\n18.4.1 制定灾难恢复计划的步骤\r\n18.4.2 将灾难恢复计划形成文档\r\n18.4.3 实施灾难恢复计划的方法\r\n18.5 从灾难事件中恢复系统\r\n18.6 调整备份系统\r\n18.7 总结\r\n\r\n第19章 Oracle的网络性能\r\n\r\n19.1 网络体系结构\r\n19.1.1 硬件层\r\n19.1.2 网络协议\r\n19.2 调整网络部件\r\n19.2.1 软件调整\r\n19.2.2 网络设计\r\n19.3 总结
近些年来, 计算机系统的运算速度越来越快, 同时, 内存和磁盘等存储设备不仅容量越来越大, 价格也越来越便宜. 因此, 现在我们可采用价格相对低廉的方法存储海量信息. 正是存储技术的进步使得用户能提高系统存储及处理的数据量. 因此, 只是在系统中简单堆砌更多硬件对解决系统性能问题是无济于事的. 为了优化系统性能, 我们必须对系统进行深入分析. 合理规划系统规模和正确配置系统参数.
对系统性能工程师而言, 信息产业面临的问题之一是大容量磁盘的使用. 以前, 为了存储数据可能需要配置10个磁盘, 而现在存储同样的数据只需一个磁盘就足够了. 很多人都不知道一个大容量磁盘的速度只有10个小容量磁盘速度的1/10. 本书将向读者介绍和解释这类概念.
写作本书的指导思想之一是性能调整必须从整体出发. 如果对系统的调整只是集中于某一方面, 那么就不可能达到优化系统性能的目的. 为了优化系统性能, 必须分析应用程序. Oracle实例. 操作系统. 系统硬件和I/O子系统等等. 本书将向读者介绍包括从SQL语句到磁盘运行方式在内的Oracle系统各个方面的知识.
我们希望本书不仅成为读者学习Oracle性能调整的参考指南, 还希望本书能为读者的实际调整工作提供参考.
如何使用本书
为了增加本书的可读性, 我们在一些章节中加入了笔者实际工作中遇到的相关问题及解决方案. 我们希望读者在调整系统性能时能从本书中发现一些令人兴奋的东西. 工作在数据库性能领域的一些同仁们不断突破技术屏障并使系统实现了前所未有的高性能. 但是, 只有当影响系统性能的所有因素都按预定方式起作用时, 系统才可能实现理想状态下的性能, 否则是不可能成功的.
我们希望读者通过阅读本书, 能对系统中各个部件相互协作形成有机整体的工作方式有一个基本的了解. 只有具备了这样的基础知识后, 读者才能处理Oracle系统中的性能问题, 知道要查明什么问题以及如何解决问题. 系统性能问题并非都是千篇一律的, 因而解决方案也各不相同. 对读者而言, 面临具体问题时知道需要什么信息和可能的解决方案等一些基本知识是非常重要的.
如果认真完成了本书中的练习, 那么你就能分析性能问题. 设计解决方案. 测试解决方案和理解解决方案产生的结果. 我们希望本书能给初学者灌输一个关于Oracle性能调整的整体概念, 而经验丰富的专业人士能从本书中获得关于Oracle性能调整的新思路. 通过使用这些新知识, 你将发现即使是最复杂阶性能问题, 也可将其分解为简单的易于管理和实现的任务.