{"id":394,"date":"2018-02-23T13:56:47","date_gmt":"2018-02-23T13:56:47","guid":{"rendered":"http:\/\/bufallos.com.br\/bg_br\/?p=394"},"modified":"2018-02-24T12:30:04","modified_gmt":"2018-02-24T12:30:04","slug":"controle-sessoes-com-o-odi-12c","status":"publish","type":"post","link":"http:\/\/bufallos.com.br\/bg_br\/controle-sessoes-com-o-odi-12c\/","title":{"rendered":"Veja como controlar Sess\u00f5es e Threads com o Oracle Data Integrator (ODI) 12c"},"content":{"rendered":"<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Neste artigo, falaremos sobre o Controle das Sess\u00f5es e das Fios para vers\u00e3o paralela do carro n\u00e3o ODI 12c.<\/span><\/span><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">No artigo passado, <\/span><\/span><a href=\"http:\/\/bufallos.com.br\/bg_br\/como-melhorar-performance-com-odi-12c\/\" target=\"_blank\" rel=\"noopener\"><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Veja como melhorar a performance na carga de dados com ODI 12c<\/span><\/span><\/strong><\/a><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\"> , escreva sobre uma execu\u00e7\u00e3o paralela n\u00e3o ODI, que \u00e9 uma forma padr\u00e3o de ser executada. <\/span><\/span><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Falamos tamb\u00e9m<\/span><\/span><\/strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\"> do benef\u00edcio que o paralelismo d\u00e1 ao executar mapeamentos que contenham Fontes distintas sendo executadas ao mesmo tempo, assim como falamos tamb\u00e9m, o quanto que o Paralelismo pode consumir de sua infraestrutura.<\/span><\/span><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Bom, depois de entender como funciona um mapeamento que roda cargas paralelas, f\u00e1cil de ver que <\/span><\/span><strong>para cada fonte distinta voc\u00ea ter\u00e1 uma sess\u00e3o distinta<\/strong> , logo, quanto mais cargas com origens ou destinos diferentes mais sess\u00f5es voc\u00ea ter\u00e1 que usar para executar um \u00fanico mapeamento.<\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Acontece que para executar um mapeamento voc\u00ea precisa, implicitamente, executar 3 processos que s\u00e3o: <\/span><\/span><br \/>\n<span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">1 &#8211; Chamar o Agente que executear\u00e1 seu mapeamento; <\/span><\/span><br \/>\n<span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">2 &#8211; Uma sess\u00e3o (ou v\u00e1rias sess\u00f5es, automaticamente);<\/span><\/span><br \/>\n3 &#8211;\u00a0 Iniciar\u00a0 Threads que ser\u00e3o utilizadas para rodar o mapeamento.<\/p>\n<p><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">PS<\/span><\/span><\/strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\"> : Lembramos que o <\/span><\/span><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">AGENTE<\/span><\/span><\/strong> criado no ODI, s\u00e3o processos Java que orquestra a execu\u00e7\u00e3o de objetos em tempo de execu\u00e7\u00e3o.<\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Isso significa que uma execu\u00e7\u00e3o de um mapeamento <\/span><\/span><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">altamente paralelizado<\/span><\/span><\/strong> pode levar um n\u00famero elevado de threads,\u00a0 que esgotar\u00e3o todos os recursos do sistema .<\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Ent\u00e3o, pergunte-me: <\/span><\/span><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Como fazer para que possamos executar mapeamentos que n\u00e3o sobrecarreguem nossos recursos?<\/span><\/span><\/strong><\/p>\n<p>Para responder esta pergunta sugiro as seguintes medidas:<\/p>\n<p><strong>1 \u2013 Customiza\u00e7\u00e3o do Agente F\u00edsico<\/strong><br \/>\nO ODI oferece duas formas para controle de Threads, s\u00e3o elas:<br \/>\n\u2022 Controle do n\u00famero m\u00e1ximo de threads NO AGENTE;<br \/>\n\u2022 Controle da contagem m\u00e1xima de threads dentro de uma sess\u00e3o.<\/p>\n<p>Para acessar os campos que podem ser customizados, abra seu Agente F\u00edsico e altere os valores, conforme imagem abaixo:<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-395\" src=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/ConfiguracaoThread.jpg\" alt=\"\" width=\"637\" height=\"225\" srcset=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/ConfiguracaoThread.jpg 637w, http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/ConfiguracaoThread-300x106.jpg 300w\" sizes=\"(max-width: 637px) 100vw, 637px\" \/><\/p>\n<p>Desta forma, voc\u00ea ter\u00e1 um controle muito mais eficiente e evitar\u00e1 a degrada\u00e7\u00e3o de seus recursos \/ sua infraestrutura.<\/p>\n<p><strong>2 \u2013 Planeje sua Carga de Dados<\/strong><br \/>\nQuando voc\u00ea est\u00e1 diante de um processo de mapeamento para executar cargas de dados, \u00e9 muito importante que voc\u00ea fa\u00e7a um planejamento de como esta carga ser\u00e1 executada.<\/p>\n<p>No curso, <a href=\"https:\/\/www.udemy.com\/aprenda-a-fazer-migracao-de-dados-com-odi-12c-do-zero\/\" target=\"_blank\" rel=\"noopener\">Aprenda a fazer Migra\u00e7\u00e3o de dados com o ODI 12c<\/a>, tem uma aula que falo sobre este assunto.<\/p>\n<p><strong>Quando voc\u00ea planeja uma carga<\/strong>, voc\u00ea pode, por exemplo, fazer com que o <strong>mapeamento DEFAULT<\/strong> (para a carga principal) possa puxar ou jogar os dados em um lugar s\u00f3 e voc\u00ea pode fazer isso da seguinte forma:<\/p>\n<p>Suponha que voc\u00ea tem 3 tabelas distintas, inclusive em servidores diferentes, e precisa carregar dados de todas elas ( fazendo um merge de dados) em uma tabela \u00fanica de destino.<\/p>\n<p><strong>O que voc\u00ea poderia fazer para n\u00e3o ter tantas Threads \/ Sess\u00f5es iniciadas?<\/strong><br \/>\nVoc\u00ea pode criar STAGEs ( tabelas tempor\u00e1rias na mesma estrutura de sua tabela de DESTINO) que podem armazenar os dados que voc\u00ea quer ( carga bruta) e no seu mapeamento principal, voc\u00ea utilizar apenas de 1 recurso de ORIGEM (Tabela ou View Materializada) e executar seu mapeamento consciente de que o uso de Threads \/ Sess\u00f5es \u00e9 o m\u00ednimo poss\u00edvel.<\/p>\n<p>Al\u00e9m dessas sugest\u00f5es existe um outro recurso que tamb\u00e9m \u00e9 muito importante e que foi disponibilizado na vers\u00e3o 12c do ODI que \u00e9 o recurso de <strong>C\u00d3PIA DE SESS\u00d5ES<\/strong>.<\/p>\n<p>Na vers\u00e3o 11G do ODI, quando ele utilizava de cen\u00e1rios para executar cargas programadas, ele precisava ficar acessando os dados do REPOSIT\u00d3RIO para recuperar todas as etapas e tarefas que deve executar a partir do reposit\u00f3rio e gerar logs antes de come\u00e7ar a executar qualquer coisa.<\/p>\n<p><strong>No ODI 12c, o agente agora s\u00f3 recupera um Session Blueprint<\/strong> <strong>uma vez e o mant\u00e9m em cache<\/strong>. Como \u00e9 armazenado em cache no agente, n\u00e3o h\u00e1 necessidade de obter nada do reposit\u00f3rio se o trabalho for executado novamente alguns minutos depois. O agente gera apenas os logs necess\u00e1rios definidos pelo n\u00edvel de log, j\u00e1 que ele depende apenas do plano de execu\u00e7\u00e3o e n\u00e3o dos logs. Os par\u00e2metros relacionados aos planos est\u00e3o dispon\u00edveis na defini\u00e7\u00e3o dos agentes f\u00edsicos na topologia.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-396\" src=\"http:\/\/bufallos.com.br\/bg_br\/wp-content\/uploads\/2018\/02\/CopiaSessions.jpg\" alt=\"\" width=\"297\" height=\"132\" \/><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Em resumo, gra\u00e7as aos Modelos de Sess\u00e3o, uma sobrecarga da sess\u00e3o de execu\u00e7\u00e3o \u00e9 bastante reduzida. <\/span><span style=\"vertical-align: inherit;\">O agente precisa recuperar menos dados do reposit\u00f3rio. <\/span><\/span><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Isto n\u00e3o \u00e9 fant\u00e1stico?<\/span><\/span><\/strong><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Pessoal, fico por aqui. <\/span><span style=\"vertical-align: inherit;\">Espero ter ajudado.<\/span><\/span><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Tendo d\u00favidas, \u00e9 s\u00f3 chamar.<\/span><\/span><\/p>\n<p><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Forte abra\u00e7o.<\/span><\/span><\/p>\n<p><strong><span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\">Eduardo Santana<\/span><\/span><\/strong><br \/>\n<span style=\"vertical-align: inherit;\"><span style=\"vertical-align: inherit;\"> bufallos@bufallos.com.br<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, falaremos sobre o Controle das Sess\u00f5es e das Fios para vers\u00e3o paralela do carro n\u00e3o ODI 12c. No<\/p>\n","protected":false},"author":1,"featured_media":398,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,2],"tags":[45,35,46,44,43],"_links":{"self":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/394"}],"collection":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/comments?post=394"}],"version-history":[{"count":2,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":400,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/posts\/394\/revisions\/400"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/media\/398"}],"wp:attachment":[{"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/media?parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/categories?post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bufallos.com.br\/bg_br\/wp-json\/wp\/v2\/tags?post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}