Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Information Management  >

DB2 9.7: Execute aplicativos Oracle em DB2 9.7 para Linux, UNIX e Windows

O DB2 9.7 abrange aplicativos desenvolvidos em Oracle com suporte PL/SQL e muito mais

developerWorks
Opções de documento

Opções de documento que necessitam de JavaScript não são exibidas

Discutir


Classificar esta página

Ajude-nos a melhorar este conteúdo


Nível: Intermediário

Serge Rielau, Senior Software Developer, IBM

06/Ago/2009

O IBM® DB2® 9.7 para Linux®, UNIX® e Windows® tem suporte integrado para os dialetos SQL e PL/SQL do Oracle. Isso permite que muitos aplicativos escritos em Oracle sejam executados no DB2. Neste artigo, obtenha uma visão geral resumida do que significa a compatibilidade do Oracle em DB2. Se você deseja mudar seu aplicativo customizado para o DB2 ou estender seu suporte a fornecedor DBMS para o DB2, agora é hora.

Motivação

No mês de março passado, em uma apresentação na Cebit que fiz sobre DB2 9.7, queimei um alto-falante de computador de 110 V que, sem querer, liguei à tomada alemã de 230 V sem usar transformador. Na mesma viagem, também destruí o carregador da minha escova elétrica e do meu barbeador em incidentes semelhantes. Sem levar em conta minha evidente incapacidade de aprender dos meus erros, não é de surpreender que um dos meus provérbios favoritos (origem desconhecida) seja: "O problema com padrões é que há muitos deles."

No mundo dos relational database management systems (RDBMS), somos abençoados com, pelo menos, três grandes padrões e incontáveis variações deles:

  • ANSI SQL e ANSI SQL/PSM
  • Oracle SQL e PL/SQL
  • Sybase e Microsoft TSQL

A Figura 1 ilustra, por meio de um diagrama de Venn, como os dialetos SQL se sobrepõem:


Figura 1. A confusão babilônica do SQL

Sempre que escrevemos um aplicativo, temos de escolher que fornecedor de RDBMS usar. Depois de feita essa escolha, basicamente não é possível mudar. Qualquer tentativa de mudar de fornecedor para aproveitar preços mais baixos, tecnologia melhor ou um parceria melhor é impedido pelo código legado que requer extensas mudanças antes de poder ser usado com outro RDBMS. Além disso, seu conjunto de habilidades não pode ser transferido de um produto para outro com tanta facilidade como seria de esperar.

O IBM DB2 9.7 para Linux, UNIX e Windows (DB2) procura reduzir drasticamente as barreiras para aplicativos escritos para Oracle ao serem ativados para DB2. Isso fornece aos clientes e fornecedores a capacidade de escolher um DBMS com base em seus méritos em vez de no histórico do aplicativo.



Voltar para parte superior


O DB2 9.7 acrescenta recursos de compatibilidade do Oracle

Para permitir que um aplicativo escrito para um RDBMS seja executado em outro praticamente sem mudanças, muitas peças precisam se encaixar. Diferentes mecanismos de travamento, tipos de dados, SQL, linguagem de procedimentos que reside no servidor e até as interfaces de cliente usadas pelo aplicativo em si precisam ser alinhadas não só no que se refere à sintaxe, mas também à semântica.

Todas essas etapas foram executadas no DB2. As mudanças são a exceção, não a regra (a IBM pode avaliar rapidamente as mudanças necessárias no aplicativo). A Tabela 1 fornece uma visão geral rápida de recursos comumente usados:


Tabela 1. Recursos comumente usados
Oracle-->DB2
Controle de simultaneidade-->Suporte nativo
Dialeto SQL-->Suporte nativo
PL/SQL-->Suporte nativo
Pacotes PL/SQL-->Suporte nativo
Pacotes incorporados-->Suporte nativo
Cliente JDBC com extensões-->Suporte nativo
Scripts SQL*Plus-->Suporte nativo

Com o DB2 9.7, não é preciso mais portar um aplicativo. Basta ativar o aplicativo. No caso de um aplicativo empacotado, é possível até compartilhar uma fonte entre o DB2 e o Oracle.

Em outras palavras, ativar um aplicativo Oracle no DB2 não é mais complexo do que ativar que um programa escrito em C no HP-UX para ser executado no AIX.



Voltar para parte superior


Controle de simultaneidade

No passado, uma das diferenças mais destacadas entre o Oracle e o DB2 era a abordagem do controle de simultaneidade. O chavão é: "Leitores não bloqueiam escritores, e vice-versa."


Tabela 2. Comportamento de simultaneidade do Oracle
Transação pendenteComportamentoNova transação
Leitornão bloqueiaLeitor
Leitornão bloqueiaEscritor
Escritornão bloqueiaLeitor
EscritorbloqueiaEscritor

Sem entrar em detalhes sobre níveis de isolamento, basta dizer que a vasta maioria dos aplicativos que usam o padrão Oracle Isolamento de Nível de Instrução funcionam bem usando o padrão DB2 de Cursor Stability (CS).

Tradicionalmente, porém, a CS é implementada de modo que os escritores bloqueiem os leitores e, em alguns casos, os leitores possam bloquear os escritores. A razão disso é que, tradicionalmente, uma transação sob o isolamento de CS "aguardará o resultado" de mudanças pendentes na transação simultânea.


Tabela 3. Comportamento tradicional de simultaneidade de DB2 com CS
Transação pendenteComportamentoNova transação
Leitornão bloqueiaLeitor
Leitorraramente bloqueiaEscritor
EscritorbloqueiaLeitor
EscritorbloqueiaEscritor

Acontece que não há razão semântica de por que uma transação executada em isolamento de CS precise aguardar o resultado ao encontrar uma linha alterada. Um comportamento igualmente satisfatório é ler a versão atualmente implementada da linha alterada.

Esse comportamento foi implementado no DB2 9.7. O que acontece é que o DB2 simplesmente recupera a versão atualmente implementada de uma linha bloqueada do log. Nos casos mais comuns, a linha ainda está no buffer do log visto que a mudança ainda não foi feita. Mas mesmo que a linha tenha sido escrita e tenha sido também sobrescrita no buffer do log, o DB2 sabe exatamente onde encontrá-la, de modo que um único IO fornece a versão desejada para o conjunto de buffers.

Imagine (veja a Figura 2) um usuário atualizando o nome em uma tabela de funcionários. Antes de esse usuário concluir a mudança, outro usuário percorrer essa tabela. Tradicionalmente, o segundo usuário teria de aguardar que o primeiro concluísse ou retrocedesse. Graças à leitura dos dados atualmente implementados, a busca do segundo usuário simplesmente recuperará a versão da linha no buffer do log que não contém as mudanças do primeiro usuário.


Figura 2. Escritores não bloqueiam leitores

É importante notar que esse comportamento:

  • Não introduz novos objetos como um segmento de retrocesso
  • Não tem acréscimo de desempenho para o escritor, visto que o log precisa mesmo ser escrito
  • Não causa situações como "instantâneo antigo demais", porque, no caso extremamente improvável, de o arquivo de log precisar ser arquivado (enquanto a transação ainda está aberta!), o DB2 simplesmente aguardará o bloqueio ser removido

Além dessas mudanças, outras técnicas para evitar bloqueio foram introduzidas no DB2 para eliminar a necessidade de o leitor manter o bloqueio sob o isolamento de CS.


Tabela 4. Novo comportamento de simultaneidade do DB2 com CS
Transação pendenteComportamentoNova transação
Leitornão bloqueiaLeitor
Leitor não bloqueia Escritor
Escritor não bloqueia Leitor
EscritorbloqueiaEscritor

Como se pode ver, o comportamento de simultaneidade agora é idêntico ao do Oracle. De fato, bancos de dados DB2 recém-criados exibem esse comportamento por padrão.



Voltar para parte superior


Novos tipos de dado

O coração de todo banco de dados são os dados. Tipos ou semântica incompatíveis desses tipos podem ter um grave impacto na capacidade de ativar um aplicativo em outro RDBMS. Assim, para permitir que os aplicativos Oracle sejam executados no DB2, é vital dar suporte aos seus tipos básicos não padrão, como sequências, datas e numéricos. Além de alinhar esses tipos básicos, há outros tipos mais complexos que são comumente usados no PL/SQL da Oracle e que foram incluídos no DB2 9.7.


Tabela 5. Novos tipos de dados no DB2
Tipo de dadoDescrição
NUMBERO suporte para NUMBER e NUMBER(p [, s]) foi acrescentado com base no DECFLOAT (com aceleração de hardware Power6) e DECIMAL.
VARCHAR2O comportamento tipo VARCHAR2 inclui sequências vazias interpretadas como NULL e ordenação sensível de rastreio de espaço em branco.
Oracle DATEUm banco de dados no modo Oracle DATE inclui o componente TIME além da data do calendário.
TIMESTAMP(n)A escala de frações de segundos pode ser escolhida entre 0 (data + hora) e 12 (picossegundos).
BOOLEANEsse tipo pode ser usado em lógica de procedimentos, variáveis e parâmetros para rotinas.
VARRAYO suporte ARRAY em procedimentos foi estendido para dar suporte a método de estilo e sintaxe VARRAY.
INDEX BYAlém dos arrays regulares, o DB2 também suporta arrays associativos.
ROW TYPEEsse tipo composto pode ser usado em variáveis e parâmetros, e como elemento de arrays e arrays associativos.
Tipo Ref CursorPodem ser atribuídos cursores a variáveis ou eles podem ser transferidos por meio de parâmetros.


Voltar para parte superior


Conversão implícita e deliberação de tipo

"Se caminha como pato e faz barulho de pato, deve ser um pato."

Esse é o mantra de muitas novas linguagens, como PHP e Ruby. Todo literal é uma cadeia de caractere e, então, é usado como outro tipo baseado no contexto. Em harmonia com o Padrão SQL e seguindo a filosofia de que uma incompatibilidade de tipos é provavelmente uma indicação de um erro de codificação, o DB2 tradicionalmente segue regras fortes de tipos, nas quais as sequências e numéricos não podem ser comparados a menos que um seja explicitamente convertidos um no outro.

Infelizmente, quando um aplicativo Oracle usa tipos fracos no seu SQL, esse aplicativo teria falhado antes ao ser compilado no DB2. No DB2 9.7, a conversão implícita (ou tipo fraco) foi acrescentada. Isto é, sequências e números podem ser comparados, atribuídos e operados de forma bastante flexível.

Além disso, NULLs sem tipo podem ser usados em muito mais lugares, enquanto marcadores de parâmetro sem tipo podem ser usados quase em qualquer lugar, graças à preparação adiada. Isto é, o DB2 não resolverá o tipo de marcador de parâmetro até que tenha visto o primeiro valor real.

Para arredondar a conversão implícita, o DB2 também dá suporte a padrão de parâmetros de procedimento bem como à associação de argumentos a parâmetros por nome.



Voltar para parte superior


Biblioteca de função integrada estendidas no DB2

Todos os RDBMs fornecem bibliotecas para funções que operam nos dados. O problema é que nenhum deles usa os mesmos nomes para essas funções, mesmo que o fim da funcionalidade seja muito similar.

Além do seu próprio conjunto tradicional de funções, o DB2 agora tem suporte a uma biblioteca compatível com o Oracle. A lista a seguir fornece uma visão geral rápida, que não é, de forma alguma, completa:

  • Funções de conversão e cast
    • TO_DATE
    • TO_CHAR
    • TO_CLOB
    • TO_NUMBER
    • TO_TIMESTAMP
    Cada uma dessas funções dá suporte a um enorme conjunto de cadeias de caractere de formatação compatíveis.
  • Aritmética de data
    • EXTRACT
    • ADD_MONTHS
    • MONTHS_BETWEEN
    • NEXT_DAY
    • Mais (+) o acréscimo de frações de dias
  • Manipulação de cadeias de caractere
    • LPAD
    • RPAD
    • INSTR
    • INITCAP
    • Extensões a SUBSTR
  • Diversos
    • NVL
    • DECODE
    • LEAST
    • GREATEST
    • BITAND

O grande aumento de sobreposição em funções suportadas entre os dois produtos implica um sucesso incorporado muito aprimorado, que possibilita um aplicativo Oracle no DB2.



Voltar para parte superior


Suporte ao dialeto Oracle SQL

Este artigo, até aqui, abrangeu simultaneidade, tipos de dado, digitação e funções. Mas as diferenças entre Oracle e DB2 são mais profundas do que isso. A própria estrutura dos dialetos SQL, suas palavras-chave e semântica são diferentes em algumas áreas. Também cada produto dá suporte a alguns recursos que o outro simplesmente não tem. Quando esses recursos são populares, eles limitam a capacidade de fornecer SQL comum a ambos os produtos. Entre os muitos pequenos e grandes ajustes na linguagem, a Tabela 6 alista alguns destaques:


Tabela 6. Novo suporte do SQL
RecursoDescrição
CONNECT BY recursãoAté agora, o DB2 tem dado suporte à recursão do ANSI SQL. Agora, foi acrescentado o CONNECT BY, em estilo Oracle, incluindo várias funções e pseudocolunas como LEVEL e CONNECT_BY_PATH.
Sintaxe juntar (+)Essa sintaxe na verdade é desencorajada até pela Oracle, mas há vários aplicativos e desenvolvedores que ainda usam essa forma de sintaxe OUTER JOIN.
Tabela DUAL Uma tabela com uma única linha e coluna usada em muitos aplicativos Oracle como simulado.
Pseudocoluna ROWNUM Essa pseudocoluna em geral é usada para limitar o número de linhas retornadas e para enumerar linhas em um conjunto de resultados.
Pseudocoluna ROWID Rowids são usadas para recuperar rapidamente uma linha que tenha sido obtida anteriormente com base no seu endereço físico.
Operador MINUS SQLNo Oracle, o MINUS é usado em vez de EXCEPT para subtrair um conjunto de resultados de outro.
SELECT INTO FOR UPDATE A construção FOR UPDATE no SELECT INTO permite a extração de uma linha do DB2 com a intenção de modificá-la depois sem usar o cursor.
PUBLIC SYNONYM Um sinônimo público é um alias sem um nome de esquema. O DB2 suporta sinônimos públicos para objetos de tabela, sequências e pacotes PL/SQL.
CREATE TEMPORARY TABLE O DB2 dá suporte a tabelas temporárias globais criadas além das tabelas temporárias globais declaradas.
Instrução de tabela TRUNCATE Essa instrução exclui rapidamente o conteúdo de uma tabela inteira sem ativar acionadores.
Resolução de nome relaxadaO DB2 9.7 não exige mais que as visualizações sequenciais sejam nomeadas. Também, os nomes das colunas podem ser herdados mais facilmente a partir de operadores de conjunto como UNION.

Isso conclui a visão geral das mudanças feitas no DB2 de modo que os aplicativos Oracle que apresentam o SQL no banco de dados possam ser executados basicamente sem mudanças. Há, contudo, grandes seções de muitos aplicativos que são executadas no próprio servidor. A linguagem preferida no servidor para aplicativos Oracle é a PL/SQL. Não se pode afirmar haver real compatibilidade sem suporte para PL/SQL.



Voltar para parte superior


Suporte de DB2 para PL/SQL

Comumente, quando o aplicativo é portado de um produto para outro, o SQL e a linguagem de procedimento são convertidos de um dialeto SQL para outro. Isso apresenta vários problemas:

  • O código convertido resultante tende a ser confuso devido à incompatibilidade de automação e impedância entre o dialeto de origem e o de destino.
  • Os desenvolvedores de aplicativos não estão familiarizados com dialeto da linguagem de destino do SQL. Isso dificulta depurar o código portado. Ao longo do tempo, a manutenção adicional torna-se um desafio devido à falta de habilidades.
  • No caso de aplicativos empacotados, a conversão precisa ser repetida para cada novo release do aplicativo.
  • No fim, o resultado é uma emulação, que, por definição, é executada mais lentamente que o original.

Para evitar esses problemas, o DB2 9.7 inclui suporte nativo ao PL/SQL. O que isso significa?

Como se pode ver na Figura 3, o mecanismo DB2 agora inclui um compilador PL/SQL lado a lado com o compilador SQL PL. Ambos os compiladores produzem um código de máquina virtual para o Mecanismo Unificado de Tempo de Execução do SQL do DB2. É importante notar que as ferramentas de monitoramento e de desenvolvimento como o Optim Development Studio são ligados ao DB2 ao nível de mecanismo do tempo de execução.


Figura 3. Suporte ao compilador PL/SQL

A integração do PL/SQL ao DB2 como linguagem de procedimento de primeira classe tem várias implicações:

  • Não há conversão. O código de origem permanece como está no catálogo de esquema.
  • Os desenvolvedores podem continuar trabalhando na linguagem com a qual estão familiarizados. Não é necessário mover a lógica para o dialeto do DB2 mesmo que a nova lógica for escrita em SQL PL. Rotinas que usam dialetos diferentes podem se chamar entre si.
  • Os fornecedores de aplicativos empacotados podem usar um código de origem tanto para o Oracle como para o DB2.
  • O PL/SQL e o SQL PL produzem o mesmo código de máquina virtual para o Mecanismo Unificado de Tempo de Execução do SQL do DB2. Portanto, desde o projeto, o PL/SQL e o SQL PL são executados na mesma velocidade.
  • Visto que a infraestrutura do depurador se liga diretamente ao Mecanismo Unificado de Tempo de Execução do SQL, o PL/SQL é naturalmente suportado pelo Optim Development Studio.

A Figura 4 ilustra uma sessão depuradora do PL/SQL. O depurador suporta recursos padrão como "step into", "step over" e pontos de interrupção. Além disso, permite que o usuário mude as variáveis locais de PL/SQL enquanto o programa está em execução.


Figura 4. Suporte a depurador PL/SQL no DB2

Detalhes de sintaxe do PL/SQL

Então, o que exatamente implica o suporte a PL/SQL? Primeiro, há o suporte à sintaxe principal. O DB2 suporta todas as construções comuns do PL/SQL, como:

  • if then else
  • loops while
  • := atribuições
  • variáveis e constantes locais
  • #PRAGMA EXCEPTION e manipulação de exceção
  • Várias formas de loops (intervalo, cursor e consulta)
  • ancoramento de variáveis e parâmetros a outros objetos %TYPE e %ROWTYPE
  • transações #PRAGMA AUTONOMOUS, que permitem que os procedimentos sejam executados em uma transação particular.

Suporte a objeto PL/SQL

O PL/SQL pode ser usado em vários objetos que permitem lógica de procedimento:

  • Funções escalares
  • Antes de cada linha acionar
  • Após cada linha acionar
  • Procedimentos
  • Blocos anônimos
  • Pacotes PL/SQL

Suporte a pacote PL/SQL

A maioria dos aplicativos PL/SQL no Oracle está contida dentro dos chamados PACOTEs. Um pacote PL/SQL, —que não deve ser confundido com um pacote DB2, —é uma coleção de objetos individuais com a capacidade de diferenciar entre objetos acessíveis externamente e aqueles que são meros ajudantes para uso dentro do pacote. O equivalente ANSI SQL de um pacote é um MÓDULO. O DB2 agora fornece suporte a módulos ANSI SQL e também a pacotes PL/SQL. Em especial, os seguintes recursos são fornecidos:

  • CRIAR [OU SUBSTITUIR] PACOTE, que define protótipos para rotinas visíveis externamente. Ele define também todos os objetos visíveis externamente, não de procedimento, como variáveis e tipos.
  • CRIAR [OU SUBSTITUIR] CORPO DO PACOTE, que implementa todas as rotinas particulares e públicas, além de todos os outros objetos particulares.
  • Dentro de um pacote ou corpo de pacote, é possível definir os seguintes objetos:
    • Variáveis e constantes
    • Tipos de dado
    • Exceções
    • Funções escalares
    • Procedimentos
    • Cursores
  • Inicialização de pacote
  • Sinônimos e pacotes públicos


Voltar para parte superior


O DB2 fornece pacotes integrados comuns

Alguns aplicativos Oracle utilizam pacotes que são fornecidos pelo RDBMS. Em especial, bibliotecas que fornecem geração de relatório, e-mail ou comunicação de conexão cruzada podem ser populares. Para facilitar a ativação desses aplicativos no DB2, os pacotes alistados na Tabela 7 são fornecidos pelo DB2:


Tabela 7. Pacotes integrados fornecidos pelo DB2
PacoteDescrição
DBMS_OUTPUTFornece recursos básicos de geração de relatório que podem ser ligados ou desligados a partir da linha de comandos.
UTL_FILEMódulo que permite trabalhar com arquivos no servidor DB2.
DBMS_SQLPacote que fornece um API SQL para executar SQL dinâmica além das instruções EXECUTE e EXECUTE IMMEDIATE existentes.
UTL_MAILMódulo que permite o envio de notificações de e-mail a partir do SQL.
UTL_SMTPAPI de nível inferior similar à UTL_MAIL que fornece integração SMTP.
DBMS_ALERTPacote que, quando usado, permite que diferentes sessões sirvam de semáforo umas para as outras.
DBMS_PIPEMódulo que permite que as sessões enviem dados umas para as outras.
DBMS_JOBFornece um API compatível que se integra ao planejador de tarefas do DB2.
DBMS_LOBAPI Oracle para processamento LOB que ecoa as funções LOB integradas do DB2.
DBMS_UTILITYColeção de vários procedimentos usados em aplicativos.


Voltar para parte superior


Extensões JDBC específicas da Oracle

JDBC é uma interface do cliente Java padrão. Há, porém, extensões que foram acrescentadas ao driver JDBC da Oracle a fim de dar suporte a tipos de dado específicos, não padrão.

Para maximizar o nível de compatibilidade para aplicativos baseados em tecnologia Java, o driver JDBC do DB2 9.7 fornece, entre outras coisas, suporte para procedimentos de chamada com cursor de referência e parâmetros VARRAY.



Voltar para parte superior


Suporte a script SQL*Plus usando CLPPlus

Muitas vezes scripts DDL e até relatórios são escritos usando o processador de linha de comandos do SQL*Plus. Para facilitar a transferência desses scripts bem como a habilidade dos desenvolvedores que os escrevem, o DB2 fornece um processador de linha de comandos compatível com SQL*Plus, chamado CLPPlus. A ferramenta fornece a seguinte funcionalidade:

  • Opções de comando compatíveis com SQL*Plus
  • Substituição de variável
  • Formatação de coluna
  • Funções de geração de relatório
  • Variáveis de controle

Figura 5. Ferramenta CLPLus compatível com SQL*Plus



Voltar para parte superior


Ativar o DB2 é tão fácil como arrastar e soltar

Devido ao alinhamento próximo do DB2 com PL/SQL e o Oracle SQL, não é necessária um kit de ferramentas complexo para migração. Em vez disso, basta usar a IBM Data Movement Tool para simplesmente arrastar e soltar tabelas, pacotes ou esquemas inteiros do Oracle para o DB2. São necessários apenas ajustes mínimos, que são uma exceção, para mover o aplicativo para DB2, ou modificar um aplicativo de modo que a mesma fonte possa operar no DB2 e no Oracle.

As etapas podem ser simplesmente:

  1. Ajustar as variáveis de registro necessárias:
    • db2set DB2_COMPATIBILITY_VECTOR=ORA
    • db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
  2. Reiniciar o gerenciador do banco de dados:
    • db2stop
    • db2start
  3. Criar um banco de dados compatível com Oracle:
    • db2 create database mydb pagesize 32 K
    • db2 update db cfg for mydb using auto_reval deferred_force
  4. Iniciar a IBM Data Movement Tool e conectá-la aos bancos de dados Oracle e DB2 (veja a Figura 6). Depois de conectado, pode-se escolher extrair apenas o DDL ou o DDL e os dados. Por fim, há duas opções: É possível implementar diretamente executando os scripts gerados ou continuar com o painel de implementação interativa. (O último é recomendado para a maioria dos aplicativos não triviais.)

    Figura 6. Arrastar e soltar esquemas Oracle para o DB2 usando a IBM Data Movement Tool


  5. Mova os esquemas desejados do Oracle para o DB2 usando a implementação interativa (veja a Figura 7). No modo de implementação interativa, é possível ver uma árvore de navegação que exibe todos os objetos extraídos do banco de dados Oracle. Selecione todos os objetos e execute a opção do menu de implementação. Em resultado disso, a ferramenta copia os objetos para o DB2 e registra seu progresso. Alguns objetos talvez não sejam implementados com êxito, e a ferramenta lhe dá a opção de trabalhar com eles. Ao selecionar um objeto, será possível ver o DDL junto com o erro que o DB2 encontrou. Agora, é possível corrigir a definição conforme for necessário e reimplementar usando o editor integrado. O objetivo é mover de forma interativa todos os objetos para DB2 com base em exceção.

    Figura 7. Arrastar e soltar esquemas Oracle para o DB2 usando a IBM Data Movement Tool




Voltar para parte superior


Dimensionamento da ativação para DB2

Então, será fácil mesmo ativar seu aplicativo no DB2 9.7? A resposta, é claro, seria: Depende. A IBM tem uma ferramenta interna chamada MEET DB2, que pode analisar todos os objetos no seu banco de dados Oracle e classificá-los. Ela produz um relatório do que vai funcionar sem problemas e que ajustes precisarão ser feitos. Seu representante de conta ou contato de vendas IBM pode executar esse utilitário para fornecer rapidamente uma avaliação de compatibilidade do seu banco de dados Oracle atual com o DB2.


Figura 8. Ferramenta de relatório MEET DB2 para avaliação

Durante a fase beta de um ano do DB2 9.7, muitos aplicativos, no total de mais de 750.000 linhas de código PL/SQL foi analisado em detalhes, com uma média de taxa de transferência direta de 90%-99%.


Figura 9. Taxa média de 98% de instruções suportadas



Voltar para parte superior


Restrições

A PL/SQL, a biblioteca integrada de pacotes e o CLPPlus atualmente não estão disponíveis para as edições DB2 Express, DB2 Express-C e DB2 Personal.



Voltar para parte superior


Resumo

Graças a seu suporte nativo a múltiplos dialetos SQL, o DB2 9.7 permite ativação fácil dos aplicativos Oracle no DB2. Os fornecedores de aplicativos empacotados podem oferecer seus aplicativos tanto em Oracle como em DB2 a um custo adicional mínimo. Os clientes podem escolher facilmente o fornecedor que oferece a tecnologia de que precisam sem serem limitados por escolhas passadas.

Para testar esses recursos, é possível fazer o download da versão de teste do DB2 9.7 (veja em Recursos).



Voltar para parte superior


Perguntas mais frequentes

Que versão do Oracle o DB2 9.7 suporta?

O que é abrangido pelos dialetos SQL e PL/SQL se baseia estritamente no que está sendo usado pelos aplicativos. Há recursos que foram introduzidos em releases tão recentes quanto o Oracle 11g e que são suportados, enquanto construções disponíveis no Oracle 8i não são suportadas. Em um estudo de 18 aplicativos que totalizaram mais de 750.000 linhas, 90%-99% do código foi movido do DB2 sem mudanças. Muitos dos ajustes restantes podem ser automatizados ou são repetitivos.

Com que velocidade meu aplicativo Oracle será executado no DB2?

Essa é a grande pergunta! Infelizmente, os termos de licença da Oracle proíbem que alguém publique resultados comparativos sem prévio consentimento por escrito. É desnecessário dizer que nós nem pedimos. Contudo, por seu próprio design e comparativo de garantia de qualidade confirmado, um aplicativo escrito em PL/SQL no DB2 é tão rápido quanto um escrito em SQL PL no DB2. Fornecedores que já passaram pelo processo de ativação em geral ficam agradavelmente surpresos.

Foi muito trabalhoso fornecer esses recursos?

Não tanto como seria de imaginar. Parte do trabalho inicial, como CONNECT BY e NUMBER, foi feito para o DB2 9.5 de forma tática. O esforço foi concluído em menos de 18 meses.

Quais são algumas complicações comuns ao ativar do Oracle para o DB2?

A compatibilidade do DB2 obviamente não é de 100%. De modo que provavelmente haverá alguns pequenos problemas quando o DB2 for ativado pela primeira vez. Muitas dessas complicações, porém, são triviais e fáceis de resolver. Por exemplo, o DB2 suporta ativadores PL/SQL, mas não permite que as ações deles sejam combinadas. Isto é, um acionador é compartilhado pelas ações UPDATE, DELETE e INSERT. Assim, em vista de um acionador PL/SQL de múltiplas ações, é bastante fácil copiá-lo em três acionadores PL/SQL do DB2 usando uma variável booleana para os predicados INSERTED, UPDATED e DELETED.



Recursos

Aprender

Obter produtos e tecnologias
  • DB2 9.7 para Linux, Unix e Windows: Faça download de uma versão de teste, gratuita, do DB2 9.7 para Linux, UNIX e Windows.

  • DB2 Express-C 9.7: Faça download do DB2 Express-C 9,7, uma versão gratuita do servidor de banco de dados DB2 Express para a comunidade.

  • Elabore seu próximo projeto de desenvolvimento com o software de teste IBM, disponível para download diretamente no developerWorks.


Discutir


Sobre o autor

Serge Rielau is part of the DB2 Solutions Development team, where he closely works with customers and business partners to port or migrate their applications from competitive RDBMS to DB2 for Linux. UNIX, and Windows. Prior to this role, he worked for 7 years as a team lead and technical manager in the DB2 SQL Compiler Development team. As an expert in the SQL language, Serge is an active participant in the comp.databases.ibm-db2 newsgroup.




Avalie esta página


Reserve um instante para completar este formulário para nos ajudar a servi-lo melhor.



 


 


Não
são úteis
Extremamente
úteis
 






Voltar para parte superior