Hoje venho abordar um problema do dia a dia de um DBA. Imagine a situação em que o DBA recebe um chamado de dar unlock em um usuário, poucos minutos depois recebe mais um, e depois outro e etc… Em sistemas é comum a configuração de um mesmo schema em diversos lugares. Agora uma provável alteração de senha pode gerar uma dor de cabeça do tamanho de um AT-AT.
Como podemos entender qual sistema que está tentando acessar o banco com a senha errada?
Com o problema descrito, escrevi um código baseado no DBA_AUDIT_SESSION para obter informações do usuário do sistema operacional, usuário do banco, dia e hora da tentativa de acesso e host que está tentando acessar o schema e database. No Código abaixo é possível customizar o username e hora em que é necessário realizar tal pesquisa.
------------------------------------------------------------------------------------------------------------
select
os_username,
username,
to_char(timestamp, 'dd-mm-yyyy hh24:mi:ss'),
userhost
from dba_audit_session
where
returncode<>0
AND (to_char(timestamp, 'dd-mm-yyyy hh24:mi:ss') between '28-12-2016 09:47:00' and '28-12-2016 10:00:00’)
AND username='nome_do_schema'
order by to_char(timestamp, 'dd-mm-yyyy hh24:mi:ss') desc;
------------------------------------------------------------------------------------------------------------
Agora que a curiosidade de resolver o problema foi saciada, aproveito para explicar o que raios é DBA_AUDIT_SESSION. Para facilitar a vida, cito aqui a definição de auditoria pelo blog http://www.profissionaloracle.com.br/gpo/servicos/easyblog/entry/2009/09/27/auditoria-no-oracle-10g: “Auditoria é a habilidade do banco de dados Oracle poder gerar logs de auditoria (XML, tabelas, arquivos de SO, …) em atividades suspeitas do usuário, como por exemplo: monitorar o que um determinado usuário está fazendo ou até mesmo saber para qual valor a coluna de salário da tabela empregados está sendo atualizadas. Com a auditoria, esses dados são facilmente capturados e guardados para posteriormente serem analisados.”
DBA_AUDIT_SESSION disponibiliza todo os rastros de dados ligados a CONNECT e DISCONNECT.
Obrigado pela atenção mais uma vez.
Lucas Rehem de Azevedo
Links utilizados nesse post: