`

Oracle内存配置的基本原则

阅读更多
转自:http://www.oraclefans.cn/forum/showblog.jsp?rootid=9

经常有人问我:“我们的系统有XX内存,怎么分配内存合适?”我的回答是“不知道”。这是一个很无奈的答案,因为这个问题确实无解。每个系统都有不同的特性,如果使用一种通用的模式去分配内存,那么肯定是无法达到目的的。优化内存配置的时候,首先需要注意一些原则性的问题,详细的内存分配方法,在本章的使用STATSPACK进行系统优化章节将进行进一步的介绍。以下几点是笔者在实际工作中总结的内存优化的基本原则:
第一,无论如何分配内存,绝对不能让系统存在较多的换页情况,最好的选择是让系统基本不存在换页。
第二,使用文件系统并不能给ORACLE数据库的IO性能带来好处,因此尽量使用裸设备,如果使用裸设备,SGA和PGA使用内存的总量可以高达70%,甚至更高,但是SGA、PGA、Oracle后台进程、Oracle前台进程、应用进程占用内存的总量一般不要超过系统物理内存总量的90%。上述的参考值仅仅提供参考,不能机械地说SGA和PGA不能占用超过物理内存的60%或者70%,而是要根据你的系统的实际情况进行调整。如果你的系统有很大的物理内存,那么这些指标值还可以更高,只要遵循系统不产生换页操作的原则,那么哪怕你使用了95%甚至更多的物理内存,那么你的配置也是合理的。在海量内存下,如果配置了很大的SGA,那么会消耗大量的CPU资源,因此如果数据库实际不需要使用那么多内存,配置过大的SGA会导致CPU资源的浪费。切忌在解决内存问题的同时带来新的性能故障。
第三,在内存允许的情况下,设置足够大的PGA空间,尽量避免硬盘排序。硬盘排序会造成IO压力增大和相应速度大幅度下降,因此在有条件的情况下,提高内存排序比例可以提高系统的性能。如果排序操作很大,而且物理内存也有限,那么产生部分硬盘排序也是正常的。但是如果系统中存在大量的multi-pass的硬盘排序,那么就应该加大PGA空间了。
第四,在一般情况下,共享池和各个数据块缓冲池的命中率尽量保持在95%以上(OLAP应用除外)。由于每个应用都有不同的特点,命中率指标不一定能够完全表现出数据缓冲池的实际情况,但是在大多数情况下,这个命中率具有一定的代表性。如果在使用多缓冲的情况下,总体的命中率指标超过95%不能证明数据库缓冲池没有问题。通过检查DEFAULT、KEEP、NK CACHE等的命中率情况,往往能够发现在整体命中率达标的情况下,个别缓冲区性能不佳的问题。
第五、在 Oracle 9i 之前,过大的 shared pool 会导致大量的管理开销,因此不能设置过大的 shared pool 。 Oracle 9i 改进了共享池的管理,并且采用了 subpool 机制,使大型共享池的性能得到了很大的改善。笔者曾经在 9i 数据库上使用过超过 2G 的共享池,没有发现由于共享池过大导致�性能问题。在一些移动公司的大型BOSS系统中,超过5GB的共享池也是十分常见的,我曾经见过一个有300G内存的系统,共享池配置了10GB。另外要注意的是,如果已经使用了很大的共享池,还是出现共享池不足的问题,那么调整应用比加大共享池更为有效,另外如果由于某种原因,共享池存在碎片问题,SUBPOOL可能成为一种负面的东西,这个时候禁止使用SUBPOOL会带来好的效果。如果存在较为严重的共享池碎片,那么PX MSG POOL可能会导致经常出现共享池无法分配的情况出现,这种情况下,将PX MSG POOL在LARGE POOL中分配,可以减轻共享池不足的现象,另外减少SESSION_CACHED_CURSORS也会起到好的效果。在一般情况下,过大的共享池是不正常的。过大的共享池也会带来加大 CPU 开销等问题,因此在适当的情况下加大共享池的大小,而不要片面调大共享池,在有些情况下,将 SQL 和 PL/SQL 对象 PIN 到共享池中可能比扩大共享池具有更好的效果。
第六、对于log buffer的设置,过大的log buffer不能改善REDO LOG的性能。一般来说LOG BUFFER的大小在几百K到几兆之间。Oracle 9i的安装指南建议LOG BUFFER的大小是128K*CPU的数量。对于REDO LOG产生量特别大的系统,可以使用这个建议值的2-4倍。但是过大的LOG BUFFER是没有任何意义的。

第七、一般来说,多数据缓冲池的使用会对系统的性能提高有益。由于缓冲池采用HASH链的方式进行管理,因此对于数据缓冲池很大的系统,管理单个大型缓冲池的开销要远大于管理多个较小缓冲池的开销。使用KEEP池、RECYCLE池以及NK缓冲池可以分散数据的分布,减少由于各种竞争带来的缓冲池的额外开销。

第八、通过工作缓冲(通过*_area_size参数设置)来减少SQL执行过程中使用临时表空间,可以提高SQL的响应速度,减少系统IO。如果是Oracle 9i以前的版本,通过设置合理的工作缓冲区参数,可以实现上述目标。在Oracle 9i以后的版本,可以通过PGA自动管理来管理这些缓冲区,     PGA自动管理可以大大提高各种工作缓冲区的使用率,在最小程度占用系统物理内存的情况下,提高各类工作缓冲区的使用率。

第九、LARGE POOL是和SHARED POOL类似的缓冲池,不过只有特定的BUFFER才会在LARGE POOL里分配。第一种情况,在SHARED SERVER模式(旧版本称为MTS)下,UGA空间是从LARGE POOL中分配的;第二种情况,作为顺序文件IO的缓冲区,最典型的就是RMAN备份的时候分配LARGE POOL作为缓冲区,另外从ORACLE 8I开始,如果PARALLEL_AUTOMATIC_TUNING设置为TRUE,那么并行操作的缓冲区也从LARGE POOL里分配。如果没有使用SHARED SERVER,那么系统对LARGE POOL的使用量是很小的,保持50-80M的LARGE POOL就足够了

第十、JAVA POOL是另外一个缓冲池,主要是为ORACLE JVM提供缓冲。如果应用软件很少使用JAVA的存储过程等,那么JAVA POOL不需要设置很大。

第十一、过大的数据块缓冲会导致大量的BUFFER GET扫描,增加CPU的开销。同时维护大量的缓冲池也会带来额外的CPU开销。同样,过大的共享池会导致共享池管理开销的增大。因此片面追求提高命中率的做法是不足取的。按需分配各种缓冲区的大小,不要过度分配缓冲区是一个十分重要的原则。

第十二、9i以后支持的SGA动态调整技术可以为缓冲区动态调整提供了技术手段。DBA可以根据实际情况,随时对SGA的各种缓冲进行调整。

第十三、Oracle 10G提供了自动共享内存管理(ASMM),ASMM机制可以根据系统的状态自动调整共享内存的大小。如果系统不是很大,内存资源比较充分,而且DBA的管理水平不足的话,使用ASMM可以免除DBA这方面的维护工作,使系统保持在一个较好的运行水平上。如果系统种存在性能瓶颈,而且系统的内存资源存在竞争,那么就要慎用ASMM。
分享到:
评论

相关推荐

    Solaris系统平台Oracle数据库内存及其相关参数的使用原则.pdf

    Solaris系统平台Oracle数据库内存及其相关参数的使用原则.pdf

    oracle 官方培训

    Oracle数据库培训大纲(2天) 基本内容 时间安排(天) 课程内容要点 基础和管理 1天 Oracle结构组件 ...Oracle的内存优化 数据库配置与IO优化 诊断工具和等待事件 SQL优化原则和案例 Oracle 10g自动SQL调整

    Oracle数据库学习指南

    2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 ...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    1 Oracle 结构组件 目标 1-2 基本结构概述 1-3 Oracle 服务器 1-4 Oracle 实例 1-5 建立连接和创建会话 1-6 Oracle 数据库 1-7 物理结构 1-8 内存结构 1-9 系统全局区(SGA) 1-10 共享池 1-12 库缓存 1-13 数据字典...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    2.5.6设置环境变量 2.5.7配置SSH用户等效性 2.5.8配置时间同步服务 2.5.9安装cvuqdisk包 2.5.10 CVU验证安装环境 2.6创建ASM磁盘 2.6.1安装ASMLib驱动 2.6.2创建ASMLib磁盘 2.7部署RAC 2.7.1安装Grid ...

    ORACLE数据库 安装配置规范 (V2.0.1)

    5.3.3 表空间的参数设置原则 25 5.3.3.1 数据表空间设置 25 5.3.3.2 临时表空间的存储参数(Oracle9i/10g) 26 5.3.3.3 Undo/temp表空间的估算 26 5.4 其他文件设计 26 5.4.1 参数文件 27 5.4.1.1 参数文件命名规则 ...

    ORACLE性能调优遵循的基本原则

     数据库的硬件配置:CPU、内存、网络条件  1.CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求更高了,如果运行队列数目超过了...

    Oracle数据库设计指引全集

    1.1 数据库环境配置原则 1.1.1 操作系统环境: 对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle9i RAC的集群数据库的方法,集群节点数范围在2—...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  ...

    oracle数据库设计规范.doc

    3、数据库物理设计原则 3.1、数据库环境配置原则 操作系统环境: 对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负 载均衡能力要求较高的系统,可以采用Oracle9i RAC的集群数据库的方法,...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116...

    oracle开发使用手册.part2

    01-数据库管理的原则.PDF 02-逻辑数据库的设计和标准化.PDF 03-物理数据库的设计、硬件和相关问题 04-Oracle的解决方案.PDF 05-Oracle 7.x RDBMS.PDF 06-Oracle 实例结构.PDF 07-探讨Oracle 环境....

    oracle开发使用手册.part1

    01-数据库管理的原则.PDF 02-逻辑数据库的设计和标准化.PDF 03-物理数据库的设计、硬件和相关问题 04-Oracle的解决方案.PDF 05-Oracle 7.x RDBMS.PDF 06-Oracle 实例结构.PDF 07-探讨Oracle 环境....

    oracle开发使用手册.part3

    01-数据库管理的原则.PDF 02-逻辑数据库的设计和标准化.PDF 03-物理数据库的设计、硬件和相关问题 04-Oracle的解决方案.PDF 05-Oracle 7.x RDBMS.PDF 06-Oracle 实例结构.PDF 07-探讨Oracle 环境....

    Oracle数据库性能优化的艺术 (文平) 高清PDF扫描版

    第3~6章从物理数据库部署、数据库访问设置、硬件资源设定、存储空间和内存资源的使用、实例配置与缓存优化等多方面讲解了数据库系统在部署阶段的性能优化问题;第7章探讨了如何平衡数据库可靠性和性能之间的矛盾;第...

    Oracle培训讲稿

    oracle公司内部培训资料 大纲: Oracle结构组件 Oracle服务器入门 管理Oracle实例 建立数据库 ...Oracle的内存优化 数据库配置与IO优化 诊断工具和等待事件 SQL优化原则和案例 Oracle 10g自动SQL调整

    oracle10g课堂练习I(2)

    Oracle 内存结构 1-10 进程结构 1-12 Oracle 实例管理 1-13 服务器进程和数据库缓冲区高速缓存 1-14 物理数据库结构 1-15 表空间和数据文件 1-17 SYSTEM 和 SYSAUX 表空间 1-18 段、区和块 1-19 逻辑和物理...

Global site tag (gtag.js) - Google Analytics