[oracle_br] Auditoria de usuário no oracle
Boa tarde amigos, Em primeira instância, seguem informações do meu ambiente de trabalho: Oracle: Current Versions Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi PL/SQL Release 10.2.0.3.0 - Production CORE 10.2.0.3.0 Production TNS for Linux: Version 10.2.0.3.0 - Production NLSRTL Version 10.2.0.3.0 - Production Tool que uso para executar os scripts: SQL*PLUS: Release 10.2.0.3.0 - Production TOAD v12.1.0.22 no Windows 8.1 Pro 64 bits Sistema operacional: Estação: Windows 8.1 Pro 64 bits, onde rodo o TOAD v12.1.0.22 no Windows 8.1 Pro 64 bits (PRINCIPAL), as vezes o SQLDeveloper Oracle ou PLSQL Developer. Servidor: Enterprise Linux Enterprise Linux AS release 4 (October Update 7) Linux dominio.local 2.6.9-78.0.0.0.1.ELsmp #1 SMP Fri Jul 25 16:04:35 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux Em segunda instância, vem o questionamento: Caros amigos, após consulta às diversas thread´s do grupo, não obtive solução para o que estou precisando, então, vamos a questão: Estou precisando, MUITO, de uma auditoria que me conceda relatórios de atividades dos usuários do Oracle incluindo seu logon, logof e tempo decorrido desta conexão, exemplo do tipo "elapsed_minutes = round((logoff_day - logon_day)*1440, 2)". De logo, poderíamos questionar: Por que não implementar o "ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;" e, mandar auditar as tentativas com ou sem sucesso de logon?. Acontece que bem o mal, teria que desmontar e montar novamente o banco, o que não gostaria de fazê-lo, pelo menos neste momento. Em pesquisas, deparei-me com a estrutura sugerida pelo livro "Physical Database Design Using Oracle" de "Donald K. Burleson" localizada nas páginas 101 à 110 do mesmo também encontrada no site < http://www.dba-oracle.com/art_builder_sec_audit.htm>. Acontece que, após implementá-la, sem erros, o que obtive foi o spoll abaixo disposto, onde não está registrando a segunda parte da auditoria, ou seja, a trigger "logoff_audit_trigger", referente aos campos "LAST_PROGRAM, LAST_ACTION, LAST_MODULE, LOGOFF_DAY, LOGOFF_TIME, ELAPSED_MINUTES". A estrutura completa encontra-se na refrência acima exposta, contudo, vou postá-la para facilitar o raciocínio: /* Formatted on 10/07/2015 09:40:42 (QP5 v5.163.1008.3004) */ connect sys/manager; CREATE TABLE SYS.stats$user_log ( user_id VARCHAR2(30), session_id NUMBER(8), host VARCHAR2(30), last_program VARCHAR2(48), last_action VARCHAR2(32), last_module VARCHAR2(32), logon_dayDATE, logon_time VARCHAR2(10), logoff_day DATE, logoff_time VARCHAR2(10), elapsed_minutes NUMBER(8) ); / /* Formatted on 10/07/2015 09:47:42 (QP5 v5.163.1008.3004) */ CREATE OR REPLACE TRIGGER logon_audit_trigger AFTER LOGON ON DATABASE BEGIN INSERT INTO stats$user_log VALUES (USER, SYS_CONTEXT ('USERENV', 'SESSIONID'), SYS_CONTEXT ('USERENV', 'HOST'), NULL, NULL, NULL, SYSDATE, TO_CHAR (SYSDATE, 'hh24:mi:ss'), NULL, NULL, NULL); COMMIT; END; / /* Formatted on 10/07/2015 09:49:57 (QP5 v5.163.1008.3004) */ CREATE OR REPLACE TRIGGER logoff_audit_trigger BEFORE LOGOFF ON DATABASE BEGIN -- *** -- Update the last action accessed -- *** UPDATE stats$user_log SET last_action = (SELECT action FROM v$session WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = audsid) WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; --*** -- Update the last program accessed -- *** UPDATE stats$user_log SET last_program = (SELECT program FROM v$session WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = audsid) WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; -- *** -- Update the last module accessed -- *** UPDATE stats$user_log SET last_module = (SELECT module FROM v$session WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = audsid) WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; -- *** -- Update the logoff day -- *** UPDATE stats$user_log SET logoff_day = SYSDATE WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; -- *** -- Update the logoff time -- *** UPDATE stats$user_lo
Re: [oracle_br] Auditoria de Usuário no Oracle
Valeu pelo retorno. Os documentos são muito bons. Quanto ao que queremos, precisamos de um código que é enviado por uma aplicação que é um pacote fechado. Acrescentando, a aplicação utiliza somente um determinado usuário e pode ser que em determinados momentos haja a conexão e desconexão em seguida de ter executado algum sql. Talvez também tenhamos que usar alguma ferramenta no cliente para apoiar nesse processo. Eliane. >>> "Milton Bastos Henriquis Jr." 21/3/2012 12:04 >>> Depende da auditoria que você deseja... Veja se isso te ajuda: http://miltonbastos.com/2012/01/26/oca-11g-auditoria-de-banco-de-dados-parte-1/ http://miltonbastos.com/2012/01/27/oca-11g-auditoria-de-banco-de-dados-parte-2/ On Wed, Mar 21, 2012 at 12:00 PM, Eliane SILVA wrote: > ** > > > > Pessoal, > > Vocês sabem se tem como auditarmos um determinado usuário, > independente da conexão e também sem ter que dar o shutdown ? > Tentamos fazer isso utilizando o > sys.dbms_system.set_sql_trace_in_session(SID, SERIAL#,TRUE).Porém temos > que saber a conexão. > > Obrigada. > > Eliane. > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Att, [As partes desta mensagem que não continham texto foram removidas] -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Auditoria de Usuário no Oracle
Depende da auditoria que você deseja... Veja se isso te ajuda: http://miltonbastos.com/2012/01/26/oca-11g-auditoria-de-banco-de-dados-parte-1/ http://miltonbastos.com/2012/01/27/oca-11g-auditoria-de-banco-de-dados-parte-2/ On Wed, Mar 21, 2012 at 12:00 PM, Eliane SILVA wrote: > ** > > > > Pessoal, > > Vocês sabem se tem como auditarmos um determinado usuário, > independente da conexão e também sem ter que dar o shutdown ? > Tentamos fazer isso utilizando o > sys.dbms_system.set_sql_trace_in_session(SID, SERIAL#,TRUE).Porém temos > que saber a conexão. > > Obrigada. > > Eliane. > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Att, [As partes desta mensagem que não continham texto foram removidas] -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Auditoria de Usuário no Oracle
Depende de que auditoria tu queres. É possível com uma trigger de logon por exemplo auditar se um usuário faz insert,delete, update em uma ou mais tabelas e não é necessário um restart da instance. :) Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 11g DBA Certified Professional - OCP Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist mail, gtalk e msn: vitorj...@gmail.com http://certificacaobd.com.br/ skype: vjunior1981 On 21/03/2012, at 12:00, Eliane SILVA wrote: > > Pessoal, > > Vocês sabem se tem como auditarmos um determinado usuário, > independente da conexão e também sem ter que dar o shutdown ? > Tentamos fazer isso utilizando o > sys.dbms_system.set_sql_trace_in_session(SID, SERIAL#,TRUE).Porém temos > que saber a conexão. > > Obrigada. > > Eliane. > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas] -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html