Pular para o conteúdo

Erro ORA-09817: Falha ao escrever no arquivo de auditoria – Como resolver ?

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:<N|Y>:
#
# The first and second fields are the system identifier andhome
# 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 ter ajudado.

Bruno Reis

Bruno Reis

DBA ORACLE  na International Business Machines (IBM), fornecendo suporte para grandes clientes. Técnico em Informática pela Escola Técnica Polivalente de Americana e estudante de Ciência Computação . Mantenedor do Weblog sobre Banco de Dados Oracle e Gerenciamento de Serviços de TI: www.brunors.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress