ORA-01654: 无法扩展索引

问题描述 投票:0回答:4
呼叫所有 Oracle 大师!

我正在 WebSphere 上对一个经过良好测试的应用程序进行集群。在发生这种情况之前,相关应用程序已经处理了来自队列的 1k JMS 消息大约一半的时间。

---- Begin backtrace for Nested Throwables java.sql.SQLException: ORA-01654: unable to extend index DABUAT.INDEX1 by 128 in tablespace DABUAT_TBLSP at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)

我在网上快速浏览了一下,发现了一些关于为什么会发生这种情况的可能建议,如果有人能够清楚地解释为什么现在我的应用程序已经集群,我将非常感激。

问候卡尔

java oracle cluster-computing
4个回答
46
投票
您的磁盘空间不足。

增加你的

TABLESPACE

ALTER TABLESPACE DABUAT_TBLSP ADD DATAFILE 'C:\FolderWithPlentyOfSpace\DABUAT_TBLSP001.DBF' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 64G; -- Put your own size parameters here
    

1
投票
如果您正在使用 ASM 那么您可以添加以下评论

您可以运行以下命令来获取数据文件的大小

SELECT file_name, bytes / 1024 / 1024 mb FROM dba_data_files WHERE tablespace_name = 'APP_DATA' ORDER BY file_name; FILE_NAME mb ------------------------------------------------------------ ------- +DATA/SID/datafile/app_data.dbf 20000 +DATA/SID/datafile/app_data.dbf 28100

调整大小和添加

+DATA/path/indx_operational_00.dbf alter database datafile '+DATA/path/indx_operational_00.dbf' resize 3000m;
    

0
投票
我发现这个问题在将大型数据库的小子集迁移到 Docker 中的测试数据库时出现相同的错误。

在我的例子中,问题只是在于将系统表空间用于用户表,这是 Oracle 映像中的默认设置。使用命令创建自定义表空间后

create tablespace mytablespace datafile '/u01/app/oracle/oradata/XE/mytablespace.dbf' size 500M autoextend on next 250M maxsize 10G;`
(以及在该表空间中创建所有表和索引)问题消失了。无需对数据文件进行特殊处理。


0
投票

错误:在警报日志中

ORA-1654: 无法将表空间 PROD_01 中的索引 PRODADM.XT021S1 扩展 128 2024-03-23T16:26:11.156475+05:30

ORA-1654: 无法将表空间 PROD_01 中的索引 PRODADM.XT021S1 扩展 128 2024-03-23T16:26:19.194628+05:30

故障排除步骤:

**

    跟踪所有具有可用空间的表空间
  • < 10%
**

Select a.tablespace_name,sum(a.tots/1048576) Tot_Size, sum(a.sumb/1024) Tot_Free, sum(a.sumb)*100/sum(a.tots) Pct_Free, ceil((((sum(a.tots) * 15) - (sum(a.sumb)*100))/85 )/1048576) Min_Add from (select tablespace_name,0 tots,sum(bytes) sumb from dba_free_space a group by tablespace_name union Select tablespace_name,sum(bytes) tots,0 from dba_data_files group by tablespace_name) a group by a.tablespace_name having sum(a.sumb)*100/sum(a.tots) < 10 order by pct_free; TABLESPACE_NAME TOT_SIZE TOT_FREE PCT_FREE MIN_ADD ------------------------------ ---------- ---------- ---------- ---------- PROD_01 131071.938 0 0 23131
空间已完全填满,因此在警报日志中抛出上述错误,并且应用程序团队无法执行插入操作。

检查磁盘组中的数据文件位置。

select FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES/1024/1024 from dba_data_files where TABLESPACE_NAME='PROD_01'; FILE_NAME FILE_ID TABLESPACE_NAME BYTES/1024/1024 ------------------------------ ---------- ------------------------------ --------------- +DATA/SID/DATAFILE/PROD_01 2 PROD_01 32767.9844 .281.1133447489 +DATA/SID/DATAFILE/PROD_01 13 PROD_01 32767.9844 .1354.1133455263

在表空间中添加数据文件。

ALTER TABLESPACE PROD_01 ADD DATAFILE '+DATA' SIZE 2G AUTOEXTEND ON NEXT 1G MAXSIZE 32767M;
问题现已解决!!

© www.soinside.com 2019 - 2024. All rights reserved.