DANILO AUGUSTO FURLAN BANCO DE DADOS: Criação de Ambiente Linux, Migração de Dados e Desenvolvimento PL/SQL Assis 2015 DANILO AUGUSTO FURLAN BANCO DE DADOS: Criação de Ambiente Linux, Migração de Dados e Desenvolvimento PL/SQL Trabalho de Conclusão de Curso apresentado ao Instituto de Ensino Superior de Assis, Como requisito do Curso de Graduação. Orientador: Prof. Dr. Alex Sandro Romeo de Souza Poletto. Assis 2015 FICHA CATALOGRÁFICA FURLAN, Danilo Augusto. BANCO DE DADOS: Criação de Ambiente Linux, Migração de Dados e Desenvolvimento PL/SQL / Danilo Augusto Furlan. Fundação Educacional do Município de Assis – FEMA – Assis, 2015. 63 p. Orientador: Dr. Alex Sandro Romeo de Souza Poletto. Analisador: Esp. Guilherme de Cleva Farto Trabalho de Conclusão de Curso – Instituto Municipal de Ensino Superior de Assis – IMESA. 1.Banco de Dados. 2.Ferramentas. 3.PL/SQL. 4.Ambiente. 5.Migração. CDD: 001.6 Biblioteca da FEMA DEDICATÓRIA Dedico primeiramente a Deus pelos dons que me tornou capaz de concluir esta etapa, e a todos que de alguma forma contribuíram para isto. 5 AGRADECIMENTOS Primeiramente а DEUS qυе permitiu qυе tudo isso acontecesse, ао longo dе minha tragetória de vida, е nãо somente neste ano de conclusão, mаs que еm todos оs momentos esta presente. A esta universidade, ao corpo docente, direção е administração qυе me oportunizaram a concluir este curso. Ao mеυ orientador pelo empenho dedicado à elaboração deste trabalho, а todos оs professores pоr mе proporcionarem о conhecimento necessário ao longo dos anos. A minha família e noiva pelo amor, incentivo е apoio incondicional. A todos qυе direta оυ indiretamente fizeram parte dа minha formação, о mеυ muito obrigado. 6 RESUMO Este trabalho descreve conceitos e possui registros de algumas ferramentas específicas para criação, gerenciamento e manipulação de um banco de dados. Contem descrições personalizadas para elaboração de um ambiente de desenvolvimento com passo-a-passo de instalação das ferramentas, exemplificação do uso da Linguagem PL/SQL para migração de um banco de dados com detalhamento das funções utilizadas. Palavras-chave: Banco de Dados; Ferramentas; PL/SQL; Ambiente; Migração. 7 ABSTRACT This research aimed at describing concepts and registers of some specific tools to create, manage and manipulate a database. There are descriptions to elaborate a development environment with a tutorial showing how to install such tools and exemplification of the use of PL/SQL language for a database migration with functions detailed, Keywords: Database; Tools; PL/SQL; Environment; Migration. 8 LISTA DE ILUSTRAÇÕES Figura 1 – Área de Trabalho Linux Ubuntu................................................................ 17 Figura 2 – Tela Inicial pgAdmin3................................................................................ 18 Figura 3 – Janela Principal Oracle SQL Developer................................................... 20 Figura 4 – Janela Principal Oracle XE....................................................................... 21 Figura 5 – Apresentação da Proposta de Trabalho................................................... 22 Figura 6 – Edição de Partição.................................................................................... 24 Figura 7 – Identificação de Acesso............................................................................ 24 Figura 8 – Licença do código binário......................................................................... 26 Figura 9 – Contrato de licença do JDK.......................................................................... 26 Figura 10 – Instalação WebLogic............................................................................... 34 Figura 11 – Página de Configuração.............................................................. .............. 35 Figura 12 – Porta de Acesso WebLogic................................................................................... 35 Figura 13 – Tela Inicial Postgres ............................................................................................... 37 Figura 14 – Criação do Banco Postgres ................................................................................. 38 Figura 15 – Criação da Tabela em Banco Postgres ........................................................... 40 Figura 16 – Banco de Dados com Inserção .......................................................................... 40 Figura 17 – Start do WebLogic .................................................................................................. 41 Figura 18 – Página de Login do WebLogic................................................................ 41 Figura 19 – Codificação do caminho WSDL.......................................................... ..... 42 Figura 20 – Teste de Serviço em SoapUI................................................................... 43 Figura 21 – Conexão do SQLDeveloper com Oracle XE...................................... ...... 43 Figura 22 – Criação da Tabela no Banco Oracle XE.................................................. 44 9 LISTA DE ABREVIATURAS E SIGLAS PL/SQL Procedural Language / Structured Query Language GPL General Public License SQL Structure Query Language XML Extensible Markup Language HTML Hypertext Markup Language BPEL Business Process Execution Language UI User Interface 10 SUMÁRIO 1. INTRODUÇÃO....................................................................................12 1.1 OBJETIVO.................................................................................................12 1.2 JUSTIFICATIVA.........................................................................................13 1.3 MOTIVAÇÃO.............................................................................................13 1.4 METODOLOGIA DE PESQUISA...............................................................13 1.5 RECURSOS NECESSÁRIOS....................................................................14 1.6 ESTRUTURA DO TRABALHO..................................................................15 2. CONCEITOS DAS FERRAMENTAS .................................................16 2.1 LINUX UBUNTU………………………….....................…............................16 2.2 POSTGRES………………………………....................................................18 2.3 WEBLOGIC………………………………………..........................................19 2.4 SQLDEVELOPER……………………………..............................................19 2.5 ORACLE XE…………….....................................…....................................20 3. ESTUDO DE CASO........................................................................... 22 3.1 PROPOSTA DO TRABALHO....................................................................22 3.2 PREPARAÇÃO DO AMBIENTE……………..............................................23 3.2.1 Instalação Linux Ubuntu - Version 14.10………...........................………......23 3.2.2 Instalação Postgres - Version 9.0.3........……......................................……...25 3.2.3 Instalação Oracle XE - Version 11GR2 Express Edition............................. 25 3.2.4 Instalando WebLogic - 12C........................................................................... 34 3.2.5 Instalando SQLDeveloper - Version 4.0.3.16................................................ 36 3.3 CONFIGURAÇÕES DE SOFTWARES NECESSÁRIAS…...................... 37 3.3.1 Postgres……………………………………….…………………………….…… 37 3.3.2 WebLogic………………………………………………………….………………. 41 3.3.3 Oracle XE………………………………………………………….……………… 43 3.4 APRESENTAÇÃO DO WEBSERVICE.................................................... 45 3.5 DESENVOLVIMENTO PL/SQL................................................................ 46 4. CONCLUSÃO.....................................................................................53 REFERÊNCIAS..................................................................................... 54 11 APÊNDICE A – CÓDIGO ACL..............................................................56 APÊNDICE B – LEITURA_CAD_CLIENTE_PKG.................................57 APÊNDICE C – LEITURA_CAD_CLIENTE_PKG Body...................... 58 APÊNDICE D – CHAMADA DE FUNÇÃO (BLOCO ANÔNIMO)..........63 12 1. INTRODUÇÃO Segundo INFOJOBS BRASIL (2014): Um analista de banco de dados é responsável por atuar com administração de banco de dados, desenvolver melhorias, identificar e solucionar problemas, é também responsável por um dos maiores bens da empresa, a Informação. Está sob a responsabilidade de um Analista de Banco de Dados, manter a segurança dos dados, conforme políticas de segurança da empresa. Atuar com análises, desenvolvimento administrar de o projetos banco e de dados, implementações, acompanhar juntamente o com desenvolvimento de novos métodos ligados ao banco de dados, fazer a manutenção das estruturas em conjunto com modeladores de dados e analistas de sistemas, implementar novos processos de softwares, métodos de acesso a dados e dimensionamento de hardware. Com o acelerado progresso tecnológico dos últimos anos, nota-se que foram ocasionados vários benefícios para milhões de indivíduos e empresas ao redor do mundo. É impossível não perceber as vantagens de utilizá-lo a favor da eficiência dos negócios. Os técnicos e especialistas da área de Sistemas de Banco de Dados são os responsáveis por garantir que numerosos serviços funcionem e se aprimorem. Como a tecnologia está presente em praticamente todos os setores, há grande demanda por colaboradores qualificados em Banco de Dados (BD) e, em consequência, constante aumento do patamar salarial. Neste cenário, essa é uma das carreiras profissionais mais promissoras da atualidade. (VILELLA. 2012) 1.1 OBJETIVOS O objetivo deste trabalho é a aquisição e registro dos conhecimentos adquiridos para a criação de um ambiente de desenvolvimento voltado para o trabalho de um Analista de Banco de Dados. Bem como, o estudo de caso envolvendo o processo de migração de um banco para outro, com a captura através de um WebService, a interpretação do código utilizando-se a linguagem PL/SQL e a inclusão desses 13 dados em um novo banco. A migração de dados ocorrerá através da captura da chamada de um serviço previamente carregado no Weblogic, fazendo assim a busca de dados no banco de dados Postgres, este serviço retornará uma linha formatada com o conteúdo recuperado do banco Postgres, qual será decodificado através da linguagem PL/SQL utilizando-se a ferramenta SQLDeveloper, após o mapeamento destes dados ocorrerá a inclusão em um novo banco de dados Oracle XE, completando assim o ciclo de migração proposto. 1.2 JUSTIFICATIVAS O desenvolvimento deste trabalho se torna interessante pela oportunidade de ter em um único documento, informações agrupadas para favorecer os interessados em ingressar neste segmento profissional, dando-lhes base para iniciarem seus estudos para suas respectivas carreiras. 1.3 MOTIVAÇÃO A motivação para o estudo e elaboração deste material é a contribuição literária sobre este assunto aos interessados e também ao grande conhecimento que será adquirido pessoalmente por meio do estudo realizado para a conclusão do mesmo. Levando também em consideração o fato de estar apresentando um pouco mais afundo este campo de atuação para o profissional de TI. 1.4 METODOLOGIA DE PESQUISA A metodologia utilizada para este projeto de pesquisa primeiramente será o estudo de caso e em seguida o desenvolvimento de uma solução para o mesmo. Para a realização desta pesquisa e para o desenvolvimento do estudo de caso, serão necessárias pesquisas bibliográficas sobre os assuntos, pesquisas na internet 14 tanto em fóruns como em sites oficiais dos fabricantes da plataforma e dos sistemas utilizados, e também levantamento de informações com profissionais da área. 1.5 RECURSOS NECESSÁRIOS Para a realização das pesquisas bem como o desenvolvimento do trabalho, serão necessários recursos literários e midiáticos, como livros, artigos, material de mídias escrita, bem como recursos de: Hardware: Descrição Microcomputador ou Notebook Quantidade 01 Software: Descrição Quantidade Conexão de internet banda larga 01 Pacote Office 2010 01 Navegador Internet 01 Sistema Operacional Windows 7 01 Ubuntu 14.0.1 01 Postgres 9.0.3 01 WebLogic 12c 01 SQLDeveloper 4.0.3.16 01 OracleXE 11g R2 01 15 1.6 ESTRUTURA DO TRABALHO Capítulo 1 - Introdução: onde estão expostas as idéias principais do projeto, os objetivos, justificativas, motivação e os métodos utilizados para as pesquisas e estruturação do trabalho; Capítulo 2 - Conceitos: capítulo que contém a definição das ferramentas utilizadas para o desenvolvimento; Capítulo 3 – Proposta de Trabalho: capítulo que conterá a apresentação da proposta de trabalho. Capítulo 4 – Estudo de Caso: o estudo de caso será realizado em 5 etapas, sendo: Preparação do Ambiente: criação do ambiente de desenvolvimento em uma plataforma Linux Ubuntu, com instalação das ferramentas Postgres, Oracle XE, WebLogic, SQLDeveloper, Configurações necessárias: preparação deste ambiente para execução do código central; Apresentação do WebService: apresentação do código do WebService que retorne os valores com informações para tratamento; Desenvolvimento PL/SQL: desenvolvimento SQLDeveloper com funções estruturadas da utilizando a plataforma linguagem PL/SQL migrando informações do banco de dados Postgres para o banco de dados Oracle XE; Capítulo 5 - Conclusão: tratará dos resultados e as conclusões sobre o tema que nortearam o trabalho; Referências: parte que relaciona todas as referências consultadas durante a elaboração do projeto. Apêndices: parte que contêm os códigos fontes desenvolvidos. 16 2. CONCEITOS DAS FERRAMENTAS 2.1 LINUX UBUNTU O Linux é um sistema operacional de código aberto. Criado em 1991 e distribuído livremente pela Internet até os dias atuais, o sistema é coberto pela licença GPL, que dá plenos direitos de acesso, alteração e compartilhamento de modificações a qualquer pessoa ou empresa. (TECHTUDO, 2013) O que inicialmente era apenas um kernel - um programa que cria uma camada de abstração entre o hardware e a interface com o usuário, evoluiu para algo mais complexo ao se juntar a milhares de outros programas de código aberto, formando o que é hoje conhecido como Linux. Desde então, o nome é usado para tratar tanto do núcleo do sistema, quanto para qualquer conjunto de programa que venha acompanhado e seja instalado/executado em conjunto com o kernel Linux. (SILVA, 2014) O sistema baseia-se no padrão “UNIX”, criado por Ken Thompson nos laboratórios Bell AT&T em Murray Hill na Nova Jersey, nos Estados Unidos, em 1965. Ele pode ser usado em computadores com um ou múltiplos processadores e executar simultaneamente vários programas por um ou vários usuários. Ele é composto de um ou vários interpretadores de comandos (shell), bem como um grande número de comandos e de numerosos utilitários (mecânico, compiladores para numerosas linguagens, tratamentos de texto, serviço de mensagens eletrônico, etc). O Linux é multiplataforma, ou seja, é possível instalá-lo em diferentes arquiteturas de hardware. O sistema pode ser encontrado em uma grande quantidade de equipamentos, ele está presente em computadores, tablets, smartphones, TV´s, relógios, pda´s, supercomputadores e outros. Atualmente, o programa é disponibilizado em diferentes conjuntos de software e empacotamentos: cada uma deles é chamada de distribuição Linux. Ubuntu, Debian, Red Hat, Mandriva, OpenSuse são exemplos de distribuições. Boa parte delas é focada em computadores desktop e servidores. No desktop, o sistema evolui continuamente e já oferece variados ambientes gráficos, que fornecem uma área de trabalho com 17 estilo variado. Já na arena dos servidores, o sistema está presente nos principais que formam a infraestrutura da Internet, em potentes servidores governamentais em empresas. Além de todas essas características, Linux ganha cada dia mais espaço entre dispositivos móveis como o sistema Android: a versão mobile do Linux do Google. A adoção de empresas e a chegada de mais aplicações têm alavancado o sistema, como um dos mais promissores sistemas operacionais da atualidade. (CHISTOPHER, 2014, p. 56) Ubuntu é um sistema operacional baseado em Linux, e é feito para laptops, desktops e servidores. Seja para uso em casa, escola ou no trabalho, o Ubuntu contém todas as ferramentas necessárias, desde processador de texto e leitor de emails á servidores web e ferramentas de programação. O Ubuntu é gratuito, livre de qualquer encargo de licença, é atualizado com uma nova versão para desktops e servidores a cada seis meses. Figura 1: Área de Trabalho Linux Ubuntu 18 2.2 POSTGRES O PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR) baseado no POSTGRES Versão 4.2 desenvolvido pelo Departamento de Ciência da Computação da Universidade da Califórnia em Berkeley. O POSTGRES foi pioneiro em vários conceitos, que somente se tornaram disponíveis outros sistemas de banco de dados comerciais, muito tempo depois. O PostgreSQL é um descendente de código fonte aberto deste código original de Berkeley, que suporta grande parte do padrão SQL e oferece muitas funcionalidades modernas, como: comandos complexos, chaves estrangeiras, gatilhos, visões, integridade transacional, controle de simultaneidade multiversão e outros. Além disso, o PostgreSQL pode ser ampliado pelo usuário de muitas maneiras como, por exemplo, adicionando novos: tipos de dados, funções, operadores, funções de agregação, métodos de índice, linguagens procedurais e outros. Devido à sua licença liberal, o PostgreSQL pode ser utilizado, modificado e distribuído por qualquer pessoa para qualquer finalidade, seja particular, comercial ou acadêmica, livre de encargos. PgAdmin III é um gerenciador de banco de dados PostgreSQL inteiramente gratuito. Ele permite escrever as demandas SQL simples ou complexas e de desenvolver os bancos de dados com a ajuda das funções PostgreSQL. O software é entregue com a instalação e não necessita de nenhum drive complementar para comunicar com o servidor do banco de dados. (FORGE, 2014) Figura 2: Tela Inicial pgAdmin3 19 2.3 WEBLOGIC O Oracle WebLogic Server 12c um servidor de aplicações em ambientes convencionais e na nuvem. Um Servidor de Aplicações (em Inglês Applications Server) é um servidor que disponibiliza um ambiente para a instalação e execução de certas aplicações, centralizando e dispensando a instalação nos computadores clientes. Os servidores de aplicação também são conhecidos por middleware. O objetivo do servidor de aplicações é disponibilizar uma plataforma que separe do desenvolvedor de software algumas das complexidades de um sistema computacional. No desenvolvimento de aplicações comerciais, por exemplo, o foco dos desenvolvedores deve ser a resolução de problemas relacionados ao negócio da empresa, e não de questões de infraestrutura da aplicação. O servidor de aplicações responde a algumas questões comuns a todas as aplicações, como segurança, garantia de disponibilidade, balanceamento de carga e tratamento de exceções. (César, 2014) 2.4 SQLDEVELOPER SQL Developer é um ambiente de desenvolvimento integrado (IDE) que foi especialmente destinado ao desenvolvimento de programas armazenados em bancos de dados Oracle. SQL Developer tem como principal objetivo à facilidade de uso, qualidade de código e produtividade. (Sun Software, 2015) Algumas das capacidades do Oracle SQL Developer: 01 - Criar conexões com bancos de dados 02 - Navegar entre os objetos 03 - Criar objetos 04 - Modificar Objetos 05 - Consultar e manipular dados dos objetos (DML) 20 06 - Exportar e importar dados / Gerar DDL dos objetos 07 - Efetuar cópia e comparações entre schemas e objetos 08 - Processar comandos 09 - Editar código PL/SQL 10 - Executar e debugar códigos PL/SQL 11 - Executar e criar relatórios personalizados 12 - Facilitar a migração interbancos (Migration Workbench integrado) 13 - Permitir integração com sistemas de controle de versão (CVS, Subversion) Figura 3: Janela Principal Oracle SQL Developer 2.5 ORACLE XE Oracle Database 11g Express Edition (Oracle Database XE) é uma versão gratuita de um banco de dados relacional. Oracle Database XE é de fácil instalação, fácil gerenciamento e desenvolvimento. O Oracle Database XE usa uma interface baseada em navegador intuitivo para administrar o banco de dados, criar tabelas, exibições e outros objetos de banco de dados, importação, exportação e visualização dos dados da tabela, executar consultas e scripts SQL e gerar relatórios. (Oracle Database Training, 2014) 21 Figura 4: Janela Principal Oracle XE 22 3. ESTUDO DE CASO Neste capítulo será apresentada a proposta de trabalho, a criação do ambiente para desenvolvimento com os passos para instalações das ferramentas, e as configurações iniciais a serem feitas para o início do estudo. Contem também a apresentação do Webservice com o código utilizado na estrutura do PL/SQL e o detalhamento do código criado em PL/SQL para a conclusão da proposta. 3.1 PROPOSTA DE TRABALHO A proposta de trabalho é a instalação de ferramentas na plataforma Linux Ubuntu para a integração de 2(dois) bancos de dados distintos, trabalhando na configuração das ferramentas e conexão entre elas com desenvolvimento da linguagem estruturada PL/SQL que fará mapeamento da informação captada do Postgres por um WebService, decodificará, e fará inserção no banco de dados Oracle XE. PREPARAÇÃO DO AMBIENTE – Instalação das Ferramentas CONFIGURAÇÕES DE SOFTWARES NECESSÁRIAS APRESENTAÇÃO DO WEBSERVICE DESENVOLVIMENTO PL/SQL Figura 5: Apresentação da Proposta de Trabalho 23 3.2 PREPARAÇÃO DO AMBIENTE A preparação do ambiente consiste na apresentação da forma de instalação das ferramentas necessárias: Linux Ubuntu, Postgres, Oracle XE, WebLogic e SQLDeveloper. 3.2.1 Instalação Linux Ubuntu – Version 14.10 Ubuntu é uma das distribuições GNU/Linux mais populares devido à sua grande facilidade de uso. O Ubuntu 14.10 foi disponibilizado em 17/04/2014 pela Canonical. Esta será uma versão LTS (Long Term Support ), que terá suporte durante 5 anos. Para iniciar a Instalação, crie uma partição no formato ext4 de 30~50 GB para a partição raiz (/) e uma partição SWAP (2-4 GB). Execute o pendrive, pode-se usar a opção Testar sem instalar como neste caso, na área de trabalho, click em Install Ubuntu-14.04-LTS. Com a execução do pendrive, serão necessários alguns passos para completar a instalação, passos esses que serão apresentados por meio de telas: - Seleção de idioma; - Verificação de requisitos; - Opção avançada (Tipo de instalação); - Escolha da Partição para instalação; 24 Em “editar partição”, selecione usar como sistema de arquivos ext4, formatar partição e ponto de montagem: “/”, como mostra a imagem: Figura 6: Edição de Partição Feito isso, resta apenas selecionar a localização, para que seja feito a ajustagem de data e hora, layout do teclado e a criação do usuário e senha, como na imagem a seguir: Figura 7: Identificação de Acesso 25 A instalação do sistema operacional Linux Ubuntu será concluída. 3.2.2 Instalação Postgres – Version 9.0.3 PostgreSQL ou Postgres é um sistema de gerenciamento de banco de dados relacional, que fornece uma implementação da linguagem SQL. O Postgres é uma das escolhas mais populares para pequenos, médios e grandes projetos e tem a grande vantagem de ser multiplataforma. 1º - Primeiramente é necessário efetuar o login como "root" no terminal e atualizar os repositórios, para isso abra o terminal e digite: apt-get update 2º - Iniciar instalação do PostgreSQL: apt-get install postgresql 3º - Após concluir a instalação, o próximo passo é alterar a senha do usuário "postgres": su postgres -c psql postgres ALTER USER postgres WITH PASSWORD 'senha' \q 4º - Com o PostgreSQL instalado, agora se faz necessário a instalação do pgAdmin3: apt-get install pgadmin3 3.2.3 Instalação Oracle XE – Version 11gR2 Express Edition INSTALANDO JAVA 26 Começamos com a instalação de Java na máquina. A seguir os passos para instalação do Oracle Java JDK. A instalação deste JDK e feita executando os seguintes comandos no terminal. sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer A tela na Figura 8 aparece no terminal, aperte enter para prosseguir. Após isto, a tela na Figura 9 será mostrada. Navegue até <Sim> usando a seta para a esquerda no teclado e aperte enter. A Oracle JDK 7 será instalado. Figure 8: Licença do código binário Figure 9: Contrato de licença do JDK 27 Para validar a instalação Java, execute o seguinte comando : java -version Isso deve resultar no seguinte (ou algo similar): java version “1.7.0_51” Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) A etapa seguinte é definir a variável de ambiente JAVA_HOME . Para fazer isso , abra o arquivo /etc/bash.bashrc executando a seguinte declaração . sudo gedit /etc/bash.bashrc Adicione as seguintes linhas . export JAVA_HOME=/usr/lib/jvm/java-7-oracle export PATH=$JAVA_HOME/bin:$PATH Salve o arquivo e feche o editor. Para carregar as alterações, execute a seguinte instrução. source /etc/bash.bashrc Para validar as mudanças, execute a seguinte declaração. echo $JAVA_HOME O resultado dessa declaração deve ser o seguinte. /usr/lib/jvm/java-7-oracle INSTALANDO ORACLE 11G R2 EXPRESS EDITION Para a instalação do Oracle 11g R2 Express Edition ( XE ) , um par de pacotes Linux adicionais são necessárias . Estes pacotes podem ser instalados executando o seguinte comando: 28 sudo apt-get install alien libaio1 unixodbc O próximo passo é fazer o download do Oracle 11g R2 Express Edition do site da Oracle. Certifique-se de selecionar a versão Linux x64 no endereço http://www.oracle.com/technetwork/products/express-edition/downloads/index.html. Depois de concluída a transferência, abra o terminal e navegue até o diretório de download. Na abordagem deste trabalho, isso pode ser feito através da execução do seguinte declaração: cd Downloads O passo seguinte é descompactar o arquivo baixado. Para fazer isso, execute o seguinte comando. unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip Um novo diretório ( Disk1 ) é adicionado ao diretório Download. Navegue para este diretório: cd Disk1 Agora é preciso converter o pacote Red Hat (rpm) para um pacote Debian. Isso pode ser feito usando o comando “alien”. O parâmetro -d é usado para informar a “alien” que um pacote Debian deve ser gerado. Quando o parâmetro-scripts é alternado, o programa vai tentar converter os scripts que se destinam a serem executados quando o pacote é instalado e removido. sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm Esta etapa pode demorar um pouco, enquanto esta instrução está em execução, pode fazer as seguintes etapas. Abra uma nova janela de terminal para essas etapas. 29 O pacote Red Hat, depende do arquivo /sbin/chkconfig, que não é usado no Ubuntu. Para instalar com êxito o Oracle XE usa-se um truque simples. Começa por criar um arquivo personalizado /sbin/chkconfig, executando o seguinte comando. sudo gedit /sbin/chkconfig Deve-se escrever o seguinte neste editor: #!/bin/bash # Oracle 11gR2 XE installer chkconfig hack for Ubuntu file=/etc/init.d/oracle-xe if [[ ! `tail -n1 $file | grep INIT` ]]; then echo >> $file echo '### BEGIN INIT INFO' >> $file echo '# Provides: OracleXE' >> $file echo '# Required-Start: $remote_fs $syslog' >> $file echo '# Required-Stop: $remote_fs $syslog' >> $file echo '# Default-Start: 2 3 4 5' >> $file echo '# Default-Stop: 0 1 6' >> $file echo '# Short-Description: Oracle 11g Express Edition' >> $file echo '### END INIT INFO' >> $file Fi update-rc.d oracle-xe defaults 80 01 #EOF Salve o arquivo e feche o editor. Agora, é necessário fornecer o arquivo com os privilégios de execução adequados. sudo chmod 755 /sbin/chkconfig 30 Depois disso, temos que criar o /etc/sysctl.d/60-oracle.conf arquivo para definir os parâmetros de kernel adicionais. Abra o arquivo, executando o seguinte comunicado. sudo gedit /etc/sysctl.d/60-oracle.conf Insira as linhas a seguir no arquivo: # Oracle 11g XE kernel parameters fs.file-max=6815744 net.ipv4.ip_local_port_range=9000 65000 kernel.sem=250 32000 100 128 kernel.shmmax=536870912 Salve o arquivo. As mudanças neste arquivo podem ser verificadas por meio de execução: sudo cat /etc/sysctl.d/60-oracle.conf Para carregar os parâmetros do kernel: sudo service procps start As alterações podem ser verificada novamente executando : sudo sysctl -q fs.file-max Este comando deve retornar o seguinte: fs.file-max = 6815744 Após isso, execute as seguintes instruções para fazer algumas mudanças mais necessárias: 31 sudo ln -s /usr/bin/awk /bin/awk mkdir /var/lock/subsys touch /var/lock/subsys/listener Feche a segunda janela do terminal e volte para a primeira janela do terminal. O pacote rpm deve ser convertido e um novo arquivo chamado oracle -xe - 11.2.02_amd64.deb foram gerados. Para executar esse arquivo, execute o seguinte comando: sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb Execute o seguinte para evitar um erro “ORA- 00845: erro MEMORY_TARGET”. sudo rm -rf /dev/shm sudo mkdir /dev/shm sudo mount -t tmpfs shmfs -o size=4096m /dev/shm Crie o arquivo /etc/rc2.d/S01shm_load. sudo gedit /etc/rc2.d/S01shm_load Adicione as seguintes linhas no arquivo: #!/bin/sh case "$1" in start) mkdir /var/lock/subsys 2>/dev/null touch /var/lock/subsys/listener rm /dev/shm 2>/dev/null mkdir /dev/shm 2>/dev/null 32 mount -t tmpfs shmfs -o size=4096m /dev/shm ;; *) echo error exit 1 ;; esac Salve o arquivo, feche o editor e fornecer os privilégios de execução adequadas. sudo chmod 755 /etc/rc2.d/S01shm_load CONFIGURANDO ORACLE 11G R2 EXPRESS EDITION Após a instalação do servidor Oracle 11g R2 Express Edition, precisa-se configurar o servidor. Para iniciar a configuração do servidor , execute o seguinte comando e siga o "assistente" no terminal. Os valores padrão são mostrados entre parênteses para cada pergunta. sudo /etc/init.d/oracle-xe configure É preciso configurar algumas variáveis ambientais. Abra o arquivo /etc/bash.bashrc executando a seguinte declaração: sudo gedit /etc/bash.bashrc Vá até o final do arquivo e adicione as seguintes linhas: export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe export ORACLE_SID=XE export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` 33 export ORACLE_BASE=/u01/app/oracle export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH Salve o arquivo e feche o editor. Para carregar as alterações, execute a seguinte instrução: source /etc/bash.bashrc Para validar as mudanças, pode-se executar o seguinte comando. echo $ORACLE_HOME Esta declaração deve resultar na seguinte saída. /u01/app/oracle/product/11.2.0/xe Após este passo, recomenda-se reiniciar a máquina. Após a reinicialização for concluída, para iniciar o servidor Oracle use o seguinte comando: sudo service oracle-xe start Um arquivo chamado oraclexe - gettingstarted.desktop é colocado no seu desktop. Para tornar este arquivo executável, vá até o diretório do desktop. cd ~/Desktop Para tornar o arquivo executável, execute a seguinte instrução. sudo chmod a+x oraclexe-gettingstarted.desktop 34 3.2.4 Instalando WebLogic 12C Para instalação do WebLocig, primeiramente fmw_12.1.3.0.0_wls.jar, precisa-se do arquivo disponível http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main097127.html. Abra o terminal, dentro da pasta onde se encontra o arquivo execute: # java – jar fmw_12.1.3.0.0_wls.jar A instalação irá começar. Figura 10: Instalação WebLogic Os próximos passos são: - Escolher local de instalação; - Escolher o tipo de instalação; - Adicionar contato para receber informações sobre atualizações; - Itens a serem instalados; Feita a instalação, abrirá a pagina para configuração do WebService. em 35 Figura 11: Página de Configuração Em seguida será a configuração do usuário e senha, após terá o tipo de domínio e a localização do pacote JDK, por último a tela de conferência que se mostra a porta que dará acesso ao WebLogic, no caso :7001. Figura 12: Porta de Acesso WebLogic 36 3.2.5 Instalando SQLDeveloper Version 4.0.3.16 Para instalação do SQLDeveloper, precisa-se antes do arquivo de instalação disponível em (http://www.oracle.com/technetwork/developer-tools/sql- developer/downloads/index.html). Deve-se baixar o arquivo no formato RPM e utilizar uma conversão simples de tipos de pacotes, para um que o Ubuntu possa instalar (Deb). Utilizarei o programa “Alien” cuja instalação ocorre com o seguinte comando no terminal: $ sudo apt-get install alien Próximo passo para instalação é converter o arquivo .rpm em .deb, para isso darei o seguinte comando no diretório do arquivo: $ alien nomeDoPacote.rpm O arquivo “.deb” será gerado, para execução de o comando: $ sudo dpkg -i nomeDoPacote.deb O programa estará disponível via terminal, com o comando: $ sqldeveloper Para criar um ícone de acesso ao SQLDeveloper deve-se dar a seguinte instrução: $ sudo touch /opt/sqldeveloper Logo após a permissão para acesso: $ sudo chmod 755 /opt/sqldeveloper Edite o próximo arquivo: $ gksu gedit /usr/bin/sqldeveloper 37 Incluindo no arquivo que se abre as linhas: #!/bin/sh export SQLDEVELOPER_HOME="/opt/sqldeveloper" Para incluir o SQLDeveloper no menu do Ubuntu, é necessário mover o lançador para a pasta applicattions, com o seguinte comando: $ sudo mv /opt/sqldeveloper/sqldeveloper.desktop /usr/share/applications 3.3 CONFIGURAÇÕES NECESSÁRIAS Serão necessárias configurações nas ferramentas anteriormente instaladas, trataremos aqui o banco Postgres, o webservice WebLogic, e o banco de dados Oracle XE. 3.3.1 Postgres No banco de dados Postgres, será necessário a criação de um banco, a criação e alimentação de uma tabela. Para isso abrirei o pgAdmin3 anteriormente instalado. Abrirá a seguinte tela: Figura 13: Tela Inicial Postgres 38 Abrindo o caminho “postgres(localhost:5432)”, clica-se com botão direito em “Databases” e em seguida “New Database”, e cria-se um novo banco com nome “projetoTCC” como na imagem a seguir. Figura 14: Criação do Banco Postgres Feito isso, é necessário a criação da tabela com o seguinte código PL/SQL: CREATE TABLE tb_cliente ( cod char(10) NOT NULL, nome character varying(100) NOT NULL, endereco character varying(200) NOT NULL, cidade character varying (40) NOT NULL, estado character varying (2) NOT NULL, email character varying(100) NOT NULL, telefone character varying(100) NOT NULL, cpf char (11), rg char (9), CONSTRAINT tb_cliente_pkey PRIMARY KEY (cod) ); E inclusão das informações para uso no trabalho: 39 INSERT INTO tb_cliente (cod, nome, endereco, cidade, estado, email, telefone, cpf, rg) VALUES (002, 'ODAIR AZEVEDO','RUA CRUZ E SOUZA, 24','ASSIS','SP','[email protected]','18994567821','2452 5145126','145824569'); VALUES (003, 'CLAUDIA SANTOS', 'RUA PADRE DAVID, 685','ASSIS','SP','[email protected]','18994587124','25456 458745','254785423'); VALUES (004, 'BENEDITO SOUZA', 'RUA JOSE SEVERINO DOS SANTOS, 290','ASSIS','SP','[email protected]','18996325874','321456 58745','254698756'); VALUES (005, 'LUCIANE GODOI', 'RUA RUI BARBOSA, 278','ASSIS','SP','[email protected]','18994587125','34 566654789','424542587'); VALUES (006, 'JEFFERSON ABREU', 'RUA AMAZONAS, 345','ASSIS','SP','[email protected]','18994568792','35412 454789','456985825'); VALUES (007, 'MARCELO SILVA', 'RUA PIRATININGA, 31','ASSIS','SP','[email protected]','18996587589','36 856985475','425457845'); VALUES (008, 'APARECIDA ROSA', 'RUA LONDRINA, 333','ASSIS','SP','[email protected]','18994567952' ,'3659874587','435698569'); VALUES (009, 'LUCAS OLIVEIRA', 'RUA OSCAR MAIA, 857','ASSIS','SP','[email protected]','18997889654','2874569 8521','485858596'); 40 Utilizando o SQLEditor: Figura 15: Criação da Tabela em Banco Postgres Após esses passos a tabela será criada e estará com as informações necessárias. Figura 16: Banco de Dados com Inserção 41 3.3.2 Weblogic A preparação do ambiente do WebLogic consiste em gerar o caminho que conterá o código utilizado para captura dos dados na tabela TB_CLIENTE do Postgres para sua manipulação no SQLDeveloper e inserção em uma nova tabela no banco de dados ORACLE XE. Precisaremos iniciar o serviço pelo terminal, executando o arquivo “startWebLogic.sh”, que se encontra na pasta “/base_domains”: Figura 17: Start do WebLogic Feito isso, no navegador digite o endereço “http://localhost:7001/console”, a seguinte página dará acesso ao WebLogic através do Username e Pasword informado na instalação: Figura 18: Página de Login do WebLogic 42 Após o acesso, é necessário que instale o arquivo “TesteWebserviceFurlan.war” criado em Java exclusivamente para captura do dos dados do banco Postgres, sendo utilizado apenas como ponte para geração do caminho WSDL que utilizarei na elaboração deste trabalho. Figura 19: Codificação do caminho WSDL Através do programa chamado SoapUI, é possível testar este serviço carregando o caminho “192.168.0.100:7001/TesteWebServiceFurlan/TesteRetornoService?WSDL”. programa esta disponível em http://www.soapui.org/. Este 43 Figura 20: Teste de Serviço no SoapUi 3.3.3 Oracle XE No banco de dados Oracle XE, é necessário a criação da tabela que receberá os valores oriundos da captação feita através do código PL/SQL na tabela criada no Postgre, para isso, primeiro passo é a conexão do SQLDeveloper com o banco de dados Oracle XE. Abrindo o programa de desenvolvimento do PL/SQL, será criada a nova conexão: Figura 21: Conexão do SQLDeveloper com Oracle XE 44 O seguinte código deve ser rodado na aba XE criada após a conexão, com isso a tabela estará criada: CREATE TABLE tb_cliente ( cod char(10) NOT NULL, nome character varying(100) NOT NULL, endereco character varying(200) NOT NULL, cidade character varying (40) NOT NULL, estado character varying (2) NOT NULL, email character varying(100) NOT NULL, telefone character varying(100) NOT NULL, cpf char (11), rg char (9), CONSTRAINT tb_cliente_pkey PRIMARY KEY (cod) ); Figura 22: Criação da Tabela no Banco Oracle XE 45 3.4 APRESENTAÇÃO DO WEBSERVICE O código PL/SQL responsável pelo consumo do serviço prestado através do WebService se define em etapas, a declaração da variável “req_envelope” com a chamada do serviço e a alimentação da variável res_envelope com o retorno da solicitação feita ao WebService. 1. Declaração da variável de requisição onde é passado o parâmetro através da variável “p_id_cliente”. req_envelop VARCHAR2 (4000) := '<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http:// schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <ns1:buscaCliente xmlns:ns1="http://br.com.furlan.main/"> <codigo>'|| p_id_cliente||'</codigo> </ns1:buscaCliente> </soap:Body> </soap:Envelope>'; 2. Código de execução da chamada do serviço passando os parâmetros e alimentando a variável “res_envelope” com o conteúdo a ser trabalhado. req := UTL_HTTP.begin_request ( 'http://192.168.0.103:7001 /TesteWebserviceFurlan/TesteRetornoService?WSDL','POST' , 'HTTP/1.1'); UTL_HTTP.set_header (req, 'Content-Type', 'text/xml'); UTL_HTTP.set_header (req, 'Content-Length', LENGTH (req_envelop)); UTL_HTTP.write_text (req, req_envelop); resp := UTL_HTTP.get_response (req); 46 UTL_HTTP.read_text (resp, res_envelop); UTL_HTTP.end_response (resp); 3.5 DESENVOLVIMENTO PL/SQL No desenvolvimento do trabalho, “LEITURA_CADCLIENTE_PKG”, será necessário procedimento para a criação leitura do do pacote WebService “leitura_xml_p( p_id_cliente IN NUMBER) que irá recuperar o valor da string para decodificação e o procedimento “decodificacao_p(p_texto in out VARCHAR2, p_valor out VARCHAR2)” para preparar a inserção dos dados no banco. Este é o pacote contendo as declarações dos procedimentos, neste caso é criado o pacote LEITURA_CADCLIENTE_PKG, que contêm os procedimetos listados, “leitura_xml” e “decodificação_p”. São esses procedimentos que realizarão a captura dos dados do banco Postgres pelo WebService, interpretará e retornará com a inserção dos dados no banco de dados Oracle XE; CREATE OR REPLACE PACKAGE LEITURA_CADCLIENTE_PKG IS PROCEDURE leitura_xml_p( p_id_cliente IN NUMBER); PROCEDURE decodificacao_p( p_texto in out VARCHAR2 , p_valor out VARCHAR2 ); END LEITURA_CADCLIENTE_PKG; / No corpo do pacote, encontram-se as instruções dos procedimentos, começando pela declaração das variáveis necessárias para implementação. Onde: req_envelop: fará a requisição e armazenará a string retornada pelo WebService. astrxmlaux1 e astxmlaux2: são variáveis auxiliares para manuseio do código retornado da chamada do serviço. 47 v_variaveis: será utilizada para armazenar a informação com o formato correto para inserção no banco Oracle. v_dml: conterá o script enviado para o banco de dados efetuar a inserção. l_cod, l_nome, l_endereco, l_cidade, l_estado, l_email, l_telefone, l_cpf e l_rg: são varíaveis que conterão as colunas referentes a cada uma delas na tabela linha recuperada pelo WebService. req: variável que terá a função “.req” do pacote UTL_HTTP, necessária para requisição do WebService. Resp: variável que conterá a função UTL_HTTP.resp, necessária para captação do retorno do WebService. req_envelop (Declaração disponível na p.55, item 1.) astrxmlaux1 VARCHAR2(10000); astrxmlaux2 VARCHAR2(10000); v_variaveis VARCHAR2(10000); v_dml VARCHAR2(10000); l_cod VARCHAR2(100); l_nome VARCHAR2(100); l_endereco VARCHAR2(100); l_cidade VARCHAR2(100); l_estado VARCHAR2(100); l_email VARCHAR2(100); l_telefone VARCHAR2(100); l_cpf VARCHAR2(100); l_rg VARCHAR2(100); req UTL_HTTP.req; resp UTL_HTTP.resp; res_envelop VARCHAR2 (32767); Iniciando a implementação se faz necessário efetuar a limpeza das variáveis que serão utilizadas, dando a elas o valor de “NULL” astrxmlaux1 := NULL; 48 astrxmlaux2 := NULL; v_variaveis := NULL; v_dml := NULL; l_cod := NULL; l_nome := NULL; l_endereco := NULL; l_cidade := NULL; l_estado := NULL; l_email := NULL; l_telefone := NULL; l_cpf := NULL; l_rg := NULL Após a “limpeza” das variáveis, é dada continuidade a requisição do da resposta ao WebService, iniciando o código através do envio dos parâmetros necessários. (Código disponível na p. 55, item 2.) A variável “astrxmlaux1” receberá o valor da variável “res_envelop” que nesse momento se encontra com o valor como o seguinte modelo: res_envelope := „<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns0:buscaCliente Response xmlns:ns0="http://br.com.furlan.main/"><return>#5 #LUCIANE GODOI#RUA BARBOSA, RUI 278#ASSIS#SP#[email protected]#18994587125#34566654789#42454258 7#</return></ns0:buscaClienteResponse></S:Body></S:Envelope>‟ astrxmlaux1 := res_envelop; Antes que este conteúdo vá para o procedimento de decodificação, é preciso que ele passe por um tratamento para que seja retirado toda informação que antecede a primeira ocorrência do caractere “#”. Para isso é preciso efetuar o seguinte tratamento: 49 intposicaocar := INSTR (astrxmlaux1, '#'); astrxmlaux2 := SUBSTR (astrxmlaux1, 0, intposicaocar-1); astrxmlaux1 := REPLACE (astrxmlaux1, astrxmlaux2, NULL); Deste modo a variável “res_envelope” estará pronta para sua decodificação. res_envelope := res_envelope := „#5 #LUCIANE GODOI#RUA RUI BARBOSA, 278#ASSIS#SP#[email protected]#18994587125#34566654789#42454258 7#</return></ns0:buscaClienteResponse></S:Body></S:Envelope>‟ Logo após chamo o procedimento “decodificacao_p” passando a string retornada do WebService e também a variável que receberá o valor subtraído da mesma. (Procedimento “decodificação_p” disponível na p. 60.) decodificacao_p(astrxmlaux1, L_COD); decodificacao_p(astrxmlaux1, L_NOME); decodificacao_p(astrxmlaux1, L_ENDERECO); decodificacao_p(astrxmlaux1, L_CIDADE); decodificacao_p(astrxmlaux1, L_ESTADO); decodificacao_p(astrxmlaux1, L_EMAIL); decodificacao_p(astrxmlaux1, L_TELEFONE); decodificacao_p(astrxmlaux1, L_CPF); decodificacao_p(astrxmlaux1, L_RG); Feito isso, a variável “v_variaveis” será alimentada com os dados recebidos pelas variáveis, anteriormente carregadas com seus respectivos dados para inserção no banco Oracle XE, recebendo as pontuações necessárias para que a inserção ocorra. v_variaveis := L_COD L_NOME || ', ' || '''' || || '''' || ', ' || '''' || L_ENDERECO || '''' || ', ' || '''' || L_CIDADE || '''' || ', ' || '''' || 50 L_ESTADO || '''' || ', ' || '''' || L_EMAIL || '''' || ', ' || '''' || L_TELEFONE || '''' || ', ' || L_CPF || ', ' || L_RG; A instrução para inserção no banco de dados Oracle XE, ocorre através do comando EXECUTE IMMEDIATE da variável v_dml, passando os parâmetros necessários para inserção no banco de dados juntamente com os valores carregados na variável “V_VARIAVEIS”. v_dml := 'INSERT INTO TB_CLIENTE ( COD, NOME, ENDERECO, CIDADE, ESTADO, EMAIL, TELEFONE, CPF, RG) VALUES (' || V_VARIAVEIS || ')'; EXECUTE IMMEDIATE v_dml; COMMIT; END leitura_xml_p; A seguir está o código utilizado para interpretação do retorno do WebService, os parâmetros que são passados são: o texto (p_texto) a ser descriptografado e a variável que receberá o conteúdo recortado (p_valor). PROCEDURE decodificacao_p( p_texto in out VARCHAR2 , p_valor out VARCHAR2 ) IS As variáveis utilizadas serão: intposicaocar: receberá a posição do carácter, para que seja feito os cortes necessários, no caso ela mapeará a posição do carácter “#”. astrxmlaux1: será aqui também utilizada, pois receberá a string retornada do WebService e depois retornará para ser novamente decodificada sem a informação que foi recortada. 51 intposicaocar NUMBER; astrxmlaux1 VARCHAR2(10000); Inicialização das variáveis, recebendo valores “0”, “NULL” e a variável “astrxmlaux1” recebe o valor transmitido pelo no procedimento, o valor da variável “p_texto”, que neste caso está com o valor de exemplo: #5 #LUCIANE GODOI#...”. intposicaocar := 0; astrxmlaux1 := NULL; astrxmlaux1 := p_texto; Com a função “INSTR(a,b)”, a variável recebe a posição em número do primeiro caractere encontrado, neste caso do caractere “#” que o valor é “1”. intposicaocar := INSTR(astrxmlaux1, '#'); Com a função LTRIM, é excluído todo conteúdo a esquerda do valor passado, incluindo o caractere do próprio valor, no caso é excluído o “#”, ficando a variável “astrxmlaux1” com a string “5 astrxmlaux1 #LUCIANE GODOI#...”. := LTRIM(astrxmlaux1, '#'); Agora “intposicaocar” receberá a posição do próximo caractere da variável astrxmlaux1 que contêm “#”, no caso será o número “4”. intposicaocar := INSTR(astrxmlaux1, '#'); A função SUBTR, retornará para a variável p_valor o valor subtraído da string “astrxmlaux1”, levando por parâmetro a posição inicial e final que será subtraída, no caso da posição “0” até a posição que é apontada do na variável “intposicaocar -1”, este “-1” é para que não seja salvo o caractere “#” e assim o código possa retornar da forma correta para próxima decodificação. No caso p_valor receberá “002”. 52 p_valor := SUBSTR(ASTRXMLAUX1, 0, INTPOSICAOCAR – 1); A função REPLACE, substitui na variável “astrxmlaux1”, o valor passado em “p_valor” por “NULL”, e assim é excluído este conteúdo da string. astrxmlaux1 := REPLACE(astrxmlaux1, p_valor, NULL); Ao fim, a variável de retorno “p_texto” recebe a string que foi recortada, seguindo o exemplo ela retornará com o valor “#LUCIANE GODOI#...”. p_texto := astrxmlaux1; END decodificacao_p; END LEITURA_CADCLIENTE_pkg; / A variável “L_COD” é alimentada com a informação “5” e novamente é chamado o procedimento decodificacao_p, só que agora transmitindo a variável “L_NOME” para ser alimentada com a próxima informação captada, assim sucessivamente até que todas as variáveis sejam carregadas para posteriormente ocorrer a inserção dos dados no banco Oracle. (Instrução para inserção disponível na p. 60). 53 4. CONCLUSÃO Realizou-se um estudo para elaboração e disponibilização do material contido neste trabalho, ao decorrer do desenvolvimento foram descobertas e desenvolvidas soluções dos mais diversos tipos até que se tenha conseguido o resultado apresentado. As técnicas de instalações das ferramentas foram transmitidas com uma linguagem clara e acessível ao entendimento da maioria dos interessados desta área, disponibilizando assim o “caminho das pedras” aos entusiastas do desenvolvimento voltado a Banco de Dados com a plataforma operacional Linux Ubuntu. Os exemplos e código criado com a linguagem PL/SQL foram de extrema importância, enriquecendo assim o material disponível neste trabalho e também acrescentando muito em relação a utilização das funções presentes nesta linguagem, juntamente com o caminho lógico criado para atuar na decodificação e solução de problemas. 54 REFERÊNCIAS [1] INFOJOBS BRASIL. Analista de Banco de Dados. Disponível em: <http://www.infojobs.com.br/artigos>. Acesso em 04 de novembro de 2014; [2] Oracle Database Training. Disponível em: http://education.oracle.com. Acesso em 05 de Novembro de 2014. [3] HEUSER, CARLOS A, Projeto de Banco de Dados, 2001. Editora Sagra. [4] PRICE, JASON. Oracle Database 11G – SQL Domine SQL e PL/SQL no Banco de Dados Oracle, 2008. Editora Artmed®Editora S.A. [5] PITANGA, MARCOS. Construindo Supercomputadores com Linux, 2008. Editora Brasport. [6] TECHTUDO. Tudo sobre Linux. Disponível em <http://www.techtudo.com.br>. Acesso em 22 de Fevereiro de 2015. [7] Comunidade Ubuntu Brasil. Disponível em: <http://ubuntu-br.org/ubuntu>. Acesso em 25 de Fevereiro de 2015. [8] Trabalhando com JDeveloper. Dispoível em: <http://www.devmedia.com.br/>. Acesso em 25 de Fevereiro de 2015. [9] Oracle SQL Developer . Disponível em: <http://eduardolegatti.blogspot.com/>. Acesso em 26 de Fevereiro de 2015. [10] Oracle Database 11g Express Edition. Disponível em: <http://docs.oracle.com/>. Acesso em 27 de Fevereiro de 2015. [11] FREEZE, WAYNER S. SQL – Guia de referência do programador, 1998. Rio de Janeiro: Editora Ciência Moderna Ltda. [12] HEUSER, CARLOS ALBERTO. Projeto de banco de dados / Carlos Alberto Heuser – 6. Ed., 2009. Porto Alegre: Bookman. [13] FERNANDE, LUCIA. Oracle 9i Para Desenvolvedores Curso Completo, 2002. Rio de Janeiro: Editora Axcel Books do Brasil Editora. [14] NEGUS, CHISTOPHER. Linux – A Bíblia, 2014. Rio de Janeiro: Editora Alta Books. 55 [15] MANTOVANI, RICARDO. Introdução Linux. Disponível em: http://desenvolvimentoaberto.org –. Acesso em 17 de Junho de 2015. [16] Servidor de Aplicação. Disponível em: <https://pt.wikipedia.org/> Acesso em 18 de Junho de 2015. [17] VILELLA, MATTA. O crescimento da carreira na área de TI. São Paulo. Disponível em: <http://www.sbcoaching.com.br>. Acesso em 25 de Junho de 2015. [18] SILVA, MOISES. Linux Sistema Operacional de Código Aberto. São Paulo. Disponível em: < http://tecnicaelogica.blogspot.com.br>. Acesso em 22 de Junho de 2015. [19] SOUGE FORGE. Documentação PostgreSQL. São Paulo. Disponível em :< http://pgdocptbr.sourceforge.net>. Acesso em 01 de Agosto de 2015. [20] Rayan, César. Servidores de Aplicação Web. Rio de Janeiro. Disponível em: https://prezi.com/jyg0voeacblv/servidores-de-aplicacao-web/. Acesso em 01 de Agosto de 2015. [21] Sun Software. PL/SQL Developer. São Paulo. Disponível em: www.sunsoftware.com.br/solucoes/ambiente.desenvolvimento/plsql. Acesso em 01 de Agosto de 2015. 56 APÊNDICE A – CÓDIGO ACL Este código é necessário para definir privilégio de acesso ao usuário “System” do Oracle XE ao pacote UTL_HTTP. BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'network_services.xml' , description => 'FTP ACL' , principal => 'SYSTEM' , is_grant => true , privilege => 'connect' ); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl 'network_services.xml' , principal => 'SYSTEM' , is_grant => true , privilege => 'resolve' ); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'network_services.xml', host => '*' ); COMMIT; END; => 57 APÊNDICE B – LEITURA_CAD_CLIENTE_PKG create or replace PACKAGE BODY LEITURA_CADCLIENTE_PKG IS PROCEDURE leitura_xml_p( p_id_cliente IN NUMBER); PROCEDURE decodificacao_p( p_texto in out VARCHAR2 , p_valor out VARCHAR2 ); END LEITURA_CADCLIENTE_PKG; 58 APÊNDICE C – LEITURA_CAD_CLIENTE_PKG Body create or replace PACKAGE BODY LEITURA_CADCLIENTE_PKG IS PROCEDURE leitura_xml_p(p_id_cliente NUMBER) IS req_envelop VARCHAR2 (4000) := '<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org /soap/envelope/"> <soap:Header/> <soap:Body> <ns1:buscaCliente xmlns:ns1="http://br.com.furlan.main/"> <codigo>'|| p_id_cliente||'</codigo> </ns1:buscaCliente> </soap:Body> </soap:Envelope>'; req UTL_HTTP.req; resp UTL_HTTP.resp; res_envelop VARCHAR2 (32767); astrxmlaux1 VARCHAR2(10000); astrxmlaux2 VARCHAR2(10000); v_variaveis VARCHAR2(10000); v_dml VARCHAR2(10000); l_cod VARCHAR2(100); l_nome VARCHAR2(100); l_endereco VARCHAR2(100); l_cidade VARCHAR2(100); l_estado VARCHAR2(100); l_email VARCHAR2(100); 59 l_telefone VARCHAR2(100); l_cpf VARCHAR2(100); l_rg VARCHAR2(100); intposicaocar NUMBER; BEGIN astrxmlaux1 := NULL; v_variaveis := NULL; v_dml := NULL; l_cod := NULL; l_nome := NULL; l_endereco := NULL; l_cidade := NULL; l_estado := NULL; l_email := NULL; l_telefone := NULL; l_cpf := NULL; l_rg := NULL; req := UTL_HTTP.begin_request ( 'http://192.168.0.103:7001/ TesteWebserviceFurlan/ TesteRetornoService?WSDL' , 'POST' , 'HTTP/1.1' ); UTL_HTTP.set_header (req, 'Content-Type', 'text/xml'); UTL_HTTP.set_header (req, 'Content-Length', LENGTH (req_envelop)); UTL_HTTP.write_text (req, req_envelop); 60 resp := UTL_HTTP.get_response (req); UTL_HTTP.read_text (resp, res_envelop); UTL_HTTP.end_response (resp); astrxmlaux1 := res_envelop; intposicaocar := INSTR (astrxmlaux1, '#'); astrxmlaux2 := SUBSTR (astrxmlaux1, 0, intposicaocar-1); astrxmlaux1 := REPLACE (astrxmlaux1, astrxmlaux2, NULL); decodificacao_p(astrxmlaux1, L_COD); decodificacao_p(astrxmlaux1, L_NOME); decodificacao_p(astrxmlaux1, L_ENDERECO); decodificacao_p(astrxmlaux1, L_CIDADE); decodificacao_p(astrxmlaux1, L_ESTADO); decodificacao_p(astrxmlaux1, L_EMAIL); decodificacao_p(astrxmlaux1, L_TELEFONE); decodificacao_p(astrxmlaux1, L_CPF); decodificacao_p(astrxmlaux1, L_RG); v_variaveis := L_COD L_NOME || ', ' || '''' || || '''' || ', ' || '''' || L_ENDERECO || '''' || ', ' || '''' || L_CIDADE || '''' || ', ' || '''' || L_ESTADO || '''' || ', ' || '''' || L_EMAIL || '''' || ', ' || '''' || L_TELEFONE || '''' || ', ' || 61 L_CPF || ', ' || L_RG; v_dml := 'INSERT INTO TB_CLIENTE ( COD, NOME, ENDERECO, CIDADE, ESTADO, EMAIL, TELEFONE, CPF, RG) VALUES (' || V_VARIAVEIS || ')'; EXECUTE IMMEDIATE v_dml; COMMIT; PROCEDURE decodificacao_p( p_texto in out VARCHAR2 , p_valor out VARCHAR2 ) IS intposicaocar NUMBER; astrxmlaux1 VARCHAR2(10000); BEGIN intposicaocar := 0; astrxmlaux1 := NULL; astrxmlaux1 := p_texto; intposicaocar := INSTR(astrxmlaux1, '#'); astrxmlaux1 := LTRIM(astrxmlaux1, '#'); intposicaocar := INSTR(astrxmlaux1, '#'); p_valor := SUBSTR(ASTRXMLAUX1, 0, INTPOSICAOCAR - 1); astrxmlaux1 := REPLACE(astrxmlaux1, p_valor, NULL); p_texto := astrxmlaux1; 62 END decodificacao_p; END LEITURA_CADCLIENTE_pkg; END leitura_xml_p; 63 APÊNDICE D – CHAMADA DE FUNÇÃO (BLOCO ANÔNIMO) declare l_cod_client number; begin delete tb_cliente; for l_cod_client in 1..10 loop leitura_cadcliente_pkg.leitura_xml_p(l_cod_client); end loop; commit; end;