Categorias

Resgatando os erros em desenvolvimento PL/SQL Web

Publicado em 11/02/2004

Há anos que desenvolvo rotinas em PL/SQL para Web e um dos grandes problemas
na criação das rotinas é justamente a depuração.

Quando o erro é de compilação, sem problemas; mas quando o erro ocorre em
tempo de execução, fica difícil detectar o erro, principalmente quando o erro
fica armazenado no Log interno do servidor de aplicação e a mensagem no
browser é nada mais, nada menos que: “Página Não Encontrada”.

Mesmo alterando as opções avançadas do browser para não exibir os erros HTTP
de forma amigável, ainda vemos o erro desse tipo:



Ou então desse tipo:



No primeiro exemplo, o banco de dados estava fora do ar e no segundo, com
o banco de dados no ar, foi chamado na URL o nome errado da package.

A solução é acessarmos o servidor e olharmos o final do arquivo que nos
informa o real motivo do erro.

[Wed Feb 11 14:36:43 2004] [error] mod_plsql: /pls/app/nomeErradoDapackage.procedure HTTP-503 ORA-12541  

[Wed Feb 11 15:37:59 2004] [warn] mod_plsql: /pls/app/nomeErradoDapackage.procedure ORA-0 No such object

Depois dessa informação, basta olhar na documentação para descobrir o erro,
ou então acessar sites como o de
 target=”_BLANK”>mensagens de erro do 9i para descobrir o real motivo.

Esse arquivo chama-se error_log e fica dentro do diretório do 9iAS. O
problema é que dificilmente o desenvolvedor tem acesso ao servidor para ficar
visualizando o arquivo, justamente por não ser responsabilidade dele o bom
funcionamento do Oracle 9iAS, e sim alguma pessoa da equipe de infra-estrutura,
ou algum DBA ou administrador de rede.

Para resolver esse problema, eu criei uma pequena rotina que visualiza o log
via browser, facilitando a vida do desenvolvedor.
Os logs poderão ser visualizados dessa forma:



A rotina que faz isso é bem simples:

#!/usr/bin/perl

#

############################################

#

# Log dos erros Oracle

# Criado por Fernando Boaglio

#

############################################

#

# Altere o valor abaixo para o seu ORACLE_HOME

$oracle_home=”/oracle/Ora9″;

# Localizacao padrao do arquivo de logs do Apache

$arquivo=$oracle_home.”/Apache/Apache/logs/error_log” ;

print qq{Content-type: text/html\n\n<html>

<head>

<title>

Logs do HTTP Server

</title>

</head>

<body bgcolor=white>

<center><h3>Log de erros do HTTP Server:
$arquivo</h3> </center>

<HR>

<BR><PRE>

};

# Exibe as ultimas 20 linhas do arquivo,

# modifique o valor se necessario

print  `tail -n 20 $arquivo`;

print qq{
</pre><BR><BR><HR><center><h6>©
2004 Criado por Fernando
Boaglio</h6></center></body></html>};

Para configurar esse visualizador de log no seu ambiente é bem simples,basta
seguir os 5 passos abaixo:

1.Baixe o arquivo clicando aqui e renomeie-o para log.pl.

2.Altere o arquivo com ORACLE_HOME do seu 9iAS ou 9i

3.Copie o arquivo log.pl para $ORACLE_HOME/Apache/Apache/cgi-bin

4.Permita o arquivo ser executado com chmod 755 $ORACLE_HOME/Apache/Apache/cgi-bin/log.pl

5.Acesse pelo browser a URL:

http://seu_servidor:sua_porta/cgi-bin/log.pl

exemplo:

http://cascao:7777/cgi-bin/log.pl

Pronto!

Agora ficou muito mais fácil identificar os erros!

Bom desenvolvimento!