视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ORA-00382与DB_nK_CACHE_SIZE参数设置
2020-11-09 07:50:53 责编:小采
文档


最近在尝试优化一个包含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大小。

点击(此处)折叠或打开

本文永久更新链接地址:

下载本文
显示全文
专题