Oracle 10g SGA 的自动化管理

简介: --============================== --Oracle 10g SGA 的自动化管理 --============================== /*     在SGA中每一个单独的组件究竟需要多少内存呢?在Oracle 10g 中可以自动化管理大多数SGA参数。

--==============================

--Oracle 10g SGA 的自动化管理

--==============================

/*

    SGA中每一个单独的组件究竟需要多少内存呢?在Oracle 10g 中可以自动化管理大多数SGA参数。

 

一、什么是SGA

    简言之,系统全局区(SGA)仅仅是在Oracle实例启动时的共享内存结构,提供了实例和控制它行为的一些信息。下面

的表中给出了关于SGA一些特定组件的概要,控制内存大小分配的可变参数,以及这些特定的组件将影响Oracle server

哪些范围,并给出了一个简短的描述。从这个简短的列表中我们可以发现,在没有彻底地理解我们的应用程序后台的工

作状况下,以我们能力去推断并给这些组件中每一个设定内存的大小并不总是最优的选择,因为有大量的选项可供选择。

我们并不希望发生浪费可用内存的情况。

   

二、SGA组件

--组件列表使用原使文档,未翻译

 

SGA COMPONENT

SIZE CONTROLED BY

AREAS OF INFLUENCE

SIMPLE DESCRIPTONS

Shared Pool

SHARED_POOL_SIZE

Library Cache

·  Shared SQL areas

·  Private SQL areas

·  PL/SQL procedures and packages

·  Various control structures

Oracle needs to allocate & deallocate memory as SQL or procedural code is executed based on the individual needs of users' sessions and in accordance to the LRU algorithm.

Dictionary Cache

·  Row cache

·  Library cache

Highly accessed memory structures that provide information on object structures to SQL statements being parsed.

Java Pool

JAVA_POOL_SIZE

·  Run state

·  Methods

·  Classes

·  Session code

·  Data in JVM

Memory available for the Java memory manager to use for all things Java.

Streams Pool

STREAMS_POOL_SIZE

·  Stream activity

New to Oracle 10g, memory available for stream processing.

Redo Log Buffer

LOG_BUFFER

·  Redo entries

Holds changes made to data and allows for the reconstruction of data in the case of failure.

Database Buffer Cache

DB_2K_CACHE_SIZE

DB_4K_CACHE_SIZE

DB_8K_CACHE_SIZE

DB_16K_CACHE_SIZE

DB_32K_CACHE_SIZE

DB_KEEP_CACHE_SIZE

DB_RECYCLE_CACHE_SIZE

·  Write list

·  LRU list

Holds copies of data requested by SQL and reduces requests to disk by having data in memory. You may have many different buffer caches that help segregate on usage patterns.

Large Pool

LARGE_POOL_SIZE

·  Shared server

·  Oracle XA

·  I/O server processes

·  Backup & restore

For large memory allocations.

          

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

             

 

你可以通过初始化参数查看并控制SGA的大小   。下面是一个查询并提供了输出结果。 */

    select name, value

    from v$parameter

    where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',

     'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',

     'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',

     'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');

     

    NAME                      VALUE

    ------------------------- ---------

    shared_pool_size          83886080

    large_pool_size           8388608

    java_pool_size            50331648

    streams_pool_size         54525952

    db_cache_size             25165824

    db_2k_cache_size          0

    db_4k_cache_size          0

    db_8k_cache_size          0

    db_16k_cache_size         0

    db_32k_cache_size         0

    db_keep_cache_size        0

    db_recycle_cache_size     0

    log_buffer                262144

 

    13 rows selected.

/*

 

三、使用Oracle自动化SGA的管理

    使用Oracle 自动共享内存优化,通过设定一个新的SGA_TARGET 参数,即仅仅是告诉Oralce实例SGA目标大小是多少,

    Oracle将自动管理一系列SGA的组件。Oracle在你所选的组件中将集中管理,动态分配你设定的SGA_TARGET值。即不再

    需要人为的为SHARED_POOL_SIZE, JAVA_POOL_SIZE, LARGE_POOL_SIZE, DB_CACHE_SIZE 设定值,Oracle将会自动对

    其分配合适的大小。一旦你为SGA_TARGET设定了你所需要的值,上述的这些值将呈现为,并且新的参数将被创建并指派

      __SHARED_POOL_SIZE, __JAVA_POOL_SIZE, LARGE_POOL_SIZE, and __DB_CACHE_SIZE.在这些区域,Oracle将根据系

    统和内存所需的工作负荷,基于内部统计信息来分配更多的内存。Oracle将不再管理DB_KEEP_CACHE_SIZE,

    DB_RECYCLE_CACHE_SIZE, DBnK_CACHE_SIZE, the STREAMS_POOL_SIZE ,但是你依然可以决定这些参数的值。这些

    设置仅仅能通过使用SPFILEOracle将动态的使得这些行为再次产生。注意,SGA_TARGET值的大小是所有组成SGA组件的

    大小之和。当指定一个SGA_TARGET值时,不仅仅是参数控制,应该考虑所有的这些组件将不再被控制。

   

四、设置Oracle SGA 自动控制功能

    1.查看你的系统是否已经使用了SGA自动控制 */

   

       SQL> show parameter sga_target

       NAME                                 TYPE        VALUE

       ------------------------------------ ----------- --------

       sga_target                           big integer 0

      

       /*

      

    2.修改SGA自动控制的大小*/

        SQL> alter system set sga_target=216m;

       System altered.

       /*

      

      

    3.完成切换

        当切换到自动共享内存优化后,一个有趣的事情是你的SPFILE 将发生变化,并且有下列参数被定义,不论你的实例名

       是什么,注意k101是我的实例名。*/

        k101.__db_cache_size=25165824

       k101.__java_pool_size=50331648

       k101.__large_pool_size=8388608

       k101.__shared_pool_size=83886080

      

       /*

      

       除此之外,你可以使用前面使用过的SQL语句去查看SGA的这些设置,现在他们有一个零值。*/

      

       select name, value

       from v$parameter

       where name in ('shared_pool_size', 'java_pool_size', 'streams_pool_size',

        'log_buffer', 'db_cache_size', 'db_2k_cache_size', 'db_4k_cache_size',

        'db_8k_cache_size', 'db_16k_cache_size', 'db_32k_cache_size',

        'db_keep_cache_size', 'db_recycle_cache_size', 'large_pool_size');

        

       NAME                      VALUE

       ------------------------- ---------

       shared_pool_size          0

       large_pool_size           0

       java_pool_size            0

       streams_pool_size         0

       db_cache_size             0

       db_2k_cache_size          0

       db_4k_cache_size          0

       db_8k_cache_size          0

       db_16k_cache_size         0

       db_32k_cache_size         0

       db_keep_cache_size        0

       db_recycle_cache_size     0

       log_buffer                262144

       13 rows selected.

 

    --当设定了SGA_TARGET 后,可以修改查询语句使用新创建的带有下划线的参数变量作为查询条件。

   

   

       select name, value

       from v$parameter

       where name in ('__shared_pool_size', '__java_pool_size',

        'streams_pool_size', 'log_buffer', '__db_cache_size', 'db_2k_cache_size',

        'db_4k_cache_size', 'db_8k_cache_size', 'db_16k_cache_size',

        'db_32k_cache_size', 'db_keep_cache_size', 'db_recycle_cache_size',

        '__large_pool_size');

 

       NAME                      VALUE

       ------------------------- ---------

       __shared_pool_size        67108864

       __large_pool_size         4194304

       __java_pool_size          8388608

       streams_pool_size         0

       __db_cache_size           142606336

       db_2k_cache_size          0

       db_4k_cache_size          0

       db_8k_cache_size          0

       db_16k_cache_size         0

       db_32k_cache_size         0

       db_keep_cache_size        0

       db_recycle_cache_size     0

       log_buffer                262144

    /*

   

    切换到自动共享内存优化非常容易,仅仅是设定一个初始化参数。基于负载的情况下,这个管理方式该是确定的,尽管有不同的建议

    这些数量应当被如何分配。我更乐于使用他们作为一个单独的组件。没有理由不去规避风险来使用自动共享内存优化。当然,我会先

    在测试的环境中来使用它。我也建议在使用自动共享内存优化之前,做一个初始化参数快照然后比较使用动共享内存优化。这样也很

    容易切换回去,仅仅是重新设置SGA_TARGET,然后再单独设置各个组件到原来的值即可。 */

 

五、原文出处:

    September 2, 2004

    Automate the Sizing of your SGA in Oracle 10g

    By James Koopmann

http://www.databasejournal.com/features/oracle/article.php/10893_3400301_1/Automate-the-Sizing-of-your-SGA-in-Oracle-10g.htm

    */

/*   

       

六、更多:*/

 

    SQL/PLSQL 基础

 

    Oralce 10g 使用DBCA创建数据库

 

    使用Uniread实现SQLplus翻页功能

 

    Linux (RHEL 5.4)下安装Oracle 10g R2

 

    VmWare6.5.2下安装RHEL 5.4(配置Oracle安装环境)

 

    Oracle相关

 

    Oracle实例和Oracle数据库(Oracle体系结构)

目录
相关文章
|
8月前
|
Oracle 安全 关系型数据库
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
95 10
|
8月前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(三):数据库的创建和管理
【Oracle】玩转Oracle数据库(三):数据库的创建和管理
165 5
|
6月前
|
监控 数据挖掘 BI
ERP系统中的工作流管理与自动化
【7月更文挑战第25天】 ERP系统中的工作流管理与自动化
276 2
ERP系统中的工作流管理与自动化
|
5月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
416 2
|
6月前
|
运维 Oracle 关系型数据库
关系型数据库Oracle自动化备份
【7月更文挑战第21天】
70 3
|
6月前
|
机器学习/深度学习 人工智能 运维
智能化运维的崛起:自动化与人工智能在IT管理中的融合
本文深入探讨了智能化运维在现代企业中的重要性,并分析了自动化技术和人工智能(AI)如何共同推动IT运维管理的革新。文章首先概述了传统运维面临的挑战,然后详细介绍了智能化运维的核心概念和实施步骤,最后通过具体案例展示了智能化运维在实际工作中的应用效果和潜在价值。
149 0
|
8月前
|
存储 Oracle 关系型数据库
实验三 Oracle数据库的创建和管理
实验三 Oracle数据库的创建和管理
86 1
|
8月前
|
存储 弹性计算 运维
自动化合同管理与执行
【4月更文挑战第30天】
34 2
|
8月前
|
Oracle 关系型数据库
Oracle 管理诊断数据工具ADRCI
Oracle 管理诊断数据工具ADRCI
77 2
|
8月前
|
弹性计算 运维 Shell
自动化客服任务分配与优先级管理
【4月更文挑战第30天】
77 0

推荐镜像

更多