oracle数据库报错ora-01653表空间扩展失败解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle数据库报错ora-01653表空间扩展失败解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4346字,纯文字阅读大概需要7分钟。
内容图文
![oracle数据库报错ora-01653表空间扩展失败解决方案](/upload/InfoBanner/zyjiaocheng/491/cf824b2f670d4ec0a0f189ecada8b069.jpg)
可以看到有两张表的insert受到了影响,都是在USERS表空间里。用以下SQL查看表空间使用情况:
SELECT a.tablespace_name "表空间名",a.bytes / 1024 / 1024 "表空间大小(M)",(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)", b.bytes / 1024 / 1024 "空闲空间(M)",round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比" FROM (SELECT tablespace_name, sum(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a, ( SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest FROM dba_free_space GROUP BY tablespace_name ) b WHERE a.tablespace_name = b.tablespace_name ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;
可以看到USERS表空间已经使用了99.99%!马上就100%,再也没有地方存储数据了!正式环境啊!情况危急!
2)解决办法
--获取数据文件dbf路径 select tablespace_name, file_id,file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
以下两种方案都需要获取/home目录下实际物理大小,我登录到linux数据库服务器后,使用du -sh命令查看了/home目录大小为250GB。
第一种解决方案:
可以看到USERS表空间总共有3个dbf(此时我已经增加了04.dbf),复制其中一个dbf路径 /home/oracle/oradata/users01.dbf,覆盖下面的datafile参数:
--新增加一个dbf文件,指定该dbf文件大小为32GB左右,并使其每次自动扩展1GB,并且没有最大限制 alter tablespace users add datafile ‘/home/oracle/oradata/users04.dbf‘ size 32760m autoextend on next 1024m maxsize unlimited; --segment space management auto extent management local; 据说可以连接上一句一起执行(把上一句分号去掉即可),没执行,不知道执行效果,谨慎期间,慎用。
第二种解决方案:
--把原有的dbf数据文件大小调整(扩大) alter database datafile ‘/home/oracle/oradata/users01.dbf‘ resize 61440M; --没试过,不知道效果
我用的是第一种解决方案,第二种没试过,不知道效果如何。
3)解决后效果
我用的第一种解决方案,增加了04.dbf,再次使用SQL查看表空间使用情况:
SELECT a.tablespace_name "表空间名",a.bytes / 1024 / 1024 "表空间大小(M)",(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)", b.bytes / 1024 / 1024 "空闲空间(M)",round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比" FROM (SELECT tablespace_name, sum(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a, ( SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest FROM dba_free_space GROUP BY tablespace_name ) b WHERE a.tablespace_name = b.tablespace_name ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;
使用比已经从99.99%降低到69.42%,说明效果明显,方案可用。
再去查看/home,使用du -sh命令查看了/home目录大小为282GB。原来增加一个dbf文件会使得/home目录实际也增加32GB大小。
4)注意事项及所有用到的SQL
在上面的第一种解决方案里,32760m 约等于 32GB,根据最大块来算的,块计算SQL:
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;
其它SQL语句完整贴上来如下:
---查询数据文件以及数据文件大小 select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; select username, default_tablespace, temporary_tablespace from dba_users;
--获取数据文件路径 select tablespace_name, file_id,file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; --让数据文件自动扩展 alter tablespace users add datafile ‘/home/oracle/oradata/users04.dbf‘ size 32760m autoextend on next 1024m maxsize unlimited; --segment space management auto extent management local; 据说可以连接上一句一起执行(把上一句分号去掉即可),没执行,不知道执行效果,谨慎期间,慎用。 --把数据文件大小调整 alter database datafile ‘/home/oracle/oradata/users01.dbf‘ resize 61440M; --没试过,不知道效果
oracle数据库报错ora-01653表空间扩展失败解决方案
标签:说明 获取 表空间 code rom 扩展 截图 span 地方
本文系统来源:http://www.cnblogs.com/zhuwenjoyce/p/7489794.html
内容总结
以上是互联网集市为您收集整理的oracle数据库报错ora-01653表空间扩展失败解决方案全部内容,希望文章能够帮你解决oracle数据库报错ora-01653表空间扩展失败解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。