记录一次 Oracle 表空间不足问题的解决过程
记录一次 Oracle 表空间不足问题的解决过程
6月14日,某医院信息科用户反映无法提交门诊病例,门诊处方也无法开立。其他功能是正常的。考虑可能是与门诊病例有关的表空间用完了。
Oracle表空间的数据文件默认是可以自动增长的,但是单个文件的最大大小为32GB,如果文件的大小已经增长到上限,就会导致该表空间无法扩充,无法写入任何数据。
实用以下命令查看表空间的利用率:
set pages 200;
set lines 200SELECT total.tablespace_name,Round(total.MB,2) AS Total_MB,Round(total.MB - free.MB,2) AS Used_MB,Round(( 1 - free.MB / total.MB ) * 100,2)
|| '%' AS Used_Pct
FROM (SELECT tablespace_name,Sum(bytes) / 1024 / 1024 AS MB
FROM dba_free_space
GROUP BY tablespace_name) free,(SELECT tablespace_name,Sum(bytes) / 1024 / 1024 AS MB
FROM dba_data_files
GROUP BY tablespace_name) total
WHERE free.tablespace_name = total.tablespace_name
order by Used_Pct desc;
查询结果如下图所示:
发现有一个表名为 EMR52025 的表空间利用率达到了99.91%,极有可能是这个表空间的空间耗尽。实用如下命令为表空间 EMR52025 添加4个数据文件,每个文件的初始大小为500MB,可以自动增长,每次增长100MB:
ALTER TABLESPACE EMR52025 ADD DATAFILE '+DATA/hisdb/datafile/emr52025_2025061401.dbf' SIZE 500M autoextend on next 100M;ALTER TABLESPACE EMR52025 ADD DATAFILE '+DATA/hisdb/datafile/emr52025_2025061402.dbf' SIZE 500M autoextend on next 100M;ALTER TABLESPACE EMR52025 ADD DATAFILE '+DATA/hisdb/datafile/emr52025_2025061403.dbf' SIZE 500M autoextend on next 100M;ALTER TABLESPACE EMR52025 ADD DATAFILE '+DATA/hisdb/datafile/emr52025_2025061404.dbf' SIZE 500M autoextend on next 100M;
为表空间 EMR52025 添加数据文件之后,用户反映业务恢复正常。