ORA-09817: Write to audit file failed 磁碟滿了導致登陸失敗

資料庫的資料檔案,表空間,不能直接刪除,會損壞資料庫!!!不能直接刪除,會損壞資料庫!!!不能直接刪除,會損壞資料庫!!!重要的事情說三遍。

ORA-09817: Write to audit file failed 報錯解決辦法

分析:是由於linux磁碟滿了,導致sqlplus / as sysdba 進不去 報ORA-09817,

可以考慮刪除linux下的無用檔案,我是清理trm 和trc檔案,清理監聽日誌,然後清理無用的表空間

——檢視磁碟,檔案使用情況

df -lh

du -sh *

——只要刪除linux下一些不用的檔案,磁碟空間釋放一下,也可以登入成功,不用進行下面的操作

——清理trm 和trc檔案 十幾G

find /u01/app/oracle/diag/rdbms/orcl/orcl/trace -mtime +7 -name “*。trm” | xargs rm -f

——清理監聽日誌 挺大的40G

find /u01/app/oracle/diag/tnslsnr/oracle11g/listener/alert -mtime +7 -name “log_*。xml” | xargs rm -f

——到這裡就可以登入成功了,下面刪除表空間是因為這些表空間沒有過,而且分配很多空間,浪費,切記生產庫不能刪除表空間

——查看錶空間使用

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

——查看錶空間裡面有沒存資料

——以表空間NONTAX_INDEX為例

select * from dba_tables t where t。tablespace_name=‘NONTAX_INDEX’;

select * from dba_indexes i where i。tablespace_name=‘NONTAX_INDEX’;

切記:刪除表或者表的資料無法釋放磁碟空間,只能減低表空間使用率,刪除表空間才能減低磁碟使用率,注意磁碟空間和表空間的區別,表空間是個容器,存放各種資料檔案,資料檔案存放表資料

——刪除表空間和資料檔案 contents引數表示刪除資料表示資料 datafiles表示資料檔案

drop tablespace NONTAX_INDEX including contents and datafiles;

如果要刪除的表空間太大,刪除後可能磁碟空間沒釋放,

輸入 lsof -n | grep deleted 檢視pid 再 kill -9 pid

後記:很多表空間有初始的大小,雖然不存入資料,但是用drop tablespace tablespace_name including datafiles;會報錯,因為雖然不存資料,但是還有有使用了幾兆,

要用drop tablespace tablespace_name including contents and datafiles;

——刪除空表空間,包含物理檔案

drop tablespace tablespace_name including datafiles;

——刪除非空表空間,包含物理檔案

drop tablespace tablespace_name including contents and datafiles;

ORA-09817: Write to audit file failed 磁碟滿了導致登陸失敗