BANCO DE DADOS: Criação de Ambiente Linux, Migração de

Propaganda
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;
Download