Oracle ORA-01654 解决方案
在往数据表里插入数据时,出现了ORA-01654:索引***无法通过8192(在表空间USER中)扩展
根据此提示,使用以下语句查看表空间大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -- 查看所有表空间的数据使用情况 SELECT Upper (F.TABLESPACE_NAME) "表空间名" , D.TOT_GROOTTE_MB "表空间大小(M)" , D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)" , To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99' ) || '%' "使用比" , F.TOTAL_BYTES "空闲空间(M)" , F.MAX_BYTES "最大块(M)" FROM ( SELECT TABLESPACE_NAME, Round( Sum (BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES, Round( Max (BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, ( SELECT DD.TABLESPACE_NAME, Round( Sum (DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1 |
发现USERS 的表空间使用率已经达到了 99.94%
通过此语句查询到 表空间所在系统目录
1 | select file_name , tablespace_name TOTAL_BYTES from dba_data_files |
通过此语句增加表空间,红色部分为表空间所在路径
1 | alter tablespace USERS add datafile 'F:\APP\ADMINISTRATOR\ORADATA\BIOLAP\USERS7.DBF' size 30G autoextend on ; --此处30G 根据自身情况增加,也可以写为 MB 格式,例如 30720MB |
执行时提示出错,磁盘空间不足
登录服务器查看磁盘空间:表空间所在盘空间不够30G 无法增加
此时可以跨盘建表空间,将表空间建到G盘,指定数据文件的路径就可以了
1 | alter tablespace USERS add datafile 'G:\ORADATA_SQZG\USERS7.DBF' size 30G autoextend on ; |
以上SQL语句为USERS表空间在G盘ORADATA_SQZG目录下创建了一个名称为USERS7.DBF的数据文件,该数据文件大小为30GB。
此时再看表空间大小,使用率为85.05%,测试insert语句正常执行
__EOF__
作 者:Aaron
出 处:https://www.cnblogs.com/Williamls/p/15945974.html
关于博主: 谦谦君子 卑以自牧
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了