首页 > 其他分享 >ORA-01658创建表或索引报错分析

ORA-01658创建表或索引报错分析

时间:2024-07-29 16:07:41浏览次数:13  
标签:01658 INITIAL bytes 碎片 tablespace extent 报错 ORA

一、报错信息

某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下:

SQL loader ORA-01658 unable to creale INITIAL extent for segment in tablespace ADS5GP2P_1

这个报错的意思是,没有足够的连续空间为表或索引创建 INITIAL extent:

[oracle@node1:1 ~]$ oerr ora 1658
01658, 00000, "unable to create INITIAL extent for segment in tablespace %s"
// *Cause:  Failed to find sufficient contiguous space to allocate INITIAL
//          extent for segment being created.
// *Action: Use ALTER TABLESPACE ADD DATAFILE to add additional space to the
//          tablespace or retry with a smaller value for INITIAL

二、报错分析

数据库版本是 Oracle 11G,实际查看该表空间仍有2T多的剩余空间,根据以往经验,最大的可能是这2T多的剩余空间大多是碎片,在业务忙时无法提供足够可用的连续空间,以下做验证。
DBA_FREE_SPACE describes the free extents in all tablespaces in the database.
数据字典 DBA_FREE_SPACE 描述了所有的可用 extent 情况:

select trunc(bytes/1048576) mb, count(*)
  from dba_free_space
 where tablespace_name = 'ADS5GP2P_1'
 group by trunc(bytes/1048576)
 order by 1;
 0	2374933
 1	61526
 2	21622
 3	13995
 4	34797
 5	5133
 6	6851
 7	3687
 8	16463
 9	2883
10	1785
11	1348
12	5552
13	742
14	666
15	615
16	6029
17	326
18	300
19	398
20	2553
21	94
22	62
23	49
24	82
25	41
26	21
27	9
28	26
29	15
30	12
......

以上可见空闲的空间里有大量的碎片,可能的原因是频繁、长时间的修改、导入数据逐步导致的。这些碎片的大小达到了 2T,如下:

select tablespace_name, sum(bytes/1048576) mb
  from dba_free_space
 where trunc(bytes/1048576) < 1
 group by tablespace_name;
---
ADS5GP2P_1: 2162858.375

结论是:
虽然空闲空间很多,但是这些空闲空间大都是小于 1M 的小碎片,这些小碎片加起来达到了2T,导致可能有时没法及时分配 INITIAL extent 给应用使用,从而报错。
以下进一步确认这些碎片的具体大小:

select trunc(bytes/65536) k64, count(*)
  from dba_free_space
 where tablespace_name = 'ADS5GP2P_1'
 group by trunc(bytes/65536)
 order by 1;
 1	31756
 2	8567
 3	6803
 4	10116
 5	3230
 6	1748
 7	2027
 8	2492
 9	11143
10	4988
11	1183
12	1875
13	21457
14	43512
15	2228918
16	1251
17	151
18	152
19	230
20	177

以上可见 15*65536=960k 的 extent 达到了 2228918,合计 2T 多。
可见这些小碎片大多是 960k 的小碎片,理论上对于大多数 64k 的 INITIAL extent 是可用、不会报错的。

三、解决方案

因此最终的解决方案是,修改报错表和索引的 INITIAL extent,让他们小于多数碎片的大小,即小于 960k。这个只能在业务闲时操作,确保操作的表不要引起其他问题,比如先备份表。

标签:01658,INITIAL,bytes,碎片,tablespace,extent,报错,ORA
From: https://www.cnblogs.com/likingzi/p/18330322

相关文章

  • Jenkins结合SVN报错E230001: Server SSL certificate verification failed的解决方法
    报错如下:svn:E230001:Commitfailed(detailsfollow):svn:E230001:UnabletoconnecttoarepositoryatURL'https://192.168.0.99/svn/xxx/dat'svn:E230001:ServerSSLcertificateverificationfailed:certificateissuedforadifferenthostname,is......
  • 使用 pgvector 和 Lambda 生成基岩嵌入并存储在 Aurora 中
    我在Aurora中的不同表中有一些数据,我想对其执行RAG。为此,我创建了一个微服务(Lambda),它可以生成不同表的嵌入并将该数据存储在Aurora中。但是矢量更新插入应该基于某些数据库流集合。例如:如果有5个以上的数据库更新,那么我应该重新生成嵌入,并且应该有一个端点,我可以在其中......
  • 【通信模块】LoraWAN网络简介
    LoRaWAN网络技象科技相关文章总结,学习笔记,原文链接如下,转载请标明该出处:LORA:https://www.techphant.cn/tag/l-2LORAWAN:https://www.techphant.cn/tag/l-3其他:如LANhttps://www.techphant.cn/tag/l-4Lora基本原理LoRa(长距离低功耗无线通信)技术作为一种低功耗、远距......
  • LoRa MESH网络拓扑及其物联网应用场景简介
    什么是LORAMESH组网技术LORAMESH组网技术是一种基于LORA传输的Mesh组网方案,LoRaMESH网络允许设备之间以多跳(multi-hop)的方式进行无线通信。LoRaMESH组网技术被广泛运用于解决“最后一公里”问题,是实现设备之间低功耗、广覆盖通信的重要手段。LoRaMESH网络拓扑简介LoRaMES......
  • QT 中文字符报错乱码 C2001
    由于工作限制QT只能用很早的版本,学QT的时候,使按钮显示字符setText中放入中文字符,编译时报错 网上查了很多方法,主要是字符编码不一致的问题,这里总结一下首先查一下编码是不是UTF-8上方菜单栏中点击工具,在下拉列表里点击选项 在弹出的选项窗口中,进入文本编辑器->行为界面......
  • 存储宕机导致Oracle异常故障处理---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:由于存储宕机导致Oracle异常故障处理作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]存储突然掉线,导致数据库crash,报大量ORA-00206ORA-00202ORA-15081以及Linux-x86_64Error:5:......
  • (2024最新)有效解决OpenAI Chatgpt Plus升级报错【您的银行卡被拒绝了/your card has be
    在OpenAI升级ChatGPTplus时我们可能会遇到升级报错【您的银行卡被拒绝了/yourcardhasbeendeclined」,有些人看到这个可能就会不知所措注意,这个问题目前依旧存在,很多人都在这里望而却步,没办法升级到chatgptplus出现这种错误,有以下几个解决方案:1.检查银行卡信息:确保你......
  • 解决yolo使用engine模型推理报错AttributeError: “NoneType’cbject has no attribut
    目录起因分析两种解决方案方法一:卸载生产服务器的tensorrt,下载与训练服务器相同版本方法二:将训练服务器训练的pt模型下载出来到生产服务器导出起因在做yolo模型训练时使用了训练服务器,训练结束把模型转换成了.engine模型,在训练服务器上可以正常使用,但把模型放到生成服......
  • 鸣潮PC端启动报错全面解析:卡顿、下载卡99%、黑屏、崩溃闪退的解决之道
    《鸣潮》作为一款备受期待的游戏,其独特的玩法和精美的画面吸引了大量玩家。然而,不少玩家在尝试体验这款游戏时,遇到了一系列令人头疼的技术问题,包括启动报错、游戏卡顿、下载进度卡在99%、黑屏、崩溃闪退等。这些问题不仅影响了游戏体验,也让玩家感到沮丧。本文将深入分析这些问......
  • 实战:MyBatis适配多种数据库:MySQL、Oracle、PostGresql等
    概叙很多时候,一套代码要适配多种数据库,主流的三种库:MySQL、Oracle、PostGresql,刚好mybatis支持这种扩展,如下图所示,在一个“namespace”,判断唯一的标志是id+databaseId,刚好写了三个同样的方法,一个不带databaseId,两个带databaseId,此时当前库如果连接的是oracle则执行databaseId=......