关于NT系统中,ORACLE的SGA粒度的疑问--??
上一篇 /
下一篇 2007-01-22 00:00:00
/ 个人分类:Oracle结构与管理
读eygle的书<深入浅出oracle>第四章P110,其提到
----------------------------
自9i开始,引入新的初始化参数db_cache_size;该参数定义主Block Size(db_block_size定义的块大小)的default缓冲池的大小;
Db_cache_size最小值为一个粒度(granule)。
粒度(granule):粒度是连续虚拟内存分配的单位,粒度是9i新引入的参数,其大小取决于SGA_MAX_SIZE参数所规定的SGA总的大小
当SGA<128M时,粒度值为4M;否则粒度值为16M
粒度大小受内部隐含参数_ksmg_granule_size的控制
----------------------------
测试平台:windows2003+oracle9.2.1.0
在我的测试系统试验粒度值和SGA的大小关系,发现上面的结论不同,不知是不是自己测试的问题???还是说这个结论是对UNIX系统而言???
请看测试过程:
SQL> show sga
Total System Global Area 319888364 bytes
Fixed Size 453612 bytes
Variable Size 310378496 bytes
Database Buffers 8388608 bytes
Redo Buffers 667648 bytes
SQL> set linesize 120
SQL> col name for a30
SQL> col value for a20
SQL> col describ for a60
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.inst_id = USERENV ('Instance')
4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%&par%'
7 /
Enter value for par: _ksmg_granule_size
old 6: AND x.ksppinm LIKE '%&par%'
new 6: AND x.ksppinm LIKE '%_ksmg_granule_size%'
NAME VALUE DESCRIB
------------------------------ -------------------- ---------------------------
--------------------------------
_ksmg_granule_size 8388608 granule size in bytes
SQL> alter system set sga_max_size=100M scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 114367248 bytes
Fixed Size 453392 bytes
Variable Size 109051904 bytes
Database Buffers 4194304 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.inst_id = USERENV ('Instance')
4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%&par%'
7 /
输入 par 的值: _ksmg_granule_size
原值 6: AND x.ksppinm LIKE '%&par%'
新值 6: AND x.ksppinm LIKE '%_ksmg_granule_size%'
NAME VALUE DESCRIB
------------------------------ -------------------- ----------------------------
--------------------------------
_ksmg_granule_size 4194304 granule size in bytes
-----------------------------
结论:
从上面的过程可以看出,当SGA_MAX_SIZE约300M时,粒度大小为8M,非不是书本上所说的16M
zouzhiyou 不会游泳的鱼提示参考--oracle 10g release 2 concepts中的一段话,如下:
Granule size is determined by total SGA size. On most platforms, the size of a granule
is 4 MB if the total SGA size is less than 1 GB, and granule size is 16MB for larger
SGAs. Some platform dependencies arise. For example, on 32-bit Windows, the
granule size is 8 M for SGAs larger than 1 GB.
eygle说---这些参数和平台/版本都有关系,具体含义及Oracle的管理方式明白了就好,其它的根据平台和版本自己查询一下就知道了。
看来书本上的很多结论必须自动动手测试,不然只管记结论,有时是会犯错误的
http://www.itpub.net/showthread.php?s=&threadid=709150
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: