mophis
作者mophis·2011-07-01 08:36
软件开发工程师·杭州

"ORA-00379" 的解决

字数 6264阅读 4613评论 0赞 1
今天有用户报当truncate table时出现ORA-00379错误:
truncate table XML_DOC

ERROR at line 1:

ORA-00379: no free buffers available in buffer pool DEFAULT for block size 16K

 检查表空间后发现,有两个表空间的block size是16k:
 
<A href="mailto:sys@>select">sys@>select tablespace_name,block_size from dba_tablespaces;
TABLESPACE_NAME                BLOCK_SIZE
------------------------------ ----------
SYSTEM                               8192
UNDOTBS1                             8192
SYSAUX                               8192
TEMP                                 8192
USERS                                8192
AUDIT_DATA                           8192
DBA_ADMIN                            8192
TOOLS                                8192
UNDOTBS2                             8192
ACTIVE_ASSM                   8192
IDX                           8192
ACTIVE                        8192
ARCHIVE                       8192
T_RO                              8192
ARCHIDX                       8192
LRG_DATA                         8192
STATIC                        8192
MEDIUM_DATA                      8192
ARCHIVE1                      8192
ACTIVE_LOB                   16384
ARCHIVE_LOB                  16384
21 rows selected.
而且检查后发现出错的表正好在16k的表空间上.
进一步检查cache的设置:
 
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
由于这个实例用了自动内存管理ASSM,所以这里的值都是0, 进一步查看数据库的默认block size:
 
show parameter db_block_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_size                        integer     8192
默认是8k,但创建了16k的表空间,但没有设置16k cache,所以导致问题, 于是设置16k cache:
alter system set db_cache_size=100M scope=both;
alter system set db_16K_cache_size=50M;
问题解决.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广