--==============================
--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体系结构)
分享到:
相关推荐
- **新功能介绍**:Oracle 9i引入了RAC等新特性,而10g则更加注重自动化管理和Grid Computing技术的应用。例如,10g中的自动内存管理(Automatic Memory Management, AMM)可以动态调整SGA和PGA的大小,提高资源利用...
9. **备份与恢复**:Oracle10g的备份和恢复策略包括传统的冷备份、热备份以及利用RMAN(恢复管理器)进行的自动化备份。了解如何规划和执行有效的备份策略是保持数据安全的关键。 10. **安全管理**:Oracle10g提供...
1. 数据库自动管理(Automatic Database Management):Oracle10G引入了自动存储管理(Automatic Storage Management, ASM),简化了存储配置,通过集成的文件系统和卷管理器实现数据库的存储管理。 2. Real ...
《Oracle10g系统管理员使用手册》是一本深入解析Oracle10g数据库管理系统运维的权威指南,主要面向那些需要管理、监控和优化Oracle10g环境的系统管理员。Oracle10g是Oracle公司推出的数据库产品,它在性能、可扩展性...
Oracle 11g是一款强大的关系型数据库管理系统,广泛应用于企业级的数据存储和管理。自动建库,即自动化创建数据库,是提高工作效率、减少人为错误的重要手段。以下将详细阐述Oracle 11g自动建库的相关知识点。 1. *...
通过EM,可以自动化性能监测、警报设置和响应策略,提升整体管理效率。 ### 3. SQL语句调优 SQL语句的编写方式直接影响到查询性能。优化SQL包括选择合适的索引、避免全表扫描、合理使用JOIN操作、减少子查询使用等...
在Oracle 9i及后续版本中,SGA的管理逐渐变得自动化,以适应不断变化的系统和工作负载需求。 在Oracle 10g中,引入了动态内存分配特性,使得创建一个自调整的Oracle SGA成为可能。这一特性允许数据库根据实际的处理...
- **版本特点**:Oracle 10g(Grid Edition)是Oracle公司于2004年发布的数据库管理系统,是Oracle 9i的升级版。10g中的“g”代表“grid”,意味着该版本特别强调了网格计算能力。 - **主要功能**:支持数据分区、...
Oracle 10g是Oracle公司推出的数据库管理系统的一个重要版本,为用户提供了一整套全面的数据管理和应用开发工具。这个官方帮助文档是学习和工作中理解和操作Oracle 10g数据库的重要资源。下面将对其中的关键知识点...
7. **性能优化**:数据库性能是关键,Oracle 10g有丰富的性能监控和调优工具,如V$视图、AWR(自动工作区管理报告)、ASH(活动会话历史)等。学习者需要了解如何分析性能瓶颈,优化SQL查询,以及调整初始化参数来...
Oracle 10g在功能上做了大量改进,包括自动存储管理(ASM)、实时应用集群(RAC)和数据仓库优化等。 2. **数据库安装与配置**:手册会详细介绍如何在不同操作系统平台上安装Oracle 10g,包括选择正确的安装选项、...
### Oracle10g for HP-UX安装指南与配置要点 #### 一、系统配置与环境准备 在HP-UX平台上安装Oracle10g数据库需要确保系统达到一定的硬件和软件要求。根据提供的信息,主机配置如下: - **CPU**: Intel Itanium 2...
Oracle 10g数据库是Oracle公司推出的一款关系型数据库管理系统,是Oracle数据库产品线中的一个重要版本,尤其对于初学者和专业DBA来说,掌握Oracle 10g的基础知识至关重要。本教程由孙风栋等专家编写,提供了全面的...
Oracle10g是一款历史悠久但依然广泛应用的关系型数据库管理系统,它为各类企业和组织提供了高效的数据存储和处理能力。本文将深入探讨Oracle10g的安装过程,以及与之相关的技术要点。 首先,安装Oracle10g涉及到多...
- **Oracle Enterprise Manager**:介绍如何利用Oracle Enterprise Manager进行自动化管理。 - **Data Pump**:阐述Data Pump的用途及操作步骤。 - **RMAN (Recovery Manager)**:探讨RMAN在备份与恢复中的应用。 #...
6. **性能监控与调优**:Oracle 10g提供了一系列工具和机制用于性能监控,如AWR(自动工作区管理报告)、ASH(活动会话历史)等。源代码会解释这些工具的工作原理。 7. **网络通信**:Oracle使用TCP/IP协议进行网络...
### Oracle Database 10g: 数据库管理(OCP教材) #### 一、课程概述 本教材《Oracle Database 10g: 数据库管理》旨在为Oracle认证专业人员(OCP)提供必要的理论与实践知识,帮助他们掌握Oracle 10g数据库的管理...
### Oracle 10g的内存调整报告 #### 内存配置的重要性 Oracle 数据库的内存配置对于数据库的整体性能至关重要。不恰当的内存设置不仅会导致性能下降,还可能引发各种难以定位的问题。因此,在进行Oracle 10g的内存...
1. **自动存储管理(ASM)**:Oracle 10g提供了一种新的存储解决方案,允许管理员将磁盘管理的任务交给数据库本身,从而简化了数据库管理和维护工作。 2. **透明数据加密(TDE)**:为了提高数据安全性,Oracle 10g...