Como saber os scripts aplicados

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Boa tarde
tenho uma duvida simples, sou consultor, utilizamos oracle 10g, acontece que o pessoal da programacao aplica alguns scripts muito show em nosso banco de dados, só que ele faz via soft, gostaria de saber se existe alguma maneira, algum lugar aonde o oracle registre e mostre esses scripts aplicados, quero estudar tais codigos.
Obrigado

Zelio Martins
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Acredito que o ideal seria você monitorar isso via auditoria do oracle,

Veja sobre Audit Trail on Oracle 10g,

O script faz DML e DDL?

Ambos são possíveis de monitorar com o audit trail,

veja se atende aí, outra idéia seria com o logminer ler os arquivos de redo,

mas a solução que eu indicaria seria esta,
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

O script é do tipo alter table.....

como faço isso Audit Trail on Oracle 10g ou no logminer?
Obrigado
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

http://www.oracle-base.com/articles/10g ... _10gR2.php

explica bem, da uma lida nesse site, tenta entender um pouco o funcionamento dele, muda os parametros no banco, no caso audit_trail=db,

tem que baixar e erguer o banco de novo, nesse link explica passo a passo,

tem exemplos, e aí qualquer dúvida posta aí,

não tem muito mistério,
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Amigão, meio complicadinho ein,
Depois de tudo isso, aonde vai aparecer os scripts aplicados?
Nossa, nem tentei mais parece meio complicadinho, eu comeco pedindo pra ele exibir as configuracoes do audit ?

Selecionar tudo

SQL> SHOW PARAMETER AUDIT
vopu tentar, mais ta complicado, mesmo porque não manjo ingles, não entendi ainda aonde ele exibirá os scripts.
vlw
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Selecionar tudo

SELECT username,
       extended_timestamp,
       owner,
       obj_name,
       action_name
FROM   dba_audit_trail
WHERE  owner = 'AUDIT_TEST'
ORDER BY timestamp;
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

nessa mesma view tem uma coluna
SQL_TEXT aí deve mostrar exatamente a instrucao executada
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Deixa eu ver se entendi, depois que eu aplicar:

Selecionar tudo

SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;
derrubo o banco e subo ele de novo, dai uso o comando que você postou para me mostrar os scripts aplicados, ou seja:

Selecionar tudo

SELECT username, 
extended_timestamp, 
owner, 
obj_name, 
action_name 
FROM dba_audit_trail 
WHERE owner = 'AUDIT_TEST' 
ORDER BY timestamp;
é isso?
Grato
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

É diego complicado, não consegui configurar não.
Precisava de algo mais passo a passo ainda, só conheco select, update, delete e insert em oracle, ferramenta poderosa mais complicada.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Após fazer essa primeira etapa, você está ativando a feature de auditoria, porém ainda não disse ao Oracle, o que exatamente você quer logar,

certo até aí?

após isso, você terá que saber quais tabelas/procedures/functions, etc, e que eventos (insert, drop , alter) quer efetivamente logar,

é possível que tenha algum comando que logue tudo, mas vai gravar muita coisa, então o ideal é você especificar os objetos e eventos para cada um, isso é feito pelo comando audit, depois que você habilitou no banco o recurso de auditoria,

certo?
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Vou fazer aqui pásso a passo veja´se é isso:

Selecionar tudo

ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;
depois derrubo o banco e subo novamente

Selecionar tudo

SHUTDOWN

STARTUP
crio o usuario de dou direitos pra ele.

Selecionar tudo

CONNECT sys/password AS SYSDBA

CREATE USER audit_test IDENTIFIED BY password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;

GRANT connect TO audit_test;
GRANT create table, create procedure TO audit_test;
e agora o que eu faco?
VAleu
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

o usuario você não precisa criar, no caso vai ser o usuario que vai logar no seu banco e executar os scripts, é ele quem vai ser logado, ou melhor suas operações.
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

achei esse site, traduzido:

http://profissionaloracle.com.br/blogs/ ... racle-10g/

de uma olhada, ´me parece ser o mesmo assunto, vou aplicar passo a passo, depois te falo no que deu, minha dificuldade ainda é, COMO vou puxar os scripts que foram aplicados no banco, qual comando vou executar pra ver isso?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

depois que você indicar atraves do comando AUDIT o que você quer logar,

tudo vai ficar registro nos logs e pode ser acessado com o select que eu postei antes,
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

eNTENDI, CONSEGUI instalar aqui.
Só que ele não vai mostrar os selects, os updates que foram aplicados ???
Ele só mostra a dataq do ocorrido e se foi um update ou select, eu queria ver o script, ou então, em qual tabela ele aplicou tal script.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Selecionar tudo

SELECT username,
extended_timestamp,
owner,
obj_name,
action_name,
sql_text
FROM dba_audit_trail
WHERE owner = 'AUDIT_TEST'
ORDER BY timestamp; 
o que retorna na coluna sql_text?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Outra idéia que tive agora,

se aplicação foi escrita em delphi, você pode monitorar a sessão com dbmonitor, este programa vai mostrar todos os sqls que são executados durante aquela sessão,

;)
marcio_loko
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 24 Fev 2010 2:03 pm
Localização: são paulo

Ola, então, na coluna sql_text sai em branco, nos outros preenche, usuario, etc, só a coluna sql_text é que sai em branco...
A aplicacao é feita em Delphi sim, a aplicacao tambem mostra os scripts só que é muito rapido, como faco para usar o dbmonitor? Lembrando que não não tenho as fontes do aplicativo. vlw
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

É simples, só abrir ele, ele vai listar o aplicativo delphi , você da um start, volta no aplicativo e manda executar os scripts, tudo que for pro banco vai ficar guardado no dbmonitor,

olha só,

dependendo do componente usado no delphi, o dbmonitor não funciuona, aí tem o SQLMonitor, da uma procurada nesse sentido,. google it SQL Monitor Oracle
Responder
  • Informação