- Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 18 anos, 6 meses atrás por
gustavodesa.
-
AutorPosts
-
29 de agosto de 2007 às 5:51 pm #80355
duyamamoto
ParticipanteComo faço para monitorar as consultas feitas por um usuário?
Usuário, comando sql, tempo de execução e timestamp do login.Att
Eduardo29 de agosto de 2007 às 5:56 pm #80356Marcio68Almeida
ParticipanteSe você quizer monitorar o que está acontecendo no momento :
Select p.spid, p.addr, s.sid, s.serial#, s.username, s.osuser, s.status, s.server, s.logon_time,
TO_CHAR (TRUNC (last_call_et / 3600), '009') || ':' ||
Case When TRUNC (last_call_et / 3600) >= 1 Then
TO_CHAR (MOD ((last_call_et - (3600 * TRUNC (last_call_et / 3600))) / 3600, 2) * 60, '09')
Else
TO_CHAR (MOD (last_call_et / 3600, 2) * 60, '09')
End inatividade, s.machine, s.program, p.pga_used_mem, p.pga_alloc_mem, p.pga_freeable_mem, pga_max_mem, sql.sql_text
From v$session s, v$process p, (Select distinct sql_text, address
From v$sql sql ) sql
Where s.username is not null
And status = 'ACTIVE'
-- And status not in ('SNIPED', 'KILLED')
And s.paddr = p.addr (+)
And s.sql_address = sql.address (+)
Order by s.last_call_et desc
Se você quer um log de tudo o que está sendo feito no banco, é bom reconsiderar…
Se você quer fazer um trace de um processo é outra coisa…29 de agosto de 2007 às 6:04 pm #80358duyamamoto
ParticipanteObrigado pela resposta, mas no caso o que eu preciso é de um log do que o usuário está fazendo no banco.
29 de agosto de 2007 às 8:54 pm #80360vieri
Participantealter system set max_dump_file_size = 1000000000;
Descobrir o ID e o SERIAL# da sessão do usuário através da view de dicionário de dados v$session
EXEMPLO:
SELECT sid, serial#, username
FROM v$session
WHERE username = ‘VASCODAGAMA’;Executar o programa que inicializa o trace, passando o sid e o serial# da sessão do usuário:
exec sys.dbms_sytem.SET_SQL_TRACE_IN_SESSION
(SID NUMBER, SERIAL# NUMBER, SQL_TRACE BOOLEAN);EXEMPLO:
exec sys.dbms_sytem.SET_SQL_TRACE_IN_SESSION
(533, 23456, YES);Após o usuário terminar a sessão o programa também é finalizado. Deve-se entrão descobrir o nome do arquivo de trace que foi gerado no diretório UDUMP. Podemos descobrir isso facilmente utilizando o comando ls para listar os arquivos no seguinte formato:
ls -lrSt
Pegamos então o nome do arquivo de trace e o passamos em outro programa, gerando um outro arquivo de saída.
tkprof nomedoarquivodetrace nodoarquivodesaída
explain = system/senhadousuário sys=noEXEMPLO: tkprof VASCODAGAMA_ora.trc trace_psab.txt
explain = system/xxxxx sys=noDe nada hein!!
30 de agosto de 2007 às 12:41 am #80364gustavodesa
ParticipanteVocê pode utilizar a auditoria do Oracle.
Basta setar o parâmetro audit_trail para um dos parametros abaixo, e setar a auditoria de DDL emcima de um usuário do banco ou DML de objetos.
Você pode monitorar sessões (LOGIN E LOGOUT).Todos os dados são armazenados na tabela aud$. Possuem várias views para você fazer a consulta, a principal é a DBA_AUDIT_TRAIL.
1.1) VALORES DO PARÂMETRO AUDIT_TRAIL
Parameter Value Meaning
DB ou TRUE Habilita a auditoria do database e direciona todos os registros da auditoria do database para tabela (SYS.AUD$), exceto pra registros que são sempre gravados na auditoria do sistema operacional.DB_EXTENDED Habilita a auditoria do database e direciona todos os registros da auditoria do database para tabela (SYS.AUD$).Em adicional, ele inclui as colunas SQLBIND e SQLTEXT na tabela SYS.AUD$.
OS Habilita a auditoria do database e direciona todos os registros da auditoria para um arquivo do Sistema Operacional que é definida através do parâmetro AUDIT_FILE_DEST.
NONE ou FALSE Desabilitar a auditoria (Esse valor é o default.)
-
AutorPosts
- Você deve fazer login para responder a este tópico.