{"id":13,"date":"2007-05-09T14:00:58","date_gmt":"2007-05-09T17:00:58","guid":{"rendered":"http:\/\/www.boaglio.com\/index.php\/resgatando-os-erros-em-desenvolvimento-plsql-web\/"},"modified":"2009-08-07T21:26:29","modified_gmt":"2009-08-08T00:26:29","slug":"resgatando-os-erros-em-desenvolvimento-plsql-web","status":"publish","type":"page","link":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/","title":{"rendered":"Resgatando os erros em desenvolvimento PL\/SQL Web"},"content":{"rendered":"<p><strong>Publicado em 11\/02\/2004<\/strong><\/p>\n<p>H\u00e1 anos que desenvolvo rotinas em PL\/SQL para Web e um dos grandes problemas<br \/>\nna cria\u00e7\u00e3o das rotinas \u00e9 justamente a depura\u00e7\u00e3o.<\/p>\n<p><!--adsense#bannertextoinicio--><\/p>\n<p>Quando o erro \u00e9 de compila\u00e7\u00e3o, sem problemas; mas quando o erro ocorre em<br \/>\ntempo de execu\u00e7\u00e3o, fica dif\u00edcil detectar o erro, principalmente quando o erro<br \/>\nfica armazenado no Log interno do servidor de aplica\u00e7\u00e3o e a mensagem no<br \/>\nbrowser \u00e9 nada mais, nada menos que: <strong>&#8220;P\u00e1gina N\u00e3o Encontrada&#8221;. <\/strong><\/p>\n<p><strong>  Mesmo alterando as op\u00e7\u00f5es avan\u00e7adas do browser para n\u00e3o exibir os erros HTTP<br \/>\nde forma amig\u00e1vel, ainda vemos o erro desse tipo:<\/strong><\/p>\n<p><center><strong><br \/>\n<img decoding=\"async\" src=\"\/img\/errorlog1.jpg\" \/><br \/>\n<\/strong><\/center><strong>  Ou ent\u00e3o desse tipo:<\/strong><\/p>\n<p><center><strong><br \/>\n<img decoding=\"async\" src=\"\/img\/errorlog3.jpg\" \/><br \/>\n<\/strong><\/center><strong>  No primeiro exemplo, o banco de dados estava fora do ar e no segundo, com<br \/>\no banco de dados no ar, foi chamado na URL o nome errado da package.<\/strong><\/p>\n<p><strong>  A solu\u00e7\u00e3o \u00e9 acessarmos o servidor e olharmos o final do arquivo que nos<br \/>\ninforma o real motivo do erro. <\/strong><\/p>\n<table bgcolor=\"#fffff0\">\n<tr>\n<td>\n<pre>[Wed Feb 11 14:36:43 2004] [error] mod_plsql: \/pls\/app\/nomeErradoDapackage.procedure HTTP-503 ORA-12541  \r\n\r\n[Wed Feb 11 15:37:59 2004] [warn] mod_plsql: \/pls\/app\/nomeErradoDapackage.procedure ORA-0 No such object<\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>  Depois dessa informa\u00e7\u00e3o, basta olhar na documenta\u00e7\u00e3o para descobrir o erro,<br \/>\nou ent\u00e3o acessar sites como o de <a href=\"http:\/\/otn.oracle.com\/pls\/db901\/db901.error_search?remark=homepage&amp;prefill=ORA-\"><br \/>\n<\/a> \u00a0target=&#8221;_BLANK&#8221;&gt;mensagens de erro do 9i para descobrir o real motivo.<\/strong><\/p>\n<p><strong>  Esse arquivo chama-se <em>error_log<\/em> e fica dentro do diret\u00f3rio do 9iAS. O<br \/>\nproblema \u00e9 que dificilmente o desenvolvedor tem acesso ao servidor para ficar<br \/>\nvisualizando o arquivo, justamente por n\u00e3o ser responsabilidade dele o bom<br \/>\nfuncionamento do Oracle 9iAS, e sim alguma pessoa da equipe de infra-estrutura,<br \/>\nou algum DBA ou administrador de rede.<\/strong><\/p>\n<p><strong>  Para resolver esse problema, eu criei uma pequena rotina que visualiza o log<br \/>\nvia browser, facilitando a vida do desenvolvedor.<br \/>\nOs logs poder\u00e3o ser visualizados dessa forma:<\/strong><\/p>\n<p><!--adsense#bannertextomeio--><\/p>\n<p><center><strong><br \/>\n<img decoding=\"async\" src=\"\/img\/errorlog2.jpg\" \/><br \/>\n<\/strong><\/center><strong>  A rotina que faz isso \u00e9 bem simples:<\/strong><\/p>\n<table bgcolor=\"#fffff0\">\n<tr>\n<td>#!\/usr\/bin\/perl<\/p>\n<p>#<\/p>\n<p>############################################<\/p>\n<p>#<\/p>\n<p># Log dos erros Oracle<\/p>\n<p># Criado por Fernando Boaglio<\/p>\n<p>#<\/p>\n<p>############################################<\/p>\n<p>#<\/p>\n<p># Altere o valor abaixo para o seu ORACLE_HOME<\/p>\n<p>$oracle_home=&#8221;\/oracle\/Ora9&#8243;;<\/p>\n<p># Localizacao padrao do arquivo de logs do Apache<\/p>\n<p>$arquivo=$oracle_home.&#8221;\/Apache\/Apache\/logs\/error_log&#8221; ;<\/p>\n<p>print qq{Content-type: text\/html\\n\\n&lt;html&gt;<\/p>\n<p>&lt;head&gt;<\/p>\n<p>&lt;title&gt;<\/p>\n<p>Logs do HTTP Server<\/p>\n<p>&lt;\/title&gt;<\/p>\n<p>&lt;\/head&gt;<\/p>\n<p>&lt;body bgcolor=white&gt;<\/p>\n<p>&lt;center&gt;&lt;h3&gt;Log de erros do HTTP Server:<br \/>\n$arquivo&lt;\/h3&gt; &lt;\/center&gt;<\/p>\n<p>&lt;HR&gt;<\/p>\n<p>&lt;BR&gt;&lt;PRE&gt;<\/p>\n<p>};<\/p>\n<p># Exibe as ultimas 20 linhas do arquivo,<\/p>\n<p># modifique o valor se necessario<\/p>\n<p>print\u00a0 `tail -n 20 $arquivo`;<\/p>\n<p>print qq{<br \/>\n&lt;\/pre&gt;&lt;BR&gt;&lt;BR&gt;&lt;HR&gt;&lt;center&gt;&lt;h6&gt;\u00a9<br \/>\n2004 Criado por Fernando<br \/>\nBoaglio&lt;\/h6&gt;&lt;\/center&gt;&lt;\/body&gt;&lt;\/html&gt;};<\/td>\n<\/tr>\n<\/table>\n<p><strong>  Para configurar esse visualizador de log no seu ambiente \u00e9 bem simples,basta<br \/>\nseguir os 5 passos abaixo:<\/strong><\/p>\n<p><strong>1.Baixe o arquivo clicando <a href=\"\/download\/log.txt\">aqui<\/a> e renomeie-o para <strong>log.pl<\/strong>.<\/strong><\/p>\n<p><strong>2.Altere o arquivo com ORACLE_HOME do seu 9iAS ou 9i<\/strong><\/p>\n<p><strong>3.Copie o arquivo log.pl para $ORACLE_HOME\/Apache\/Apache\/cgi-bin<\/strong><\/p>\n<p><strong>4.Permita o arquivo ser executado com chmod 755 $ORACLE_HOME\/Apache\/Apache\/cgi-bin\/log.pl<\/strong><\/p>\n<p><strong>5.Acesse pelo browser a URL: <\/strong><\/p>\n<p><strong>http:\/\/seu_servidor:sua_porta\/cgi-bin\/log.pl<\/strong><\/p>\n<p><strong>exemplo:<\/strong><\/p>\n<p><strong>http:\/\/cascao:7777\/cgi-bin\/log.pl<\/strong><\/p>\n<p><strong>Pronto! <\/strong><\/p>\n<p><strong>Agora ficou muito mais f\u00e1cil identificar os erros!<\/strong><\/p>\n<p><strong>Bom desenvolvimento!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Publicado em 11\/02\/2004 H\u00e1 anos que desenvolvo rotinas em PL\/SQL para Web e um dos grandes problemas na cria\u00e7\u00e3o das rotinas \u00e9 justamente a depura\u00e7\u00e3o. Quando o erro \u00e9 de compila\u00e7\u00e3o, sem problemas; mas quando o erro ocorre em tempo de execu\u00e7\u00e3o, fica dif\u00edcil detectar o erro, principalmente quando o erro fica armazenado no Log [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":300,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-13","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Resgatando os erros em desenvolvimento PL\/SQL Web - Boaglio.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Resgatando os erros em desenvolvimento PL\/SQL Web - Boaglio.com\" \/>\n<meta property=\"og:description\" content=\"Publicado em 11\/02\/2004 H\u00e1 anos que desenvolvo rotinas em PL\/SQL para Web e um dos grandes problemas na cria\u00e7\u00e3o das rotinas \u00e9 justamente a depura\u00e7\u00e3o. Quando o erro \u00e9 de compila\u00e7\u00e3o, sem problemas; mas quando o erro ocorre em tempo de execu\u00e7\u00e3o, fica dif\u00edcil detectar o erro, principalmente quando o erro fica armazenado no Log [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/\" \/>\n<meta property=\"og:site_name\" content=\"Boaglio.com\" \/>\n<meta property=\"article:modified_time\" content=\"2009-08-08T00:26:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/boaglio.com\/img\/errorlog1.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/resgatando-os-erros-em-desenvolvimento-plsql-web\\\/\",\"url\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/resgatando-os-erros-em-desenvolvimento-plsql-web\\\/\",\"name\":\"Resgatando os erros em desenvolvimento PL\\\/SQL Web - Boaglio.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/#website\"},\"datePublished\":\"2007-05-09T17:00:58+00:00\",\"dateModified\":\"2009-08-08T00:26:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/resgatando-os-erros-em-desenvolvimento-plsql-web\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/resgatando-os-erros-em-desenvolvimento-plsql-web\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/resgatando-os-erros-em-desenvolvimento-plsql-web\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/boaglio.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle\",\"item\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/oracle\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Resgatando os erros em desenvolvimento PL\\\/SQL Web\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/#website\",\"url\":\"https:\\\/\\\/boaglio.com\\\/\",\"name\":\"Boaglio.com\",\"description\":\"tecnologia e cr\u00edticas construtivas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/boaglio.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Resgatando os erros em desenvolvimento PL\/SQL Web - Boaglio.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/","og_locale":"pt_BR","og_type":"article","og_title":"Resgatando os erros em desenvolvimento PL\/SQL Web - Boaglio.com","og_description":"Publicado em 11\/02\/2004 H\u00e1 anos que desenvolvo rotinas em PL\/SQL para Web e um dos grandes problemas na cria\u00e7\u00e3o das rotinas \u00e9 justamente a depura\u00e7\u00e3o. Quando o erro \u00e9 de compila\u00e7\u00e3o, sem problemas; mas quando o erro ocorre em tempo de execu\u00e7\u00e3o, fica dif\u00edcil detectar o erro, principalmente quando o erro fica armazenado no Log [&hellip;]","og_url":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/","og_site_name":"Boaglio.com","article_modified_time":"2009-08-08T00:26:29+00:00","og_image":[{"url":"https:\/\/boaglio.com\/img\/errorlog1.jpg","type":"","width":"","height":""}],"twitter_misc":{"Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/","url":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/","name":"Resgatando os erros em desenvolvimento PL\/SQL Web - Boaglio.com","isPartOf":{"@id":"https:\/\/boaglio.com\/#website"},"datePublished":"2007-05-09T17:00:58+00:00","dateModified":"2009-08-08T00:26:29+00:00","breadcrumb":{"@id":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/boaglio.com\/index.php\/oracle\/resgatando-os-erros-em-desenvolvimento-plsql-web\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/boaglio.com\/"},{"@type":"ListItem","position":2,"name":"Oracle","item":"https:\/\/boaglio.com\/index.php\/oracle\/"},{"@type":"ListItem","position":3,"name":"Resgatando os erros em desenvolvimento PL\/SQL Web"}]},{"@type":"WebSite","@id":"https:\/\/boaglio.com\/#website","url":"https:\/\/boaglio.com\/","name":"Boaglio.com","description":"tecnologia e cr\u00edticas construtivas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/boaglio.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/pages\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/comments?post=13"}],"version-history":[{"count":2,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/pages\/13\/revisions"}],"predecessor-version":[{"id":306,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/pages\/13\/revisions\/306"}],"up":[{"embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/pages\/300"}],"wp:attachment":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/media?parent=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}