Ora-09817: write to audit file failed
Hoje estarei abordando sobre o erro : “ORA-09817: Write to audit file failed.” . Este erro é reportado, quando os arquivos de dump de auditoria (adump) do Oracle, estão sem espaço para serem escritos. Diferentemente, dos arquivos de backgrounds (bdump), core dump (cdump) e outros, o arquivo de auditoria (adump), não simplesmente “congela” o Banco de Dados, como os anteriores, ele não deixa logar no banco. Por que isto? A resposta é simples, se os arquivos de auditoria de banco estão com problemas para serem escritos, o banco fica sem auditoria e, banco sem auditoria, não tem segurança.
Segue exemplo:
[oracle@localhost ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Sat Aug 25 16:10:13 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-09817: Write to audit file failed.
Linux Error: 28: No space left on device
Additional information: 12
ORA-09945: Unable to initialize the audit trail file
Linux Error: 28: No space left on device
A primeira açao de contorno é localizar o diretório dos arquivos de auditoria. O caminho que a Oracle recomenda é o $ORACLE_BASE/admin , no caso do exemplo abaixo : u01/app/oracle/admin
Consultando o arquivo oratab, que se localiza no file system /etc/ para obter o conhecimento de onde está sendo gerado os meus arquivos de auditoria.
[oracle@localhost ~]$ cat /etc/oratab
#Backup file is /u01/app/oracle/product/11.2.0/dbhome_1/srvm/admin/oratab.bak.localhost line added by Agent
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM:/u01/app/oracle/product/11.2.0/grid:N
standbysp:/u01/app/oracle/product/11.2.0/dbhome_1:N
orcl2:/u01/app/oracle/product/11.2.0/dbhome_1:N # line added by Agent
teste:/u01/app/oracle/product/11.2.0/dbhome_1:N
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N # line added by Agent
Se dirigindo até o caminho da localização:
[oracle@localhost ~]$ cd /u01/app/oracle/admin
[oracle@localhost orcl]$ ls -ltr
total 32
drwxr-x--- 2 oracle oracle 4096 Jul 30 2011 scripts
drwxr-x--- 2 oracle oracle 4096 Jul 30 2011 pfile
drwxr-x--- 2 oracle oracle 4096 Jan 5 2012 dpdump
drwxr-x--- 2 oracle oracle 20480 Aug 25 15:26 adump
[oracle@localhost orcl]$
Verificação do espaço disponível no ambiente:
Em linux *: df -h .
Em outros, pode se tentar *: df -gt .
*Ambas as consultas trazem o valor em GigaBytes.
[oracle@localhost scripts]$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 11G 10G 9.5M 100% /
Verificamos que o file system está com 100% de utilização. Sendo assim, abaixo segue a listagem dos arquivos:
[oracle@localhost adump]$ ls -ltr
total 212
-rw-rw---- 1 oracle dba 751 Jan 11 2012 orcl_ora_4132_1.aud
-rw-r----- 1 oracle dba 759 Jan 11 2012 orcl_ora_4326_1.aud
-rw-r----- 1 oracle dba 758 Jan 11 2012 orcl_ora_4263_3.aud
-rw-r----- 1 oracle dba 981 Jan 11 2012 orcl_ora_4352_1.aud
-rw-rw---- 1 oracle dba 751 Jan 18 2012 orcl_ora_4348_1.aud
-rw-r----- 1 oracle dba 759 Jan 18 2012 orcl_ora_4407_1.aud
-rw-r----- 1 oracle dba 758 Jan 18 2012 orcl_ora_4263_4.aud
-rw-r----- 1 oracle dba 981 Jan 18 2012 orcl_ora_4432_1.aud
-rw-r----- 1 oracle dba 759 Jan 22 2012 orcl_ora_4279_1.aud
-rw-r----- 1 oracle dba 758 Jan 22 2012 orcl_ora_4211_2.aud
-rw-r----- 1 oracle dba 981 Jan 22 2012 orcl_ora_4299_1.aud
-rw-rw---- 1 oracle dba 751 Jan 22 2012 orcl_ora_4343_1.aud
-rw-rw---- 1 oracle dba 751 Jan 22 2012 orcl_ora_4347_1.aud
-rw-rw---- 1 oracle dba 764 Jan 22 2012 orcl_ora_4397_1.aud
-rw-rw---- 1 oracle dba 758 Jan 22 2012 orcl_ora_4347_2.aud
-rw-r----- 1 oracle dba 759 Jan 22 2012 orcl_ora_4404_1.aud
-rw-r----- 1 oracle dba 759 Apr 29 20:42 orcl_ora_4423_1.aud
-rw-r----- 1 oracle dba 758 Apr 29 20:42 orcl_ora_4357_2.aud
-rw-r----- 1 oracle dba 981 Apr 29 20:42 orcl_ora_4447_1.aud
-rw-rw---- 1 oracle dba 751 Apr 29 20:45 orcl_ora_4481_1.aud
-rw-rw---- 1 oracle dba 764 Apr 29 20:45 orcl_ora_4530_1.aud
-rw-rw---- 1 oracle dba 758 Apr 29 20:45 orcl_ora_4481_2.aud
-rw-r----- 1 oracle dba 759 Apr 29 20:45 orcl_ora_4539_1.aud
-rw-r----- 1 oracle dba 759 Jun 16 12:10 orcl_ora_4007_1.aud
-rw-r----- 1 oracle dba 758 Jun 16 12:10 orcl_ora_3941_2.aud
-rw-r----- 1 oracle dba 981 Jun 16 12:10 orcl_ora_4029_1.aud
-rw-rw---- 1 oracle dba 751 Jun 16 12:19 orcl_ora_4398_1.aud
-rw-rw---- 1 oracle dba 764 Jun 16 12:19 orcl_ora_4452_1.aud
-rw-rw---- 1 oracle dba 758 Jun 16 12:19 orcl_ora_4398_2.aud
-rw-r----- 1 oracle dba 759 Jun 16 12:19 orcl_ora_4459_1.aud
-rw-r----- 1 oracle dba 788 Jun 19 09:53 orcl_ora_4293_2.aud
-rw-r----- 1 oracle dba 789 Jun 19 09:53 orcl_ora_4425_1.aud
-rw-r----- 1 oracle dba 981 Jun 19 09:53 orcl_ora_4442_1.aud
-rw-r----- 1 oracle dba 758 Jun 20 11:56 orcl_ora_4230_2.aud
-rw-r----- 1 oracle dba 759 Jun 20 11:56 orcl_ora_4465_1.aud
-rw-r----- 1 oracle dba 981 Jun 20 11:56 orcl_ora_4489_1.aud
-rw-r----- 1 oracle dba 759 Jul 6 20:23 orcl_ora_4286_1.aud
-rw-r----- 1 oracle dba 758 Jul 6 20:23 orcl_ora_4213_2.aud
-rw-r----- 1 oracle dba 981 Jul 6 20:23 orcl_ora_4311_1.aud
-rw-r----- 1 oracle dba 759 Jul 9 19:23 orcl_ora_4285_1.aud
-rw-r----- 1 oracle dba 758 Jul 9 19:23 orcl_ora_4216_2.aud
-rw-r----- 1 oracle dba 981 Jul 9 19:23 orcl_ora_4306_1.aud
-rw-r----- 1 oracle dba 758 Jul 10 11:17 orcl_ora_4270_2.aud
-rw-r----- 1 oracle dba 759 Jul 10 11:17 orcl_ora_4373_1.aud
-rw-r----- 1 oracle dba 981 Jul 10 11:17 orcl_ora_4414_1.aud
-rw-rw---- 1 oracle dba 751 Aug 25 15:19 orcl_ora_4116_1.aud
-rw-rw---- 1 oracle dba 751 Aug 25 15:25 orcl_ora_4203_1.aud
-rw-r----- 1 oracle dba 759 Aug 25 15:25 orcl_ora_4280_1.aud
-rw-r----- 1 oracle dba 758 Aug 25 15:25 orcl_ora_4215_2.aud
-rw-r----- 1 oracle dba 981 Aug 25 15:25 orcl_ora_4302_1.aud
-rw-rw---- 1 oracle dba 764 Aug 25 15:26 orcl_ora_4354_1.aud
-rw-rw---- 1 oracle dba 758 Aug 25 15:26 orcl_ora_4203_2.aud
Para se remover arquivos, pode se usar a cláusula rm *.extensão
[oracle@localhost adump]$ rm *.aud
ou
Utilizar o find . -name “*.extensao” -mtime +numeroDeDiasQueEuQueroQueDeixeDesdeADataPresente (no exemplo abaixo, 2 dias antes da data de hoje) -exe rm {} ;
[oracle@localhost adump]$ find . -name "*.aud" -mtime +2 -exec rm {} ;
Listando para verificar se os arquivos foram removidos.
[oracle@localhost orcl]$ cd adump
[oracle@localhost adump]$ ls -ltr
total 0
Posteriormente, tente se conectar no Banco de Dados novamente.
[oracle@localhost orcl]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Sat Aug 25 16:23:54 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL>
Para questões de boas práticas, evite deixar os diretórios dos arquivos de auditoria, background , core dump, entre outros, encherem.
Espero tê-lo ajudado.
Abraços.
Referências