- Este tópico contém 7 respostas, 6 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por
VitorLeandro.
-
AutorPosts
-
17 de fevereiro de 2010 às 10:19 pm #92648
Lourival
ParticipanteAmigos,
Fui designado a fazer um tipo de auditoria no uso do BD Oracle 10g
aqui na empresa.Algo do tipo :
Quem conectou, hora que conectou
aplicativo usado,hora que desconectou,
no BD.Para começar fiz essa select:
select username,status,osuser,machine,logon_time,program,state,action from v$session
where username is not null
order by machinemas para saber hora que desconectou não encontrei um método
que posso juntar a esse select.alguma sugestão?
Grato,
17 de fevereiro de 2010 às 10:31 pm #92649diegolenhardt
ParticipanteTriggers,
http://download.oracle.com/docs/cd/B105 … 8trigs.htm
Mais especificamente os eventos:
aí tem que testar USERENV(‘USER’)..
Triggers on LOGON and LOGOFF Events
LOGON and LOGOFF triggers can be associated with the database or with a schema. Their attributes include the system event and username, and they can specify simple conditions on USERID and USERNAME.
* LOGON triggers fire after a successful logon of a user. * LOGOFF triggers fire at the start of a user logoff.😉
17 de fevereiro de 2010 às 10:37 pm #92650Lourival
Participantepois é diego,
mas eu nao posso criar uma trigger,ficaria evidente,
com o select consegui constatar muita coisa,
porém preciso de mais algumas informações.O Banco játem uma auditoria, feita pelo pessoal do sofware,
eu pensei em rodar uma query sem comprometer isso.Valew,
18 de fevereiro de 2010 às 12:23 am #92653Regis Araujo
ParticipanteOpa amigo..
Para pegar o logout é bem complicado heim.. sem uma trigger de logout..
Mas as demais informações.. vc pode usar o SYS_CONTEXT que irá lhe trazer diversas informações… só que o SYS_CONTEXT só tras informações da sessão que estiver rodando ele.. então vc vai ter q criar uma trigger.. não tem como realizar uma auditoria sem trigger.. pq se for por select.. vc vai ter q schedular um JOB q rode a cada segundo.. e isto é muito custoso para o banco.. Outras maneiras de ativar trigger é via logminer e a propria auditoria do oracle…
Abaixo um select q retorna as informações do SYS_CONTEXT.. caso vc decida criar uma trigger.. vai te ajudar muito..
select
SYS_CONTEXT('USERENV','TERMINAL') terminal,
SYS_CONTEXT('USERENV','LANGUAGE') language,
SYS_CONTEXT('USERENV','SESSIONID') sessionid,
SYS_CONTEXT('USERENV','INSTANCE') instance,
SYS_CONTEXT('USERENV','ENTRYID') entryid,
SYS_CONTEXT('USERENV','ISDBA') isdba,
SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format,
SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
SYS_CONTEXT('USERENV','SESSION_USER') session_user,
SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
SYS_CONTEXT('USERENV','DB_NAME') db_name,
SYS_CONTEXT('USERENV','HOST') host,
SYS_CONTEXT('USERENV','OS_USER') os_user,
SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')authentication_type,
SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')authentication_data,
SYS_CONTEXT('USERENV','CURRENT_SQL') current_sql,
SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') client_identifier,
SYS_CONTEXT('USERENV','GLOBAL_CONTEXT_MEMORY')global_context_memory
from dual;Abraços..!
18 de fevereiro de 2010 às 2:30 am #92656Ishii
ParticipanteOlá,
Acho que a criação da trigger pode ser “camuflada” com os seguintes pontos:
1) Não crie a trigger em um OWNER comum, use o SYS ou o SYSTEM mesmo, assim fica mais difícil para outros saberem se é do Oracle ou não, como será usado no logon ou logoff não há custo significante;
2) Use um nome na trigger que não demonstre o que está sendo feito. Uma trigger com o nome TR_AUDIT_QUALQUERCOISA fica meio evidente assim como usar tabelas como audit_table_xpto (use algo como OLAP$REPDATA e tabelas com $ ou _ no início ajudam a confundir)
3) Se você tem programadores ou outros que tenham acesso ao dicionário de objetos assim como o source, criptografe o corpo da trigger, é mais fácil e ainda fica mais “obscura” a sua utilização;
4) Crie também uma auditoria desta trigger, pois ela não deveria ser desabilitada sem seu conhecimento. E deixe a auditoria da auditoria mais escondida ainda….Isso não deve ser custoso para o BD e nem claro para os “xeretas” de plantão. Tenho um monitoramento em uma base de um Cliente que faz essas verificações apesar de ter um ERP de outra empresa, porém isso foi necessário para saber alguns pontos importantes. Às vezes, colocar as coisas na frente do pessoal dificulta para eles saberem onde está… (da série: se quiser esconder algo, mostre para todos sem dizer o que é…)
[]s Ishii
18 de fevereiro de 2010 às 2:42 am #92657Leonardo Faria Ferreira
ParticipanteBoa Noite.
Você ainda pode auditar da seguinte forma:
AUDIT SESSION WHENEVER SUCCESSFUL -> Audita todas as sessões quando conectados com sucesso inclusive sys e system.
AUDIT SESSION WHENEVER NOT SUCCESSFUL -> Audita todas as sessões quando não conseguem conectar inclusive sys e system.
NOAUDIT SESSION WHENEVER SUCCESSFUL -> Desabilita a auditoria quando conectado com sucesso.
NOAUDIT SESSION WHENEVER NOT SUCCESSFUL -> Desabilita a auditoria quando conectado sem sucesso.
Para usar esta auditoria, você precisará configurar o parâmetro de inicialização: AUDIT_TRAIL.
[]s
18 de fevereiro de 2010 às 5:17 pm #92670Lourival
ParticipanteAmigos,
obrigado pelas dicas.O ponto é que, temos um acesso via VPN da europa,
outro acesso é feito de outra cidade.Tem o pessoal de 1 Aplicativo e o pessoal de outro aplicativo,
ambos baseados em Java, que ficam verificando o funcionamento do banco diariamente.E ainda tem um pessoal OCP que de vez em quando, sisma de fazer ajustes no BD .
a auditoria que farei será temporária, somente em alguns momentos quando um desses 3 grupos estiverem cutucando o BD.
Já existe um audit_trail rodando, só preciso saber o logon e o logoff destes “Artistas”.
Obrigado
18 de fevereiro de 2010 às 5:33 pm #92671VitorLeandro
ParticipanteMuito bom Thunder_Catz,
Sua lista tem muita coisa interessante!
Acrescente a sua lista as seguintes colunas tambem:
sys_context(‘USERENV’, ‘MODULE’) , — Programa/Modulo que logou
sys_context(‘USERENV’, ‘HOST’) , — Mostra domínio/maquina
sys_context(‘USERENV’, ‘SERVER_HOST’) — Caso utilize RAC, saber em qual dos nós o usuário logou -
AutorPosts
- Você deve fazer login para responder a este tópico.