Descobrindo os dados e comandos enviados ao Oracle

Escrito por Eloi Rene Pscheidt em 5 de fevereiro de 2009, 15:01h

Muitas vezes se faz necessário descobrir como uma aplicação está interagindo com a base de dados, quais são os comandos gerados e também os dados que estão trafegando.

Uma das formas de descobrir isso no Oracle é através da auditoria, sendo possível configurar alguns objetos ou usuários que serão monitorados, armazenando o seu resultado em tabelas do banco de dados ou arquivos XML no sistema operacional.

Neste exemplo utilizamos o Oracle Enterprise Edition 10g release 2 e o programa SQL Developer para realizar consultas na base de dados. 

Para direcionar a saída da auditoria para tabelas do banco de dados ou arquivos XML definimos o parâmetro de inicialização "audit_trail" com o valor "db,extended" ou "xml,extended", respectivamente. Este parâmetro é estático obrigando a base de dados ser reiniciada para que seu novo valor tenha efeito. A opção "extended" que informamos neste parâmetro é responsável por armazenar nos registros de auditoria os comandos SQL recebidos pelo banco bem como os valores das variáveis BIND, quando utilizadas.

Após isso precisamos definir quais objetos serão auditados, através do comando "audit". No nosso exemplo vamos auditar as operações de consulta, inserção, alteração e exclusão na tabela produto, localizada abaixo do usuário pos. Para isso executamos o seguinte:

audit select, insert, update, delete on pos.produto by access;

A opção by access força a criação de um registro de auditoria para cada acesso efetuado. Se for utilizada a opção by session apenas um registro de cada tipo de acesso será gerado.

Para desabilitar a auditoria destes objetos, utilize o comando noaudit:

noaudit select, insert, update, delete on pos.produto;

Para consultarmos os resultados da auditoria primeiro precisamos descobrir qual é o identificador de auditoria (AUDSID) da conexão que queremos monitorar. Para isso executamos a seguinte consulta:

image

Com posse deste valor filtramos nossa consulta. Quando o resultado fica armazenado no banco de dados (audit_trail=db,extended), consultamos a visão dba_audit_trail, conforme o exemplo a seguir:

image

Quando o resultado é armazenado em arquivos XML (audit_trail=xml,extended), verifique no servidor do banco de dados, dentro de uma pasta chamada "adump", abaixo da organização de diretórios do Oracle (Ex.: d:\oracle\product\10.2.0\admin\orcl\adump). Localize o arquivo XML que possua um elemento chamado "sessionid" com o mesmo valor que obtemos na consulta do identificador de auditoria (coluna AUDSID). Este será o arquivo que possuirá a auditoria da conexão que estamos analisando.

A seguir temos um exemplo deste arquivo XML aonde é possível identificar os comandos SQL e os valores das variáveis:

image

O elemento SQL Text armazena o comando SQL recebido pelo Oracle. Neste exemplo é possível observar que o comando utiliza quatro variáveis BIND, :X1, :X2, :X3 e :rid. Os valores que estão sendo passados para essas variáveis estão descritos no elemento SQL Bind, neste exemplo são, 15, Bolacha e PC, respectivamente. O último valor é o rowid do registro recém criado, que é retornado para a aplicação, neste caso, o client do Progress. 

Mais detalhes sobre os comandos e conceitos aqui apresentados podem ser obtidos no site de documentações do Oracle.

 

Categorias: Ambiente | DataServer | Oracle

Tags:

Comentários (2) -

em 20 de maio de 2010, 08:47h

Bom dia,

    No progress conseguimos executar os comandos do oracle usando o schema holder e Store Procedure existe algum equivalente destes comandos no Oracle, algo que execute as rotinas do progress por dentro do ambiente oracle ?

Sem mais,
Sidival

Sidival

em 20 de maio de 2010, 13:44h

Olá Sidival!

Não há como executar comandos Progress 4GL a partir do Oracle. Entretanto é possível criar "dblinks" via ODBC para uma base Progress, mas neste link você conseguirá apenas executar comandos SQL. Maiores detalhes sobre este dblink do Oracle no endereço progress.atgnow.com/.../AnswerControls.jsp

Att,
Eloi

eloi

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading


Acesso LogMeIn

Informe o código PIN: