我正在 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)
我在网上快速浏览了一下,发现了一些关于为什么会发生这种情况的可能建议,如果有人能够清楚地解释为什么现在我的应用程序已经集群,我将非常感激。
问候卡尔
增加你的
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
您可以运行以下命令来获取数据文件的大小
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;
在我的例子中,问题只是在于将系统表空间用于用户表,这是 Oracle 映像中的默认设置。使用命令创建自定义表空间后
create tablespace mytablespace datafile '/u01/app/oracle/oradata/XE/mytablespace.dbf' size 500M autoextend on next 250M maxsize 10G;`
(以及在该表空间中创建所有表和索引)问题消失了。无需对数据文件进行特殊处理。
错误:在警报日志中
ORA-1654: 无法将表空间 PROD_01 中的索引 PRODADM.XT021S1 扩展 128 2024-03-23T16:26:11.156475+05:30ORA-1654: 无法将表空间 PROD_01 中的索引 PRODADM.XT021S1 扩展 128 2024-03-23T16:26:19.194628+05:30
故障排除步骤:
**
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;
问题现已解决!!