Social Icons


Aprenda Oracle investindo pouco, por assinatura, no "Portal ABC do Oracle"

12 de dez de 2018

Bug com Unified Auditing no Oracle 12c



 
     Além da arquitetura Multitenant, outra feature que me chamou muita atenção no Oracle 12c,  foi a Unified Auditing, por 2 motivos principais:

           1- Possui um novo buffer para armazenar os dados da auditoria antes deles serem gravados em uma tabela, otimizando desse modo a performance da inserção dos registros de auditoria;

           2- Permite unificar em uma única tabela os dados de auditoria que antes ficavam espalhados em vários lugares, o que tornava um pouco mais difícil efetuar consultas a todos os registros de auditoria de diversos componentes do Oracle.

     Para aprender mais sobre Unified Auditing e ver como habilitá-la a partir do 12c, sugiro a leitura dos artigos das referências e do artigo How to migrate to Unified Auditing?. O que quero comentar aqui é sobre o "Bug 27576342: DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION DOES NOT MOVE LOB AND INDEX PARTITIONS". Após migrarmos os BDs de produção da empresa onde trabalho de 11.2.0.4 para 12.2.0.1, em Junho deste ano, começamos a pesquisar os novos recursos dessa versão e resolvi também migrar a auditoria padrão, que utilizávamos no 11G, para a Unified Auditing, nova no 12c, visando obter algumas das suas vantagens já citadas anteriormente.

       Na Unified Auditing a Oracle tirou as tabelas de auditoria do schema SYS e tablespace SYSTEM, e moveu-as para o schema AUDSYS e tablespace SYSAUX. Isso de certa forma foi uma melhoria, pois permite gerar menor contenção de dados no tablespace SYSTEM, porém melhor que isso, seria isolar os dados de auditoria em um tablespace próprio, que já era indicado no 11G, e que ainda podemos fazer no 12c, portanto, movi os dados de auditoria para um tablespace isolado chamado AUDSYS (falo sobre isso nos treinamento Database Performance Tuning).

     O problema ao efetuar o procedimento comentado no parágrafo anterior, isolando os objetos de auditoria em um novo tablespace, é que alguns LOBs e Index Partitions da tabela de auditoria podem não ser movidos para o novo tablespace, e para resolver isso você terá que aplicar o patch 27576342, conforme indicado no doc MOS “Dbms_Audit_Mgmt.Set_Audit_Trail_Location Does Not Move Lob And Index Partitions (Doc ID 2428624.1)”.  

     No 12cR2 efetuei os devidos procedimentos para migrar da Auditoria padrão para Unified Auditing em diversos bancos de dados, e o bug se apresentou em apenas 1 BD de produção. Nele, depois de aplicar o patch, para que os segmentos de LOBs e Índices fossem totalmente migrados para o novo tablespace, tive que também fazer uma espécie de TRUNCATE na tabela de auditoria, executando o comando abaixo: 

exec dbms_audit_mgmt.clean_audit_trail( audit_trail_type => dbms_audit_mgmt.audit_trail_unified, use_last_arch_timestamp => false);

     Uma forma fácil de verificar se o bug ocorreu no seu BD é executar o SQL abaixo após mover os dados de auditoria para o novo tablespace, e ver se algum segmento ficou ainda no tablespace SYSAUX, conferindo os valores que retornam na coluna TABLESPACE_NAME, conforme podemos ver no resultado da Imagem 01:

select  SEGMENT_NAME,
        SEGMENT_SUBTYPE,SEGMENT_TYPE,BYTES/1024/1024 MBYTES,  
        TABLESPACE_NAME  
from    dba_segments 
where   OWNER = 'AUDSYS' order by 1;



Imagem 01 - Verificando se existem segmentos de LOB e índices no SYSAUX após migrar tabela de auditoria para o AUDSYS

     Caso você detecte o bug, recomendo tomar as providências já comentadas anteriormente para mover os objetos de auditoria para o novo tablespace o mais breve possível, visando evitar 2 problemas que eu tive:

         1- Se o tablespace SYSAUX está muito grande por causa das configurações de retenção dos registros de auditoria, e você executou algum procedimento para apagar esses registros, você não conseguirá reduzir o tamanho do SYSAUX, pois não existe ainda procedimento que permita fazer redução nesse tablespace;
  
         2- Se você precisar executar, por exemplo, um DUPLICATE desse BD usando os procedimentos convencionais do RMAN, ou fazer uma recuperação do tipo "Tablespace Point-in-time Recovery", esses procedimentos irão falhar. Tivemos essa experiência na empresa onde trabalho. Veja os erros que ocorriam quando ainda existiam segmentos de LOB e índices no tablespace SYSAUX, após migrar a tabela de auditoria para um novo tablespace chamado AUDSYS:

Violation: ORA-39910: Partitioned Global index 
AUDSYS.SYS_IL0000157257C00031$$ in tablespace SYSAUX points to partition 
SYS_P1232 of table AUDSYS.AUD$UNIFIED in tablespace AUDSYS outside of 
transportable set.
     Violation: ORA-39910: Partitioned Global index 
AUDSYS.SYS_IL0000157257C00097$$ in tablespace SYSAUX points to partition 
SYS_P1232 of table AUDSYS.AUD$UNIFIED in tablespace AUDSYS outside of 
transportable set.
     Violation: ORA-39915: Partition SYS_P1232 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1235 in tablespace SYSAUX.
     Violation: ORA-39915: Partition SYS_P1912 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1917 in tablespace SYSAUX.
     Violation: ORA-39910: Partitioned Global index 
AUDSYS.SYS_IL0000157257C00030$$ in tablespace SYSAUX points to partition 
SYS_P1232 of table AUDSYS.AUD$UNIFIED in tablespace AUDSYS outside of 
transportable set.
     Violation: ORA-39915: Partition SYS_P1232 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1233 in tablespace SYSAUX.
     Violation: ORA-39915: Partition SYS_P1912 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1913 in tablespace SYSAUX.
     Violation: ORA-39915: Partition SYS_P1912 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1915 in tablespace SYSAUX.
     Violation: ORA-39915: Partition SYS_P1232 of table 
AUDSYS.AUD$UNIFIED in tablespace AUDSYS points to LOB segment 
AUDSYS.SYS_LOB_P1237 in tablespace SYSAUX.


Por hoje é só!

[]s


Referências:

Auditing with Unified Auditing;
- Introduction to Auditing
Unified Auditing, um dos novos recursos do Oracle Database 12c;

0 comentários:

Postar um comentário

 

LINKS ÚTEIS

Suporte remoto alunos

Seguidores

Meu One Drive (antigo Sky Drive)