記錄一次 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 添加數據文件之后,用戶反映業務恢復正常。