oracle ora 01691,ORA-01691错误分析

本文介绍了解决Oracle数据库中LOB字段无法扩展的问题。通过调整表空间、使用ALTER TABLESPACE命令添加文件或进行碎片整理等操作来解决ORA-01691错误。同时提到了一个可能的bug,该bug在特定大小的LOB被删除或更新时会导致空间泄露。
部署运行你感兴趣的模型镜像

解答者:tolywang[@more@]

在应用程序中插入oracle大字段的时候出现如下提示:

ORA-01691: unable to extend lob segment xxx.SYS_LOB0000030895C00010$$ by 2048 in tablespace xxx ORA-06512: at "xxx.storeprocedure", line 86 ORA-06512: at line 1

ORA-01691 unable to extend lob segment string.string by string in tablespace string

Cause: Failed to allocate an extent for LOB segment in tablespace.

Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the tablespace indicated.

Problem Description:

====================

You are attempting to insert or import data into a table containing

LOBs and get the following error:

ORA-01691: unable to extend lob segment TESTARCH.SYS_LOB#$ by X in tablespace

TEST

Cause: Failed to allocate an extent for lob segment in tablespace.

Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more

files to the tablespace indicated.

Problem Explanation:

====================

The LOB segment associated with the target table has reached hit

a limit or run out of sufficiently large chunks of contigous space.

Search Words:

=============

loc clob import

Solution Description:

=====================

Assuming you had the following error:

ORA-1691: unable to extend lob segment TESTARCH.SYS_LOB0000004289C00007$

by 25600 in tablespace TEST

You would issue the following query:

select segment_type, bytes, extents,

initial_extent, next_extent, max_extents

from dba_segments

where segment_name = 'SYS_LOB0000004289C00007$';

and extract the values for EXTENTS, NEXT_EXTENT, and MAX_EXTENTS from the

resulting record. Assuming these value were:

extents = 452

next_extent = 52428800

amx_extents = 999

You would then issue the following statement to determine if sufficient

space was available to extend the LOB segment:

select bytes

from dba_free_space

where tablespace_name = 'TEST'

order by bytes desc;

If there was no contiguous block large enough to allocate the next extent,

you could try the following:

alter tablespace test coalesce

and subsequently rerun the above query. If there was still not enough space,

you would need to add a datafile to the TEST tablespace to allow the import

to complete.

Note that you would need to specify ignore=y in the import options to avoid

failing on the primary key constraint.

Solution Explanation:

=====================

This error should be handled no differently from other errors indicating the

inability to extend a database segment. Initial confusion may occur given the

unique nature of LOB storage.

还有可能是bug .

metalink 上的回答 :

The bug you mention is likely bug 855986 where a space leak can occur using LOB columns: deleted/updated LOB columns may not release the space occupied for reuse. This occurs for particular sizes of LOB. ORA-1691 is raised if the LOB cannot be extended.

The bug is fixed in 8.0.6 and 8.1.6. Although this fix was scheduled to be in it, unfortunately, there was no 8.1.5.2 patchset released. However, there is an individual patch for this bug which can be applied to 8.1.5.0 and 8.1.5.1 on Solaris. You will need to log an iTAR in order to obtain the patch as it is not available for download from MetaLink.

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值