《oracle 10g 管理指南中文培训PPT_les_08_memory课件》由会员分享,可在线阅读,更多相关《oracle 10g 管理指南中文培训PPT_les_08_memory课件(38页珍藏版)》请在金锄头文库上搜索。
1、监控和管理内存,课程目标,学完本课后,应能完成下列工作: 描述 SGA 中的内存组件 实施自动管理共享内存 手动配置 SGA 参数 配置自动 PGA 内存管理,内存管理:概览,DBA 必须将内存管理视为其工作中至关重要的部分,因为: 可用内存空间量有限 为某些类型的功能分配更多内存可提高整体性能 自动优化的内存分配通常是正确的配置,但特定环境甚至短期情况下可能需要特别注意。,Oracle 内存结构,Oracle 内存结构完全备注页,缓冲区高速缓存,缓冲区高速缓存备注页,使用多个缓冲区池,使用多个缓冲区池,CREATE INDEX cust_idx STORAGE (BUFFER_POOL KE
2、EP ); ALTER TABLE oe.customers STORAGE (BUFFER_POOL RECYCLE); ALTER INDEX oe.cust_lname_ix STORAGE (BUFFER_POOL KEEP);,共享池,大小通过 SHARED_POOL_SIZE 指定 库高速缓存包含语句文本、已进行语法分析的代码和执行计划 数据字典高速缓存包含数据字典表中各表、列和权限的定义 用户全局区 (UGA) 包含会话信息(如果使用 Oracle 共享服务器),大型池,可配置为 SGA 中一个单独的内存区 大小由 LARGE_POOL_SIZE 参数指定 用于在内存中为以下各项
3、存储数据: UGA 备份和还原操作 共享服务器的会话数据 并行查询消息传送,Java 池,可配置为 SGA 中一个单独的内存区 大小由 JAVA_POOL_SIZE 参数指定 用于将 JVM 中特定于会话的所有 Java 代码和数据存储在内存中,重做日志缓冲区,自动管理共享内存:概览,自动根据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误,自动管理共享内存的好处,DB_CACHE_SIZE SHARED_POOL_SIZE LARGE_POOL_SIZE JAVA_POOL_SIZE STREAMS_POOL_SIZE,ASMM 的工作原理,ASSM 以 MMAN 在后台捕
4、获的工作量信息为基础 MMAN 使用内存指导 将内存移到最迫切需要的地方 如果使用 SPFILE(推荐): 在关闭时保存组件大小 保存的值用于引导程序组件大小 无需再确定最佳值,使用 Database Control 配置 ASMM,手动配置 ASMM,要使某些内存组件具有最小大小,应手动配置这些组件大小: 如果自动计算得出的大小因某种原因不能满足您的需要 如果所需内存中存在 ASMM 未检测到的短期峰值或谷值 如果只想确保特定组件的最小内存量,手动配置 ASMM,自动优化的 SGA 参数的行为,未设置 SGA_TARGET 或将其设置为零时: 自动优化的参数行为正常 SHARED_POOL_
5、SIZE 可能需要根据早期数据库版本中使用的设置增加 SGA_TARGET 设置为非零值时: 自动优化的参数的默认值为零 指定的值用作最小大小,SELECT SUM(bytes)/1024/1024 size_mb FROM v$sgastat WHERE pool = shared pool;,SELECT component, current_size/1024/1024 size_mb FROM v$sga_dynamic_components;,手动优化的 SGA 参数的行为,有些组件不能自动优化 KEEP(保留)和 RECYCLE(循环)缓冲区高速缓存 具备多个块大小的高速缓存 日志
6、缓冲区 这些组件必须使用数据库参数手动配置 这些组件使用的内存会减少可用于自动优化 SGA 的内存量,使用 V$PARAMETER 视图,修改 SGA_TARGET 参数,SGA_TARGET 初始化参数: 是动态参数 最多可增大到 SGA_MAX_SIZE 可以减小,直到所有组件都达到其最小大小为止 更改 SGA_TARGET 的值只会影响自动调整大小的组件,禁用 ASMM,将 SGA_TARGET 设置为零可禁用自动优化功能 自动优化的参数设置为其当前大小 SGA 大小总体上不受影响,手动调整动态 SGA 参数的大小,对于自动优化的参数,手动调整大小会: 导致组件大小立即调整(如果新值大于
7、当前值) 更改最小大小(如果新值小于当前大小) 调整手动优化的参数的大小只会影响 SGA 的可调部分,程序全局区 (PGA),自动 PGA 内存管理,根据 PGA_AGGREGATE_TARGET 参数,动态调整专用于工作区的 PGA 内存量 有助于最大限度地提高所有内存密集型 SQL 操作的性能 默认情况下是启用的,PGA 管理资源,管理 PGA_AGGREGATE_TARGET 初始化参数的统计信息,如 PGA 高速缓存命中百分比 用于监视 PGA 工作区的视图包括: v$sql_workarea_histogram v$pgastat v$sql_workarea_active v$sq
8、l_workarea v$tempseg_usage 用于调整 PGA 工作区大小的视图有: v$pga_target_advice v$pga_target_advice_histogram,使用内存指导调整 SGA 的大小,使用内存指导调整 PGA 的大小,有效使用内存:准则,尽量使 SGA 适合物理内存 优化以实现高缓冲区高速缓存命中率,但要注意以下几点: 即使有效且必需的全表扫描也会降低命中率 可能存在因不必要地重复读取同一块而出现命中率虚升的情况 使用内存指导,有效使用内存:准则(仅包含备注的幻灯片),库高速缓存的内存优化准则,为开发人员制定格式使用约定,以便 SQL 语句符合高速缓存的要求。 使用绑定变量。 消除不必要的重复 SQL。 考虑使用 CURSOR_SHARING。 尽可能使用 PL/SQL。 缓存序列号。 连接库高速缓存中的对象。,库高速缓存的内存优化准则(仅包含备注的幻灯片),小结,在本课中,您应该已经学会如何: 描述 SGA 中的内存组件 实施自动管理共享内存 手动配置 SGA 参数 使用自动 PGA 内存管理,练习概览:使用 ASMM 纠正内存分配问题,本练习包含以下主题: 诊断内存分配问题 启用自动管理共享内存功能,