oracle 提示表空间不足(ORA-01653 unable to extend table)
1、如果oracle后台都无法进入,需先删除一些文件,保证可以登入oracle后台1.1、find / -type f -size +500M(查看超过指定大小的文件,一些压缩文件,可临时删除)2、从根目录起,查看哪个目录使用的空间最大2.1、du -h / --max-depth=1其中根目录共计使用68G,/data目录使用了52G,以此类推,直到找到空间占用比较大的目录最后定位到目录$ORA
1、如果oracle后台都无法进入,需先删除一些文件,保证可以登入oracle后台
1.1、find / -type f -size +500M(查看超过指定大小的文件,一些压缩文件,可临时删除)
2、从根目录起,查看哪个目录使用的空间最大
2.1、du -h / --max-depth=1
其中根目录共计使用68G,/data目录使用了52G,以此类推,直到找到空间占用比较大的目录
最后定位到目录$ORACLE_HOME/diag/rdbms/orcl/orcl/incident
3、删除incident文件
进入oracle用户,执行:adrci
删除10天前的incident记录,如果文件比较大,需要的时间比较长
4、删除大表中的历史数据(测试环境可删除)
4.1、根据表占用空间大小排序
select * from (select t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024 / 1024) total
from dba_segments t
group by OWNER, t.segment_name, t.segment_type) order by total desc
4.2、备份30天之内的数据
create table a_bak as select * from a where time > sysdate - 30;
4.3、删除表,并清除表空间
drop table a purge; (或truncate table a DROP STORAGE;)
4.4、表名重命名
alter table a_bak rename to a;
注:drop table 不会释放表空间,但表空间的利用率会有变化,就是表空间还是那么大,但是能用的空间变大了。
查询表空间利用率:
select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%" from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)