DB_nK_CACHE_SIZE参数设置与数据库默认块大小之间的限制

摘自:http://space.itpub.net/519536/viewspace-705241


“DB_nK_CACHE_SIZE”参数的取值有很多种,有2k、4k、8k、16k、32k。在设置此参数时,我们需要注意的是,与数据库默认的块尺寸相同的那个参数是不能被设定的。例如,如果数据库的默认块尺寸是8k,那么当我们尝试设置“DB_8K_CACHE_SIZE”参数时便会遭遇报错(报错内容:ORA-00380: cannot specify db_8k_cache_size since 8K is the standard block size)。这是由于这个信息已经体现在“db_cache_size”参数上。

  这里给出具体直观的体验过程。

1.查看数据库默认的块大小
sys@ora10g> show parameter db_block_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_block_size             integer              8192

此处显示,数据库的默认块大小是8K。

2.查看所有与cache size相关的参数
sys@ora10g> show parameter cache_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_16k_cache_size         big integer          0
db_2k_cache_size          big integer          0
db_32k_cache_size         big integer          0
db_4k_cache_size          big integer          0
db_8k_cache_size          big integer          0
db_cache_size             big integer          0
db_keep_cache_size        big integer          0
db_recycle_cache_size     big integer          0

这里列出了2k、4k、8k、16k、32k多种可设置的参数信息。

3.尝试调整非数据库默认块大小对应的参数
sys@ora10g> alter system set db_16k_cache_size=1m ;

System altered.

sys@ora10g> show parameter cache_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_16k_cache_size         big integer          16M
db_2k_cache_size          big integer          0
db_32k_cache_size         big integer          0
db_4k_cache_size          big integer          0
db_8k_cache_size          big integer          0
db_cache_size             big integer          0
db_keep_cache_size        big integer          0
db_recycle_cache_size     big integer          0

调整成功,注意这里的一个现象,设置的是1M大小,系统会自动将这个数值进行调整,调整的依据是:values greater than zero are automatically modified to be either the user-specified-size rounded up to granule size or 4MB * number of CPUs * granule size, whichever is greater

4.尝试调整数据库默认块大小对应的参数
这里我们数据库的默认块大小是8k,因此,这里我们尝试调整“db_8k_cache_size”这个参数。
sys@ora10g> alter system set db_8k_cache_size=1m;
alter system set db_8k_cache_size=1m
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-00380: cannot specify db_8k_cache_size since 8K is the standard block size

此处便遇到了“ORA-00380”错误提示。

5.小结
  当数据库使用非标准块表空间时,“DB_nK_CACHE_SIZE”参数将会派上用场,正所谓特殊场合特殊设置,因此在默认块尺寸下我们毋须设置与之对应的cache参数。

Good luck.

secooler
11.08.17

-- The End --

你可能感兴趣的:(DB_nK_CACHE_SIZE参数设置与数据库默认块大小之间的限制)