Juro que, à medida que vou avançando cada vez mais na minha carreira na Oracle, tenho cada vez mais dificuldade em acompanhar os processos em segundo plano da Oracle. Eu gostaria de atribuir isso ao envelhecimento, mas depois de investigar isso, tenho certeza de que é apenas a explosão de processos em segundo plano da Oracle em 11g que está me causando problemas.
Hoje cedo, eu estava assistindo a uma guia de desempenho do banco de dados de produção no Grid Control. Meu cluster RAC de 3 nós estava com CPU alta, então eu analisei e notei que a maioria dos ciclos de CPU eram de um processo em segundo plano chamado NSA2. O que?!?!?! O que é NSA2? Tenho certeza que isso não tem nada a ver com segurança nacional.
Ao fazer uma pesquisa no Google sobre esse processo em segundo plano, encontrei uma consulta bacana para fornecer uma descrição rápida de cada processo em segundo plano do Oracle. Você precisará executar isso como SYS, pois consulta as tabelas X$:
column EXTERNAL_NAME format a13
column INTERNAL_NAME format a13
set lin 120
SELECT x$ksbdd.ksbddidn AS external_name,
x$ksmfsv.ksmfsnam AS internal_name, x$ksbdd.ksbdddsc AS description
FROM x$ksbdd, x$ksbdp, x$ksmfsv
WHERE x$ksbdd.indx = x$ksbdp.indx AND x$ksbdp.addr = x$ksmfsv.ksmfsadr
ORDER BY 1
; No meu banco de dados 11.2.0.2, essa consulta retornou 296 linhas! Não é à toa que eu não consigo acompanhar. Lembro-me de quando conseguia listar todos os processos em segundo plano de cabeça (SMON, PMON, ARCH, DBWR, LGWR, CKPT e RECO). Cada nova versão do Oracle aumenta o número de processos em segundo plano, o que provavelmente é uma coisa boa. Mas às vezes torna difícil para o DBA diagnosticar problemas.
Então, o que é NSA2? É um processo de transporte de redo responsável por enviar logs de redo arquivados para o meu banco de dados Standby. Uma vez que vi a descrição da consulta acima, era óbvio.
Portanto, dê uma lida em seu banco de dados para ver todos os maravilhosos processos em segundo plano que você pode encontrar em suas jornadas. Um dos meus favoritos na lista é TEST.
Atualização – 12/09/2012 – Depois que escrevi esta entrada no blog, descobri que a Oracle já documentou os Processos em Segundo Plano no Apêndice F da Referência do Banco de Dados. Não tenho certeza de quando a Oracle iniciou este apêndice e, se eu soubesse, teria apenas pesquisado o processo NSAx. Mas o script acima ainda é divertido e pode ser usado para descobrir novos processos em segundo plano que a Oracle não documentou.