[oracle_br] Auditoria de usuário no oracle

2015-07-10 Por tôpico Cristiano Vasconcelos Barbosa cvasconcel...@gmail.com [oracle_br]
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

2012-03-21 Por tôpico Eliane SILVA
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

2012-03-21 Por tôpico Milton Bastos Henriquis Jr.
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

2012-03-21 Por tôpico Vitor Ugo Roda da Rosa Junior
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