Consultar queries no Dicionário de Dados

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
weslleis
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 26 Jul 2010 4:50 pm
Localização: São Paulo - SP
--
Weslleis

Caros amigos,

É o meu primeiro post, e já de cara gostaria de saber se alguém pode me ajudar com a dúvida abaixo:

Eu preciso visualizar as queries que determinado owner/usuário está realizando no banco de dados, mas ainda não consegui encontrar no dicionario de dados.

Grato.



* Versão do Oracle: 10g
* Sistema Operacional: Linux/ Red Hat
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

bem vindo irmao

vê se te ajuda..

Para ver as instruções executadas:

Selecionar tudo

select sql_text, object_status, first_load_time, username, sid, lockwait
  from v$session ses, v$sql sql
 where ses.sql_id = sql.sql_id


Filtrando por usuário:

Selecionar tudo

   and ses.USERNAME = 'XXXX'


Filtrando pelo aplicativo:

Selecionar tudo

   and ses.program = 'XXXXXX'
weslleis
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 26 Jul 2010 4:50 pm
Localização: São Paulo - SP
--
Weslleis

Obrigado Victor Hugo, era exatamente isso que eu procurava.
bernardoramos
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 19 Ago 2010 2:26 pm
Localização: Curitiba-PR
Contato:
Abraço,
Bernardo

Olá...

Acabei de registrar-me no forum. Achei algumas coisas interessantes e melhor então participar.

Fiz cursos de Oracle 8 e 9i mas acabei não atuando. Looonga estória...
Há um problema aqui no escritório e gostaria de voltar à ativa, reaquecer os motores.

Como todo bom problema, não é trivial aos mortais.

Temos uma aplicação sem documentação mais, rodando com Oracle. São mais de 2000 tabelas !

Para ganhar um cliente, preciso integrar este um produto novo com o banco dessa aplicação anterior. Vai agir como um usuário do banco antigo.

Basicamente, após a entrada de uma ação humana, preciso achar os registros envolvidos na operação. A cada X segundos nossa aplicação consultará para ver alterações e tomar atitudes em outro banco.

Como faço para descobrir quais tabelas foram alteradas desde um determinado horário, ou nos últimos 5 a 20 segundos?

Agradeceria muito sua ajuda.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

select sql_text, object_status, first_load_time, username, sid, lockwait, sql.LAST_ACTIVE_TIME
  from v$session ses, v$sql sql
 where ses.sql_id = sql.sql_id 
   and sql_text like '%insert%table_name%'
   and sql.LAST_ACTIVE_TIME between (SYSDATE - 20/86400)
   and sysdate;
para pegar todas alteradas você pode incluir o update tambem.. ou então so o nome da tabela

Selecionar tudo

   and sql_text like '%insert%table_name%'
esse 20 foi os segundos que você pediu.. de 20 segundos atras ate agora

Selecionar tudo

   and sql.LAST_ACTIVE_TIME between (SYSDATE - 20/86400)
   and sysdate;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes