【后端】解决ORACLE表空间问题
项目中经常遇到ORACLE表空间不足导致系统服务无法启动问题.
问题描述:ora-01653无法通过1024在表空间(KTMIS_KM)中扩展
解决方案:
第一步-》oracle查询表空间是否已满
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
查询结果-》
第二步-》查询表空间是否设置自增长,如果没有设置自增,最简单的方法就是设置文件自增,来解决表空间不足问题。
SELECT T.TABLESPACE_NAME,
D.FILE_NAME,
D.AUTOEXTENSIBLE,
D.BYTES,
D.MAXBYTES,
D.STATUS
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME, FILE_NAME;
查询结果-》
第三步-》解决上诉问题共有4种方式
1、增加数据文件
ALTER TABLESPACE KTMIS_KM ADD datafile 'E:\APP\ADMINISTRATOR\TMIS\KTMIS_KM2.DBF' SIZE 2048M;
2、增加数据文件并允许自动增长
ALTER TABLESPACE KTMIS_KM ADD datafile
'E:\APP\ADMINISTRATOR\TMIS\KTMIS_KM2.DBF' SIZE 2048M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;
3、允许已存在的数据文件自动增长(未设置自增的情况,这种有个弊端就是单个文件可能会太大)
ALTER DATABASE DATAFILE 'E:\APP\ADMINISTRATOR\TMIS\KTMIS_KM.DBF' AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;
4、手工改变已存在数据文件的大小
ALTER DATABASE DATAFILE 'E:\APP\ADMINISTRATOR\TMIS\KTMIS_KM.DBF' RESIZE 10240M;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律