[oracle_br] Re: Auditoria de usuário no oracle

2015-07-10 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Boa tarde, blz ? 
   Então, antes de Responder a primeira coisa que eu te digo é que, se 
REALMENTE vc não está com o parâmetro AUDIT_TRAIL apontando para DB (isso é o 
default, então normalmente está) eu te Recomendo que vc negocie uma janelinha 
de manutenção o quano antes e implemente a Auditoria de banco, mesmo : hoje 
tudo bem, vc quer só logon  logoff, que é uma coisa que vc pode obter via 
trigger facilmente, mas COM CERTEZA daqui a pouco neguim VAI te exigir 
informação de logins falhados, Objetos acessados durante a sessão (pra ver se 
tem alguém acessando dados confidenciais que não tem direito) e coisas assim, 
que vc não consegue obter facilmente sem a Auditoria...
   
  Aviso/recomendação feita, a resposta :  a msg de erro (ORA-01438: valor 
maior que a precisão especificada usado para esta coluna) é BEM clara e 
específica, vc está tentando carregar numa variável ou coluna de tabela um 
valor que ultrapassa o comprimento/precisão previstos No seu caso, como 
(olhando por cima o código que vc mostra) não vi nenhum carregamento direto em 
variável (ie, vc não te SELECT coluna INTO variável, FETCH, nem atribuição tipo 
variavel := valor), é um dos INSERTs ou dos UPDATEs que tá botando um valor 
muito grande
   Fosse um código extremamente complexo e longo, onde não é humanamente 
possível/viável se encontrar os SQLs possíveis causadores, eu diria pra vc 
fazer um trace OU setar um evento de dump, mas como não é tão longo, eu diria 
para vc analisar um pouco o código, descobrir qual DML carrega valores em quais 
colunas E então comparar o comprimento/precisão da fonte com as colunas... Por 
exemplo, o UPDATE seguinte  :
 

   UPDATE stats$user_log
   SET last_action =
  (SELECT action
 FROM v$session
 

 tá buscando o valor da coluna ACTION na V$SESSION e botando na coluna 
LAST_ACTION da STAT$USER_LOG - dá um desc na V$SESSION, um desc na 
STAT$USER_LOG e compare a coluna ACTION com a LAST_ACTION, se a coluna da 
STAT$USER_LOG for menor, aumente-a 
 

  Idem para as outras colunas, okdoc ??
 

   []s
 

   Chiappa


[oracle_br] Re: Auditoria de Usuário no Oracle

2012-03-21 Por tôpico ederson2001br
Ola,

-- Para a auditoria, primeiro você pesquisa quem está conectado:
set pagesize 1000;
set linesize 160;
set verify off;
set feedback on;
col sid format a5;
col serial# format a7;
col username format a16;
col USUARIO format a20;
col COMPUTADOR format a25;
col PROGRAMA format a30;
column status format a8;
prompt
accept owner prompt 'Escolha o USUARIO ou ENTER para todos: '
select lpad(to_char(sid),5,' ') sid,
   lpad(to_char(serial#),7,' ') serial,
   lower(username) username,
   lower(osuser) osuser,
   substr(lower(machine),1,25) COMPUTADOR,
   substr(lower(module),1,30) programa,
   status
from   v$session
where  ((username is not null and 'owner' is null) or
(upper(osuser) like upper('owner')))
  and  status != 'KILLED'
order  by 3;


-- Depois veja o que está rodando no banco:
set pagesize 1000;
set linesize 100;
set verify off;
set feedback on;
col sid format a5;
col serial# format a7;
set long 5000;
SELECT a.OSUSER,
   substr(a.username,1,15) username,
   a.TERMINAL,
   to_char(a.SID) SID,
   to_char(a.SERIAL#) SERIAL#,
   b.executions,
   b.SQL_TEXT
FROM   V$SESSION a,
   V$SQL b
WHERE  a.SQL_ADDRESS = b.ADDRESS
  AND  a.STATUS = 'ACTIVE';


Sabendo SID e SERIAL, já dá para usar o set_sql_trace_in_session.


Ederson Elias
DBA Oracle
http://www.linkedin.com/profile/view?id=83793732

--

--- Em oracle_br@yahoogrupos.com.br, Eliane SILVA ecssilva@... escreveu

 
 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]