`
trophy
  • 浏览: 179912 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle内存管理(转)

阅读更多

Oracle 的 9i/10g 中已经对内存管理逐步做了很大的简化,11g 则更进一步,引入了一个新的概念自动化内存管理(Automatic Memory Management,AMM) . 如果 DBA 真的想偷懒的话,只需要设定两个参数就可以把烦心的事情都交给 Oracle 折腾了(只要 DBA 足够心宽)。PGA 与 SGA 一起搞定。这两个参数分别是:

MEMORY_TARGET--操作系统的角度上 Oracle 所能使用的最大内存值。动态参数
MEMORY_MAX_TARGET--MEMORY_TARGET所能设定的最大值。非动态可调。

Tip: 如果使用的是 pfile,设定了 MEMORY_TARGET 而没有指定 MEMORY_MAX_TARGET 的值,则实例启动后 MEMORY_MAX_TARGET 的值与 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而没有指定 MEMORY_TARGET ,实例启动后 MEMORY_TARGET 为 0 。

AMM 在后台会启动一个内存管理(Memory Manager, mman)进程。

因为 AMM 的引入,Oracle 内存管理更加灵活多样。 组合出来有 5 种内存管理形式.

  • 自动内存管理
  • 自动共享内存管理
  • 手工共享内存管理
  • 自动 PGA 管理
  • 手动 PGA 管理

 

1) 自动内存管理

11g引入。如下
SQL> show parameters target 
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target                   integer                0
db_flashback_retention_target        integer                1440
fast_start_io_target                 integer                0
fast_start_mttr_target               integer                0
memory_max_target                    big integer            1216M
memory_target                        big integer            1216M
pga_aggregate_target                 big integer            0
sga_target                           big integer            0
要注意到 SGA_TARGET 和 pga_aggregate_target 都为 0 。

2.自动共享内存管理(Automatic Shared Memory Management, ASMM)

这是 10g 引入的管理方式,要使用这种方式,需要设置初始化参数 MEMORY_TARGET=0 ,然后显式的指定 SGA_TARGET 的值。
SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL> 

这两个参数的修改是有严格顺序的,如果不遵守倒也没问题--Oracle 会报告错误。

3.手工共享内存管理

这个又更加原始了一些。因为原始,所以新的初始化参数 SGA_TARGET 与 MEMORY_TARGET 都要设置为 0. 然后手工设定 share_pool_size 、db_cache_size 等 sga 参数。要注意RESULT_CACHE_SIZE 参数是 11g 新引入的,用来缓存 SQL 结果。

4.自动 PGA 内存管理

如果使用 AMM , 则对 PGA 不用操心。如果要做到精细控制而切换到自动 PGA 内存管理模式,需要设定WORKAREA_SIZE_POLICY = AUTO(默认即为 AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精确控制PGA,则 WORKAREA_SIZE_POLICY = MANUAL .

5.手动 PGA 管理

前提是 WORKAREA_SIZE_POLICY = manual ,然后分别指定 SORT_AREA_SIZE 等 PGA 相关的参数。估计现在没有人干这个吃力不讨好的事情了。这个模式大可以忽略。

AMM 的限制

如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

分享到:
评论

相关推荐

    oracle内存管理,深入浅出oracle内存管理,盖国强oracleppt

    在深入理解Oracle内存管理的过程中,我们可以从以下几个方面进行探讨: 1. **内部存储与外部存储**:内部存储主要指的是Oracle实例内存结构,包括SGA(System Global Area)和PGA(Program Global Area)。SGA是...

    Oracle内存管理(深入解析)

    总的来说,Oracle内存管理涉及到多个层面,包括进程私有内存(PGA)和全局共享内存(SGA)的配置、使用和优化。深入理解这些概念并掌握相应的监控和调整技巧,是确保Oracle数据库高效稳定运行的基础。通过持续的学习...

    ORACLE自动内存管理和存储调整

    ORACLE 自动内存管理和存储调整 ORACLE 自动内存管理和存储调整是 ORACLE 数据库中的一种重要配置,它可以根据系统的实际情况自动调整内存和存储的使用,以提高数据库的性能和效率。本文将详细介绍 ORACLE 自动内存...

    Oracle内存管理

    Oracle内存管理是数据库系统中的关键组成部分,它直接影响到数据库的性能和稳定性。Oracle数据库使用复杂的内存结构来存储和处理数据,这些内存结构包括共享池、数据缓冲区缓存、PGA(程序全局区)和SGA(系统全局区...

    Oracle内存分配与调整--大牛冯春培的一篇文章

    冯春培作为一位经验丰富的Oracle专家,他的这篇文章清晰而深入地介绍了Oracle内存管理的关键方面,特别是系统全局区(SGA)和进程全局区(PGA)的配置与优化。 #### 二、Oracle内存架构概览 ##### 2.1 SGA与PGA的区别 ...

    Oracle JDBC内存管理

    Oracle JDBC内存管理主要关注的是Oracle数据库的Java数据库连接(JDBC)驱动程序如何处理内存,以达到性能优化和潜在的内存消耗之间的平衡。在Oracle 10g及更高版本中,这种平衡策略的一个显著变化是驱动程序架构的...

    oracle内存全面分析

    Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,其性能和稳定性在很大程度上取决于内存管理的效率。本文将深入探讨Oracle内存结构,包括SGA(System Global Area)和PGA(Program Global Area),...

    oracle内存资源分配

    "Oracle内存资源分配"是数据库管理员必须掌握的关键技能,它涉及到Oracle数据库系统的Shared Global Area (SGA) 和Program Global Area (PGA) 的配置与调整。 首先,SGA是Oracle数据库运行时共享内存的主要区域,它...

    Oracle 内存全面分析 PDF文档

    理解Oracle内存管理不仅有助于提高数据库的运行效率,还能确保系统的稳定性和可靠性。通过对SGA和PGA的深入学习,DBA可以更好地诊断和解决性能问题,从而提升整体的业务运行速度。因此,这份"Oracle 内存全面分析"的...

    操作系统与Oracle内存管理比较.pdf

    【操作系统与Oracle内存管理比较】 本文探讨了操作系统与Oracle数据库在内存管理上的异同,作者王润中通过对比分析,揭示了两者在内存利用和进程管理上的策略。 1. 操作系统的内存管理 操作系统的内存管理主要...

    Oracle内存结构全面分析

    内存管理策略涉及如何有效地分配和回收这些内存区域,以确保Oracle的高效运行。例如,Oracle使用LRU(Least Recently Used)算法来管理Buffer Cache中的数据块,将最近最少使用的数据块替换出内存。而SQL语句的解析...

    Oracle自动内存管理ASMM

    ### Oracle自动内存管理ASMM详解 #### 一、引言 随着Oracle数据库技术的发展,内存管理变得越来越自动化和智能化。其中,“Oracle自动内存管理(Automatic Shared Memory Management, ASMM)”是一个重要的里程碑...

    Oracle内存管理综述.pdf

    本文将深入探讨Oracle内存管理的核心概念,包括内存结构、内存分配策略以及如何通过配置来提升数据库效率。 Oracle内存主要分为两大部分:系统全局区(System Global Area, SGA)和程序全局区(Program Global Area, ...

    Oracle 内存分配与调整

    1. 使用自动内存管理:Oracle 10g及以后版本引入了自动内存管理,DBA可以设置一个总的内存预算,让Oracle自动分配SGA和PGA。 2. 分析工作负载:通过监控工具如AWR(Automatic Workload Repository)和ASH(Active ...

    Oracle内存分配与调整 pdf

    ### Oracle内存分配与调整:深度解析 #### 一、引言 在Oracle数据库的运维与优化过程中,内存管理扮演着至关重要的角色。特别是在Oracle 9iR2及之前的版本中,有效的内存管理策略能显著提升数据库性能,反之则可能...

    调整oracle内存及调整表空间大小方法

    #### Oracle内存管理 Oracle数据库的内存管理对于确保数据库高效运行至关重要。内存配置不当可能导致性能下降甚至系统崩溃。在默认情况下,Oracle会根据系统的总内存自动调整其内存分配。然而,在某些情况下,可能...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    第二讲:Oracle实例中内存结构 第三讲:Oracle实例中后台进程管理 第四讲:Oracle数据数据文件管理 第五讲:Oracle数据库在线日志文件管理 第六讲:Oracle数据库归档日志文件管理 第七讲:Oracle数据库控制文件管理...

    oracle 内存分配和调优 总结

    oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。

    Oracle内存分配与调整

    有关Oracle数据库内存的分配与管理的原理及相关命令

Global site tag (gtag.js) - Google Analytics