ora-01654 unable to extend index

本文记录了一次在Oracle数据库中遇到的ORA-01654错误排查过程,详细介绍了如何通过查询用户信息、表空间使用情况来定位问题,并给出了实际解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直使用mysql,换了新工作初用oracle数据库,使用create table XXX as select * from XXX语句备份单张表时出现ora-01654 unable to extend index错误,网上查了一下都说可能是用户表空间不足导致的,虽然最后排查不是错误原因,但其间用到的相关查询还是在这里记录一下


select * from user_users;

查询用户信息


select username,default_tablespace from dba_users where username like '%USERNAME%';

查询用户使用的表空间


SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
FROM dba_free_space 
GROUP BY tablespace_name; 

查询表空间使用情况 


SELECT a.tablespace_name, 
a.bytes/(1024 * 1024) total, 
b.bytes/(1024 * 1024) used, 
c.bytes/(1024 * 1024) free, 
trunc(((b.bytes * 100) / a.bytes),2)||'%' "% USED ", 
trunc(((c.bytes * 100) / a.bytes),2)||'%' "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name;

查询表空间使用情况 

最后查出来对应的SYSTEM表空间是足够的(自动扩展的),create table 报错有待继续研究

-----------------------------------------------------------------------------------------------------------------------------------------

最新进展表里有个字段加上not null就没法创建,删掉约束就可以,不知道加上not null到底有什么影响

-----------------------------------------------------------------------------------------------------------------------------------------

仔细想了想not null不可能有什么影响,只是需要分配的空间更多表空间不够用。

上午坐在对面的同事出现了同样问题,我按照之前的方法帮他排查了原因的确是表空间不足,使用

 ALTER TABLESPACE XXX

ADD DATAFILE 'D:XXX' SIZE 50M

AUTOEXTEND ON

NEXT 10M

MAXSIZE 200M;

扩展了表空间以后问题的确解决了,可我的问题是咋回事?

-----------------------------------------------------------------------------------------------------------------------------------------

下午找人帮忙看了下,发现是这台数据库的机器使用的是虚拟机,df -m一看虚拟机分配的磁盘空间不足

。。。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值