ITPub博客

首页 > 数字化转型 > ERP > 浅谈10G SGA自动管理

浅谈10G SGA自动管理

原创 ERP 作者:lvqiao2009 时间:2007-09-28 16:43:36 0 删除 编辑

SGA自动管理一些简单实用知识

[@more@]

SGA自动管理概述
1.为什么SGA自动管理?
SGA自动管理可以避免手工管理的局限和不便,简化数据库管理工作。

2.如何在SGA自动管理与手工管理之间切换?
通过设置sga_target为零和非零值,可以完成手工和自动管理切换。

3.常用SGA参数问题:
sga_max_size 表示系统可以分配给SGA最大内存大小。如果这个参数设置小于SGA各组件大小的和(包括自动管理和手工管理,明式设置和隐含设置),则系统会忽略这个参数设置。但在实例启动后,查询这个参数的值自动改为系统实际使用的值。在这种情况下,不能再动态加大sga_target,因为sga_max_size就是当前实例所用SGA。
sga_target 表示SGA自动管理内存的大小。可以动态修改,但动态修改时不能超过当前实例启动时sga_max_size设置的大小。
当这个参数小于最小保守值和时实例启动时会报错,并提示sga_target应该是多少大。
Lock_sga 表示要把SGA的分配锁在内存范围内,不允许扩展到磁盘。

4.粒度问题:
SGA小于1G时,粒度为4M。
SGA大于1G时,粒度为16M或更大。这也不是绝对,跟平台有密切相关。如windows 32bit中,1G以上粒度仍是8M。

5.SGA自动管理范围

自动管理问题一:如何查看自动管理SGA各组成配置
方法一
10g ORACLE数据库默认是启用spfile,从spfile中创建pfile,在pfile头部我们可以看到以下参数:
$SID.__db_cache_size=25165824
$SID.__java_pool_size=4194304
$SID.__large_pool_size=4194304
$SID.__shared_pool_size=30485760
$SID.__streams_pool_size=0
可以查看创建pfile时当时当前实例的SGA配置情况。
这些参数无论是在手工管理或自动管理模式下,人工修改这些参数是不起作用的。


方法二
可以查询数据库的隐含参数

__db_cache_size
__java_pool_size
__large_pool_size
__shared_pool_size
__streams_pool_size


附注:在参数文件(包括pfile or spfile)中设置是不起作用的。
可以查询这个结果是当前SGA自动管理下各组件分配情况。

自动管理问题二:9i版本中SGA相关设置参数在自动管理中作用
在参数文件中可以设置以下参数
db_cache_size
java_pool_size
large_pool_size
shared_pool_size
streams_pool_size
这类参数在ORACLE 10G以前就存在的,原先是直接设置SGA中组件的大小。有了SGA内存自动管理后,这些参数设置的意义变成了保守的最小 值。即自动内存管理在进行调整上述组件大小时,不能把上述组件中任何一个cache size小于这类参数指定的大小。

自动管理问题三:自动管理默认分配规律
1. 最小设置
2. 系统按基线分配设置或按上次调整结果分配
基线分配有一个默认比例,如果由于指定其它组件的最小值,而导致没有指定最小值的组件分配不到默认比例值的大小,实例不能启动会报错提示那个组件分配不到足够内存。
在SGA自动管理的其它组件没有压力情况下,新增加SGA_TARGET,增加的内存不会添加到那些没有压力的组件中。先是加shared pool 和Buffer cache 的大小,shared pool加大到适当大小后,后继空间全部加到buffer cache。


自动管理问题四:自动管理调整结果问题
一. Pfile 不能保存调整结果,重启以后要重新学习。
二. Spfile 可以保存调整结果。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7248175/viewspace-973528/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 浅论ORA-01555
下一篇: ORACLE问题集
请登录后发表评论 登录
全部评论
  • 博文量
    19
  • 访问量
    165069