ORA-00382与DB_nK_CACHE_SIZE参数设置

WBOY
풀어 주다: 2016-06-07 15:21:30
원래의
1649명이 탐색했습니다.

最近在尝试优化一个包含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_SIZE4096,那么你设置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作为一个单位来分配的,而并不是一次分配1M1K这样的单位。granule大小是以SGA大小由系统设定的,当SGA小于1G时,granule大小为4M,SGA大于1G的时候granule大小为16M。接下来,,我们查看一下sga以及granule大小。

 

点击(此处)折叠或打开

本文永久更新链接地址

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!