我的磁盘已满,因此我删除了 oracle 临时文件以释放空间。我使用 oragle 10g 和 CentOS 版本 4.4 操作系统。
首先搜索临时文件
SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE tablespace_name = 'TEMP';
删除临时文件(6 个文件)
alter database TEMPFILE '/oracle/oradata/ral/temp0X.dbf' drop including datafiles;
但现在我无法创建一个文件
ALTER TABLESPACE temp ADD TEMPFILE '/oracle/oradata/ral/temp01.dbf' SIZE 512m AUTOEXTEND ON NEXT 250m MAXSIZE 2048m;
ERROR
ALTER TABLESPACE temp ADD TEMPFILE '/oracle/oradata/ral/temp01.dbf' SIZE 512m AUTOEXTEND ON NEXT 250m MAXSIZE 2048m
Informe de error:
Error SQL: ORA-01119: error create database file '/oracle/oradata/ral/temp01.dbf'
ORA-27044: no se ha podido escribir el bloque de cabecera del archivo
Linux-x86_64 Error: 28: No space left on device
Additional information: 3
01119. 00000 - "error in creating database file '%s'"
*Cause: Usually due to not having enough space on the device.
*Action:
我有可用空间,但无法创建文件。问题是什么?
提前致谢
答案1
在盒子上运行df
——您的磁盘可能没有可用的空间。
请参阅有关 Oracle 未释放磁盘空间的相关 StackOverflow 答案:https://stackoverflow.com/questions/9432465/reclaim-the-space-after-a-large-delete-in-oracle
答案2
默认情况下,为系统(root用户)保留一定数量的空间。
下面的操作将保留空间设置为 0 块,这样所有可用空间都可以供用户(以及 Oracle)使用。
tune2fs -m 0 /dev/sdb1
sdb1
用有问题的设备进行替换。
现在运行df
应该可以确认该空间确实可供使用。
在根文件系统或 /var 文件系统上这可能不建议使用,同时也要知道,由于碎片化,完全填满任何 ext 文件系统可能会导致性能问题。