{"id":252,"date":"2021-01-12T22:57:25","date_gmt":"2021-01-12T22:57:25","guid":{"rendered":"https:\/\/adrianotanaka.com.br\/?p=252"},"modified":"2021-01-12T22:57:27","modified_gmt":"2021-01-12T22:57:27","slug":"pls-00201-identifier-dbms_java-start_import-must-be-declared-ao-realizar-import","status":"publish","type":"post","link":"https:\/\/adrianotanaka.com.br\/index.php\/2021\/01\/12\/pls-00201-identifier-dbms_java-start_import-must-be-declared-ao-realizar-import\/","title":{"rendered":"PLS-00201: identifier &#8216;DBMS_JAVA.START_IMPORT&#8217; must be declared ao realizar import"},"content":{"rendered":"\n<p>Estou no meio de uma homologa\u00e7\u00e3o de migra\u00e7\u00e3o de plataforma e vers\u00e3o de banco de dados e a t\u00e9cnica escolhida foi utilizar o datapump para isso, simples n\u00e9? Faz o export, copia e importa, mas um dos detalhes desse ambiente \u00e9 que o cliente utiliza alguns programas em java dentro do banco de dados, no log do import, peguei o seguinte erro:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Processing object type DATABASE_EXPORT\/SCHEMA\/JAVA_SOURCE\/JAVA_SOURCE\nORA-39083: Object type JAVA_SOURCE failed to create with error:\nORA-06550: line 1, column 43:\nPLS-00201: identifier 'DBMS_JAVA.START_IMPORT' must be declared\nORA-06550: line 1, column 33:\nPL\/SQL: Statement ignored\nFailing sql is:\nDECLARE STATUS NUMBER; BEGIN STATUS := DBMS_JAVA.START_IMPORT('Util', 0,28,0,3,935,1); IF STATUS !=0 THEN IF STATUS > 0 THEN STATUS := -STATUS; END IF; execute immediate 'declare an exception; pragma exception_init(an, ' || status || '); ' || 'begin raise an; end\nORA-39083: Object type JAVA_SOURCE failed to create with error:\nORA-06550: line 1, column 43:\nPLS-00201: identifier 'DBMS_JAVA.START_IMPORT' must be declared<\/pre>\n\n\n\n<p>Ao verificar o status do Java no banco com o seguinte comando, notei que ele n\u00e3o estava instalado:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">select comp_name, version, status from dba_registry;<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"104\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-27.png\" alt=\"\" class=\"wp-image-254\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-27.png 632w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-27-300x49.png 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Corrigindo o erro ORA-39083<\/h2>\n\n\n\n<p>No MOS voc\u00ea pode encontrar a nota <strong>Master Note for Oracle JVM 1098505.1 <\/strong>que mostra diversos detalhes sobre a JVM separada por vers\u00e3o, como nesse ambiente estou rodando a vers\u00e3o 11.2.0.4, vou me basear na nota <strong>Safe repair\/reinstall of the JVM Component in 11.2 and up 2314363.1<\/strong>, essa nota \u00e9 bem extensa(e recomendo que voc\u00ea leia ela) mas o que precisamos \u00e9 da seguinte sequencia de comandos, se for um cluster, deixe apenas uma das inst\u00e2ncias no ar.<\/p>\n\n\n\n<p>No meu caso, ao executar o primeiro comando conforme sugerido pela nota, ele informava que a view n\u00e3o existia:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">create or replace java system\n\/<\/pre>\n\n\n\n<p>Sendo assim, j\u00e1 segui para os pr\u00f3ximos passos:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">startup mount\nalter database open;\nalter system enable restricted session;\nalter system set \"_system_trig_enabled\" = false scope=memory;\nalter system set \"java_jit_enabled\" = false scope=memory;<\/pre>\n\n\n\n<p>Nos comandos abaixo, a nota fala para fazer uma copia do arquivo <strong>\u00a0initjvm.sql <\/strong>com o nome <strong>reinitjvm.sql <\/strong> e editar algumas linhas dele <strong>pois o arquivo original pode remover objetos que n\u00e3o deveriam ser removidos!<\/strong><\/p>\n\n\n\n<p>Como n\u00e3o sei se posso reproduzir isso aqui, recomendo que a nota seja lida, no meu caso como eu n\u00e3o possu\u00eda os componentes da JVM instalados, eu poderia ter executado direto o <strong>initijvm.sql <\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">spool log_jvm.log\n@?\/javavm\/install\/reinitjvm.sql\n@?\/xdk\/admin\/initxml.sql\n@?\/rdbms\/admin\/catjava.sql\n@?\/rdbms\/admin\/catexf.sql\nspool off<\/pre>\n\n\n\n<p>Um problema que peguei foi que ao tentar executar o <strong>create or replace java system<\/strong> algum cache foi criado e tive que reiniciar a inst\u00e2ncia para executar os comandos acima, por sorte ele da um erro bem claro falando sobre isso.<\/p>\n\n\n\n<p>Ap\u00f3s os comandos terem sido executados(aqui no meu ambiente ele levou alguns bons minutos), voc\u00ea pode executar novamente o select dos componentes e ver se a JVM foi instalada e est\u00e1 v\u00e1lida, al\u00e9m \u00e9 claro de validar o arquivo de spool para ver se algum erro aconteceu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"161\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-28.png\" alt=\"\" class=\"wp-image-256\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-28.png 659w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2021\/01\/image-28-300x73.png 300w\" sizes=\"auto, (max-width: 659px) 100vw, 659px\" \/><\/figure>\n\n\n\n<p>Por fim, recompile os objetos inv\u00e1lidos com o <strong>utlrp.sql<\/strong> e o ambiente est\u00e1 pronto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bonus<\/h2>\n\n\n\n<p>Caso seu import j\u00e1 tenha sido realizado e voc\u00ea precise apenas dos objetos java, voc\u00ea pode executar o seguinte comando para fazer isso:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">impdp user\/senha directory=import dumpfile=expdp_full_XXXXX.dmp logfile=impdp_java.log include=JAVA_CLASS,JAVA_SOURCE schemas=XXX<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Estou no meio de uma homologa\u00e7\u00e3o de migra\u00e7\u00e3o de plataforma e vers\u00e3o de banco de dados e a t\u00e9cnica escolhida foi utilizar o datapump para isso, simples n\u00e9? Faz o export, copia e importa, mas um dos detalhes desse ambiente \u00e9 que o cliente utiliza alguns programas em java dentro do banco de dados, no [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":254,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"material-hide-sections":[],"footnotes":""},"categories":[1],"tags":[],"class_list":["post-252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=252"}],"version-history":[{"count":12,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/252\/revisions"}],"predecessor-version":[{"id":284,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/252\/revisions\/284"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media\/254"}],"wp:attachment":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}