--==============================
--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 ,但是你依然可以决定这些参数的值。这些
设置仅仅能通过使用SPFILE,Oracle将动态的使得这些行为再次产生。注意,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体系结构)
分享到:
相关推荐
● 自动SGA管理:Oracle 9i已使PGA的管理自动化了,利用workarea_size_policy =AUTO,就不必再为设立sort_area_size绞尽脑汁。在Oracle 10g中,用户将得到进一步的解放。对memory的管理,Oracle 10g中不再区分data ...
从Oracle9i通过PGA_AGGREGATE_TARGET参数实现PGA自动管理开始,Oracle10g通过SGA_TARGET参数实现了SGA的自动管理,Oracle11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGA和PGA成为现实。...
一旦可以使用所有强有力的查询来监控您的系统,那么就有必要使它们自动化运行。PL/SQL除了可完成以上的工作外,同时还将提供强大而有效的数据包和可用于性能调整的过程。PL/SQL引擎处理所有的PL/SQL请求,并且将代码...
Oracle Database 10 g :“g”代表网格 1-6 Oracle 数据库体系结构 1-8 数据库结构 1-9 Oracle 内存结构 1-10 进程结构 1-12 Oracle 实例管理 1-13 服务器进程和数据库缓冲区高速缓存 1-14 物理数据库结构 1-...
每一个Oracle的初学者在入门阶段都会接触到SGA/PGA的知识,如果是从10g开始学习那么会多或少会对 ASMM有所了解,从使用的角度来说ASMM的出现极大地简化了Oracle内存初始化参数的设置,在ASMM的使 用上高级DBA和初学...
提供了多种的内存管理方式,从最早SGA、PGA手工管理,到9I版本出现的PGA的自动管理,到10G版本出现的SGA自动管理(ASMM),再到11G版本出现的memory自动管理(AMM),Oracle基本是在朝着智能化、傻瓜化、自动化的方向...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
2.3.9 Oracle 10g自动检查点调整 75 2.3.10 检查点信息及恢复起点 78 2.3.11 正常关闭数据库的状况 78 2.3.12 数据库异常关闭的情况 80 2.3.13 数据库并行恢复案例一则 82 2.3.14 判断一个死事务的恢复...
2. ORACLE 10g/11g学习目标:掌握表空间及用户的创建、修改和删除操作,了解ORACLE的基本知识,熟练掌握记录的插入、删除、修改和查询操作,了解PK/CK/UK/FK等知识,掌握权限管理。 3. ORACLE 10g/11g关键内容:...
4.2.8 自动SGA内存管理 150 4.3 小结 151 第5章 Oracle进程 153 5.1 服务器进程 153 5.1.1 专用服务器连接 154 5.1.2 共享服务器连接 156 5.1.3 连接与会话 157 5.1.4 专用服务器与共享服务器 163 5.1.5 ...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用...
6. 说明Oracle 10g数据库文本初始化参数文件与服务器初始化参数文件的区别。 答案: 文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
充分利用内存,优化sga、pga等(11g已经实现了sga+pga自动化,但有的时候仍然需要手动进行调整),适当的将小表keep到cache中。 4.优化sql语句 1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图...