深入浅出sga和pga章节记载-01

今早重新又翻看了eygle的深入浅出的关于sgapga的章节,对于sgapga如何设置可以说一直没有什么定性的标准,这里先说一下关于自动管sgapga管理中参考的两个视图v$sga_target_advicev$pga_target_advice

SQL> desc v$sga_target_advice;

Name Type Nullable Default Comments

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

SGA_SIZE NUMBER Y

SGA_SIZE_FACTOR NUMBER Y 此表中的sga_size和当前parametersga大小比值

ESTD_DB_TIME NUMBER Y

ESTD_DB_TIME_FACTOR NUMBER Y

ESTD_PHYSICAL_READS NUMBER Y 在该sga_size参数下估计的物理读次数

SQL> desc v$pga_target_advice;

Name Type Nullable Default Comments

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

PGA_TARGET_FOR_ESTIMATE NUMBER Y

PGA_TARGET_FACTOR NUMBER Y

ADVICE_STATUS VARCHAR2(3) Y advice是否可采用on/off,取决于staitiscs_level

BYTES_PROCESSED NUMBER Y 所有进程占用的资源bytes

ESTD_EXTRA_BYTES_RW NUMBER Y 被估计用于读和写的资源占用

ESTD_PGA_CACHE_HIT_PERCENTAGE NUMBER Y 估计的命中率

ESTD_OVERALLOC_COUNT NUMBER Y 此参数非0则表示pga设置不足够大

我们完全可以根据上述视图的几个列来设置sgapga的大小,例如根据v$sga_target_advice视图的estd_physical_readssga_size来查看sga的变化带来的物理读次数的变化,或者根据v$pga_target_advice视图的estd_pga_cache_hit_percentagepga_target_for_estimate参数,随着pga的变化带来的命中率的变化而设置一个合理的数值。

根据oracle的建议,oracle最多可以使用80%物理内存,其余20%os,在80%的内存中,对于OLTP系统分配20%pga80%sga,对于DSS系统,则可以分别分配50%pgasga使用,当然需要参考系统的具体业务情况,做awrstatspack统计系统的运行信息设置合理的参数!

随便提一下:有网友经常提到数据库实例都有个误解的说法,就是数据库起不来说是实例起不来,实例只是数据库访问的一种方式,从结构上说就是sgaoracle后台进程。

SQL> show sga

Total System Global Area 419430400 bytes

Fixed Size 1249320 bytes

Variable Size 83890136 bytes

Database Buffers 327155712 bytes

Redo Buffers 7135232 bytes

固定sga

记得以前看官方文档时,sga中的固定部分的fixed size始终不理解具体是个什么,而eygle深入浅出中理解为数据库和实例的状态等通用信息,后台进程需要经常访问这些信息。

Linux等平台shmmax内核参数:

记得前些天在linux上安装oracle时,设置了一个内核参数shmmax,该参数存在于linux/unix操作系统内,shmmax内核参数定义式系统允许的单个共享内存段最大值,可以试想如果sga大于shmmaxsga会创建分配于多个共享内存段,当然系统中最好将sga分配在一个共享内存中。

共享内存没有释放:后台进程或者sga设置过大

前些天pub的网友的一个帖子中说到数据库无法启动nomountnomount阶段oracle数据库需要的spfile文件,这个既然可以保证,那么就可能是内存方面无法分配了,可能由于sga设置过大,超过物理内存无法启动,还有可能是数据库异常关闭,后台进程未正常退出,共享内存也就没有及时释放引起,推过ipcs找出共享内存段shared memory id然后ipcrm强制释放即可!

两个参数statistics_leveldb_cache_advice

oracle 9I前调整sga的各个组件的大小都需要重新启动数据库,oracle 9I后可以动态调整sga的各组件的大小,这里还是列出视图v$db_cache_advicev$shared_pool_advice,其中跟此视图相关的有两个参数db_cache_advicestatistics_level ,其中的db_cache_advice跟视图v$db_cache_advice相关,缺省值为on为开启建议并且消耗cpu和内存,off为关闭建议不为建议分配内存,ready为关闭建议但保留分配的内存。(这里eygel提到了:可能在某些版本中由offon时出现ora-4031,无法从共享池中分配内存,不过在10g的自动sga管理中可能很难看见了)

另一个参数statistics_level控制数据库收集统计信息级别,缺省的为typical收集大部分统计信息,而all则为收集全部统计信息,basic则为收集基本统计信息。

Asmm下的调整信息保留和mman进程:

oracle 10Gasmm自动管理sga下,我们很少去关心sga的各组件的具体设置,而只需要设置一个sga_target参数让其自动管理即可,即使重启数据库oracle也会记录上次启动的sga的各组件具体信息在spfile,下次启动数据库时不会丢失之前的调整结果(其实关于asmmsga的信息的db下次启动的保留oracle concept中也提到了,所以有些知识和细节是需要反复阅读和探究才会发觉和熟悉的!)这里顺便提一下一个后台进程是在asmm管理模式下的mman进程,此进程用于自动管理调整sga各组件大小,而调整的依据还是收集的统计信息建议,该进程可以在v$processes视图或者alert.log中均可以发现。

V$sga_dynamic_componentoracle 10Gasmm下,增加的视图v$sga_dynamice_component,其中记载了各动态组件的当前大小current_size和最近一次的调整时间last_oper_time和调整类型last_oper_type

[@more@]

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

转载于:http://blog.itpub.net/25362835/viewspace-1056619/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值