最近在尝试优化一个包含blob字段表的查询,考虑使用非标准块缓存。但是,在尝试设置DB_32K_CACHE_SIZE参数时,遭遇报错(报错内容
最近在尝试优化一个包含blob字段表的查询,考虑使用非标准块缓存。但是,在尝试设置DB_32K_CACHE_SIZE参数时,遭遇报错(报错内容:ORA-00382: 32768 不是有效的块大小, 有效范围为 [..])。于是,到官方文档查了一下,才明白这个参数的设置由于和底层数据块相关,与操作系统是紧密相连的。在Windows操作系统下,DB_32K_CACHE_SIZE参数时不可用的,但是,它支持DB_16K_CACHE_SIZE。
这里给出参数的官方文档说明以及具体的操作过程,仅供参考。
官方文档说明DB_nK_CACHE_SIZE
属性
描述
参数类型
整型数
语法
默认值
修改
ALTER SYSTEM
取值范围
基本参数
否
DB_nK_CACHE_SIZE ( 其中 n = 2, 4, 8, 16, 32) 指定了 nK 缓存区的大小。你可以设置除 DB_BLOCK_SIZE 之外的其他数值。例如,如果 DB_BLOCK_SIZE 为 4096 ,那么你设置 DB_4K_CACHE_SIZE 就是非法的 ( 因为 4K 的缓存区大小已经被 DB_CACHE_SIZE 参数设置过了 ) 。
如果数据库中存在 nK 块大小的在线表空间,那么不能设置该参数为 0 。
操作系统会限制特定的块大小。例如,如果操作系统最大块尺寸小于 32KB ,那么你不能设置 DB_32K_CACHE_SIZE 参数。同样,如果最小块尺寸大于 2KB ,那么你也不能设置 DB_2K_CACHE_SIZE 参数。
操作环境我在 Oracle10g+Windows Server 2008 Standard R2 环境下进行以下操作。
查看 DB_BLOCK_SIZE首先,我们查看一下数据库的标准块大小,这个是由 DB_BLOCK_SIZE参数决定的。
查看所有与 cache size 相关的参数根据官方文档的说明,默认情况下 DB_nK_CACHE_SIZE 参数的值都是 0 ,我们可以查看一下所有与 cache size 相关的参数。
设置 DB_32K_CACHE_SIZE 报错我尝试把 DB_32K_CACHE_SIZE 参数修改为 200M ,遭遇报错。
设置 DB_16K_CACHE_SIZE那么,接下来我们尝试设置 DB_16K_CACHE_SIZE 参数。
原来, SGA 中的各个组件分配都是以 granule 作为一个单位来分配的,而并不是一次分配 1M 或 1K 这样的单位。 granule 大小是以 SGA 大小由系统设定的,当 SGA 小于 1G 时, granule 大小为 4M, 当 SGA 大于 1G 的时候 granule 大小为 16M 。接下来,,我们查看一下 sga 以及 granule 大小。
点击( 此处 )折叠或打开
本文永久更新链接地址 :
查看更多关于ORA-00382与DB_nK_CACHE_SIZE参数设置的详细内容...