! " # !
$
% &#
! ' " !
# ( " )
% &#
%
)* " +,,-
Micaela Lima, 2009
&&
#
A migrao de dados pode ser descrita como um conjunto de actividades, que transfere dados a
partir de um ou mais sistemas fonte para um novo sistema, com o objectivo de preservar o core
business e torn-lo acessvel a partir da nova aplicao.
O processo de migrao de dados algo complexo e o seu sucesso depende de vrios factores que
passam por compreender os requisitos do cliente relativamente aos dados a migrar e s respectivas
regras de negcio, de modo a que este se envolva no processo de migrao e apoie as decises sobre
quais os dados a migrar.
A grande variedade de sistemas aplicacionais obsoletos disponveis nas instituies incentiva a
necessidade de migrar os dados dos sistemas aplicacionais legados para novas solues. O trabalho
que a seguir se apresenta, no mbito da migrao de dados, tem como objectivo desenvolver uma
ferramenta de migrao de dados de diversos sistemas fonte, sobre os quais no se tem conhecimento
prvio, para um novo sistema - ALERT, a qual se designa por Data Migration Framework.
Esta nova ferramenta de migrao de dados envolve extraco de dados do sistema fonte, limpeza
para reparar dados corrompidos ou invlidos e remoo de registos duplicados. Efectua-se assim uma
transformao na fonte de dados de modo a que este fique de acordo com as exigncias do sistema
destino, traduzindo os valores para a nova fonte de dados, com base numa rea intermdia onde feito
o primeiro carregamento com informao do sistema fonte, atravs de tabelas de mapeamento e
funes auxiliares que permitem migrar os dados com preciso e num perodo de tempo exguo.
Os resultados principais do trabalho so a ferramenta de migrao de dados e uma ferramenta
complementar de monitorizao do processo. A ferramenta de migrao j foi utilizada para testes
reais num caso concreto, na Holanda, com resultados satisfatrios.
&&&
&
$ %
Data migration can be described as a set of activities, which transfers data from one or more
source systems to a new system, in order to preserve the core business and make it accessible for the
new application.
The data migration process is quite complex and its success depends on several factors, among
them, understanding the customer requirements of the data to be migrated, their business rules so that
the customer become involved in the migration process, and support the decisions to identify what
data must be migrated.
The variety of obsolete application systems within a company or institution encourages the need to
migrate data from legacy systems to new solutions. The work that is presented below, concerning data
migration, is about developing a generic framework to migrate data from different unknown source
systems, to a new system - ALERT, namely Data Migration Framework.
This new Data Migration Framework involves extracting data from different source systems, data
cleansing to repair corrupted or invalid data, removing duplicate records, transforming the source data
in order to match with the requirements of the destination system, reflecting the values for the new
data source, based on a staging area where is done the first upload with the source information, using
mapping tables and auxiliary functions that allow migrating the data accurately and within a short and
limited period of time.
The main results of this work are the data migration framework and an additional framework
to monitoring the data migration process. The data migration framework has already been tested in a
real case in the Netherlands with satisfactory results.
Key words: Extract data, Transform data, Mapping data, Data Migration, Load data.
&
& % ' %
Nos termos do acordo de confidencialidade celebrado com a ALERT Life Sciences Computing,
S.A. (ALERT), o presente relatrio confidencial e poder conter referncias a invenes,
know-how, desenhos, programas de computador, segredos comerciais, produtos, frmulas, mtodos,
planos, especificaes, projectos, dados ou obras abrangidos por direitos de propriedade industrial
e/ou intelectual da ALERT. Este relatrio s poder ser utilizado para efeitos de investigao e de
ensino. Qualquer outro tipo de utilizao est sujeita a autorizao prvia e por escrito da ALERT.
&&
%
Ao Eng. Hugo Firmino, a oportunidade e apoio necessrio para desenvolver este projecto.
Aos meus pais e av, que sempre me incentivaram a continuar mesmo nos momentos de menor
alento.
Ao Pedro Amorim, pela compreenso e pelo tempo que lhe subtra em favor deste projecto.
&&&
&.
( %
ABSTRACT .......................................................................................................................................................... V
AGRADECIMENTOS.....................................................................................................................................VIII
NDICE ................................................................................................................................................................. X
CAPTULO 1 ...................................................................................................................................................... 17
INTRODUO ..................................................................................................................................................... 17
1.1 ALERT Life Sciences Computing, S.A .................................................................................................. 17
1.2 Pertinncia do projecto ........................................................................................................................ 19
1.3 Desafios do projecto ............................................................................................................................ 20
1.4 - Objectivo do projecto............................................................................................................................ 21
1.5 Estrutura da dissertao ...................................................................................................................... 21
CAPTULO 2 ...................................................................................................................................................... 23
.
CAPTULO 3 ...................................................................................................................................................... 37
CAPTULO 4 ...................................................................................................................................................... 48
CAPTULO 5 ...................................................................................................................................................... 98
.&
ANEXOS ............................................................................................................................................................ 107
.&&
) #
Figura 5 Exemplo de arquitectura com rea intermdia num servidor prprio .................................................. 29
.&&&
Figura 21 Exemplo de contextos ODI ................................................................................................................ 67
Figura 36 - Progresso MAP OLD/MAP NEW para tabelas do tipo CC_ .......................................................... 84
Figura 37 - Progresso MAP OLD/MAP NEW para tabelas do tipo CO_ .......................................................... 85
.&
$ &
.
$ ' # * $ &
. &
/
!
!* #& +
+,+ - ) % % !# . ,
01
/
!
iniciativa IHE (Integrating the Healthcare Enterprise) e membro activo da HL7 (Health Level 7). A
ALERT participa na Distributed Interoperability Showcase (RHIO scenario) e New Directions
(HITSP - Healthcare Information Technology Standards Panel) Showcase, eventos promovidos pela
HIMSS (Healthcare Information and Management Systems Society), da qual a ALERT Platinum
Corporate Member. Para alm disto, o ALERT utiliza nomenclaturas padro como o SNOMED CT,
ICD9, LOINC e a ICNP.
O ALERT uma ferramenta operacional para todos os ambientes de prestao de cuidados de
sade e para todos os profissionais da rea da sade com a capacidade amplamente demonstrada de
produzir ambientes totalmente isentos de papel. O dirio online O Mirante publicou recentemente
uma notcia que confirma duas das caractersticas mais relevantes do ALERT, ou seja, a capacidade
de detectar falhas, muitas vezes graves, nos servios de sade e a maior rapidez de comunicao entre
servios ou instituies hospitalares [1].
Na base do ALERT encontra-se a noo de fluxo de trabalho que permite o envio de
informao a utilizadores relevantes e interliga as actividades de todos os profissionais de sade, o que
torna possvel:
Destacar para cada utilizador actividades especficas e reas de trabalho;
Apresentar informao constantemente actualizada em formato de grelha sumrio para cada
perfil de utilizador e utilizador individual;
Alertar cada utilizador para tarefas pendentes.
O ALERT constitudo por uma vasta gama de produtos, entre eles: ALERT EDIS, ALERT
INPATIENT, ALERT OUTPATIENT, ALERT ORIS, ALERT DATA WAREHOUSE, ALERT
PFH. Com estes produtos possvel registar toda a informao em tempo real, permitindo a partilha
da informao, facilitando o acesso ao histrico do utente e evitando problemas de legibilidade e de
comunicao.
O ALERT EDIS (Emergency Department Information System) uma soluo completa
para servios de urgncias hospitalares que possibilita o registo, a anlise e a integrao de toda a
informao relacionada com cada episdio de urgncia. A primeira verso deste produto designada
por ALERT ER (Emergency Room).
O ALERT ORIS (Operating Room Information System) permite gerir toda a informao
relacionada com as aces desempenhadas no bloco operatrio.
O ALERT INPATIENT corresponde a um sistema capaz de gerir informao relativa a
servios de Internamento.
O ALERT OUTPATIENT uma soluo que possibilita a gesto das Consultas Externas
em ambientes de prestao de cuidados de sade.
O ALERT DATA WAREHOUSE, permite analisar no s dados clnicos mas tambm
financeiros e comparar os resultados obtidos com outras instituies.
02
/
!
+,/ - 0 % ! 1 %
A adopo do sistema ALERT por parte de uma instituio hospitalar traduz-se num projecto
de difcil implementao, pois, para alm dos aspectos relacionados com a implantao, formao dos
utilizadores e mudana de procedimentos, acarreta ainda os problemas de como lidar com os dados
pr-existentes em papel ou em sistemas aplicacionais variados e de minimizar a durao da fase de
transio.
O mtodo a definir para a migrao de dados utilizado para um determinado sistema depende
fundamentalmente dos sistemas fonte envolvidos, bem como da natureza e do estado dos dados que
sero migrados. Para isso, necessrio fazer uma anlise aos sistemas fonte e ao sistema de destino
para determinar se a migrao pode ser feita com um risco reduzido. A anlise aos sistemas pode ser
realizada em diferentes fases.
Numa primeira fase preciso definir exactamente qual a informao que o cliente pretende
migrar para o sistema ALERT e em que formato se encontra a informao. Os dados esto, muitas
vezes, em formato digital, guardados quer em base de dados, quer em ficheiros de texto. Caso exista
informao que no possa ser incorporada no sistema ALERT, essencial adoptar um mecanismo
para armazenar essa informao, de modo a que os dados do sistema fonte no sejam perdidos.
Numa segunda fase, realiza-se a migrao dos dados. A arquitectura dos sistemas fonte
geralmente muito diferente da do sistema de destino e os sistemas fonte nem sempre cumprem os
critrios estabelecidos no novo sistema. Esta situao pode tornar complexa a migrao de dados para
o sistema de destino. Com efeito, o processo de limpeza e manipulao dos dados pode permitir que
estes fiquem em conformidade com os requisitos do novo sistema. Caso contrrio, tero de ser
adoptadas solues especficas que passam por armazenar determinada informao do sistema fonte
numa rea especificada pelo cliente ou, se possvel, a ALERT poder desenvolver novas
funcionalidades para ir de encontro ao pedido do cliente.
Quando uma organizao passa de um sistema antigo para um novo sistema como o ALERT,
pretende preservar o mximo de dados histricos para fins de auditoria e pesquisa e para as
actividades organizacionais em curso. A migrao de dados entre sistemas a actividade que as
organizaes que pretendem renovar os seus sistemas antigos tm que realizar, com a preocupao de
minimizar a perda de informao na transio para o novo sistema. Numa migrao realizada uma
anlise dos sistemas fonte e do novo sistema com o intuito de identificar o melhor mtodo para migrar
os dados, tendo em ateno os prazos impostos pelo cliente e os perodos de paragem, que afectem
0-
/
!
+,2 - ) ! 1 %
Em situaes anteriores, as migraes na ALERT eram baseadas num nico sistema fonte e
tratadas de forma ad hoc. Nestes casos o sistema fonte e o sistema de destino eram conhecidos, pois
tratava-se da migrao do produto ALERT ER para o produto ALERT EDIS.
Recentemente na Holanda surgiu um novo desafio para a ALERT, que consiste em migrar dados
de vrios sistemas fonte em simultneo, sobre os quais no se tem qualquer conhecimento prvio, para
o sistema ALERT. Este novo desafio impulsionou o desenvolvimento de uma ferramenta especfica e
motivou o presente projecto. Esta nova ferramenta, a qual se designa por Data Migration Framework
(DMF), no de implementao simples, na medida em que constitui um sistema complexo, no qual
existem mltiplas variveis que se inter-relacionam de diferentes formas.
A Data Migration Framework a ferramenta de migrao de dados que vai permitir transferir
mais facilmente dados de vrios sistemas antigos para o ALERT. Todas as transferncias de dados
podero ser executadas manualmente numa base ad hoc, ou programadas em determinados intervalos
de tempo.
Para dar resposta ao desafio definido neste projecto, subdividimo-lo num conjunto de seis
sub-desafios que passam por:
1 - Processar grande volume de dados.
2 - Migrar dados num tempo reduzido.
3 - Minimizar o perodo de paragem.
4 - Gerir interdependncias entre funcionalidades a migrar.
5 - Identificar e suportar as dependncias entre os dados.
6 - Demonstrar o sucesso do processo de migrao de dados.
No desenvolvimento da ferramenta de migrao de dados, estes sub-desafios so de natureza
diversa mas do sucesso na sua ultrapassagem que depende o resultado de um sistema de migrao.
+,
/
!
+,3 4 $1 % ' ! 1 %
O objectivo global deste projecto consiste em desenvolver uma ferramenta de migrao de dados
para o sistema ALERT, com generalidade no tratamento da informao dos sistemas fonte,
suportando informao estruturada e no estruturada. Nesse sentido, ser dada grande importncia
implementao de uma arquitectura que permita utilizar a ferramenta desenvolvida em cenrios reais.
Para ir de encontro ao objectivo proposto, especifica-se as seguintes caractersticas e
condicionantes:
Permitir migrar dados de vrios sistemas fonte, sobre os quais no se tem qualquer
conhecimento prvio.
Incorporar o mximo de informao histrica, dos sistemas fonte, na aplicao ALERT.
Melhorar a capacidade de organizar os processos envolvidos na migrao.
Maximizar o desempenho do processo de migrao, minimizando o tempo de migrao de
dados.
Utilizar rapidamente a nova aplicao, ALERT, enquanto se desligam os sistemas antigos.
Se necessrio, manter os sistemas antigos em paralelo com a nova aplicao.
+,5 - # #
++
/
!
!* #& /
Neste captulo pretende-se abordar a reviso da literatura efectuada com o intuito de adquirir um
conhecimento mais preciso sobre a questo da migrao de dados, os diversos tipos de arquitectura e a
relao com o Oracle Data Integrator.
/,+ - %
+3
/
!
+4
/
!
/,/ - %
O termo ETL representa tanto os nomes como a ordem das operaes a realizar. A fase de
transformao de dados no processo de ETL a que mais esforo computacional requer e realizada
inteiramente pelo motor proprietrio de ETL. O motor de ETL realiza a transformao dos dados e por
vezes a validao da qualidade dos mesmos, linha a linha e, consequentemente pode, com alguma
facilidade, tornar-se no ponto de estrangulamento no processo global.
Os projectos de migrao consolidam frequentemente dados de diferentes fontes. A maioria
dessas fontes tendem a ser bases de dados relacionais ou Flat Files1 podendo, contudo, existir outras
fontes. Um sistema ETL tem que ser capaz de comunicar com as bases de dados e ler diversos
formatos de arquivos utilizados por toda uma organizao. Com efeito, essa pode ser uma tarefa no
trivial e muitas fontes de dados podem ser de difcil acesso. Os processos de ETL podem ser muito
complexos e problemas operacionais significativos podem ocorrer com sistemas de ETL
desenvolvidos inapropriadamente. Quando as regras de validao e transformao so detalhadas,
pode acontecer que o intervalo de valores e a qualidade dos dados no tenham sido correctamente
especificados. A anlise dos dados fundamental para identificar as condies dos dados que
precisam de ser dirigidos pelas especificaes de regras de transformao.
Actualmente, existem vrias empresas especializadas em compreender as necessidades
especficas duma organizao e em desenvolver solues medida para a migrao dos dados. De
acordo com a pesquisa efectuada pela empresa de consultoria Gartner [5], as empresas que fazem
0
Os Flat Files correspondem a ficheiros de dados com uma estrutura muito simples, como por exemplo, ficheiros do tipo TXT ou CSV.
+5
/
!
parte do quadrante de Lderes de Mercado (ver Figura 2), no desenvolvimento de ferramentas de ETL,
so:
IBM, com o DataStage;
Informatica, com o PowerCenter.
Para alm das duas empresas anteriormente referidas, existem ainda trs grandes empresas que
investem significativamente no desenvolvimento de ferramentas de ETL, nomeadamente: BO
(Business Objects), Oracle e SAS. Como o conceito de ETL estvel, o Power Center da Informatica
e o DataStage da IBM apresentam uma estrutura base similar.
A ferramenta de ETL da Oracle, designada por Oracle Data Integrator (ODI), foi a eleita para o
desenvolvimento da ferramenta de migrao de dados para o ALERT. O ODI oferece a capacidade
de integrao de dados heterogneos e alta performance usando a tecnologia de E-LT. Entre outras
vantagens, esta soluo contribui para a diminuio do tempo de desenvolvimento da ferramenta de
migrao de dados, na medida em que dispe de suporte para a integrao de dados em tempo real e
permite a reduo do custo de desenvolvimento e manuteno de mapeamentos de integrao de
dados com a utilizao de bibliotecas de cdigos pr-configuradas, designadas por mdulos de
conhecimento (knowledge modules - KM).
+6
/
!
/,2 - 6# % #
Dado que actualmente as organizaes no esto dispostas a correr riscos relacionados com a
integridade dos seus dados no processo de migrao, surge a necessidade de definir cuidadosamente a
arquitectura responsvel pelo processo de migrao, desde a fase de extraco dos dados do sistema
fonte, passando pela fase de transformao, at ao carregamento dos dados no sistema de destino.
Em arquitecturas tradicionais de migrao de dados, a abordagem tpica para a migrao
consiste em carregar os dados directamente numa base de dados relacional. No entanto, importante
compreender que, normalmente, os dados a migrar no provem apenas de uma fonte, mas so obtidos
a partir de mltiplas fontes aplicacionais, em certos casos correlacionados.
Para que seja possvel desenvolver a arquitectura adequada ao processo de migrao, para uma
determinada organizao, essencial estabelecer comunicao com o cliente e compreender quais as
suas expectativas face migrao. Frequentemente as organizaes exigem que todos os requisitos
presentes no sistema aplicacional antigo e os dados histricos sejam migrados, o que resulta em meses
de trabalho.
No momento da concepo da arquitectura de migrao, existem vrias questes que devem ser
tidas em considerao e que so entre outras :
Quantos sistemas fonte e destino esto envolvidos?
Qual o volume de dados que vai ser migrado?
Qual a capacidade do processador nos sistemas fonte?
Como se encontra a qualidade dos dados nos sistemas fonte?
Quanto tempo que os sistemas fonte podem ficar parados, durante a migrao?
Quais as reas que o cliente pretende migrar para o sistema ALERT?
possvel migrar para o novo sistema, todas as reas definidas pelo cliente?
exequvel mapear todo o contedo dos sistema fonte com o sistema de destino?
Aps anlise de todos estes aspectos, possvel elaborar a arquitectura mais adequada a cada
organizao.
Durante o processo de migrao o volume de dados a transferir para o sistema de destino pode
ser extremamente elevado e, nestes casos, frequente recorrer-se utilizao de uma rea intermdia
para armazenar os dados do sistema fonte e proceder ao processo de transformao, com o intuito de
adaptar os dados ao sistema de destino. A localizao desta rea intermdia pode variar de acordo com
as exigncias do projecto e os recursos envolvidos. Quando se pretende extrair os dados dos sistemas
fonte, tal como so e mov-los para uma rea intermdia localizada no sistema de destino, onde a
transformao pode ser realizada, a arquitectura pode ser esquematizada do seguinte modo (ver Figura
3):
+1
/
!
De acordo com a figura anterior (Figura 3) e tendo em considerao que os sistemas de origem e
de destino se encontram em servidores separados possvel depreender que com a utilizao de uma
rea intermdia no sistema de destino, este poder ficar sobrecarregado especialmente perante grande
volume de dados. Se durante o processo de transformao na rea intermdia, vrias tabelas forem
normalizadas em registos diferentes de dados, isso poder resultar num aumento significativo no
volume de dados e agrava a situao no processador do sistema de destino ficaria sobrecarregado.
Existe ainda a possibilidade de outras equipas, que no a de migrao, poderem realizar intervenes
no sistema de destino, em simultneo com a migrao, o que contribuir ainda mais para a sua
sobrecarga.
Uma outra abordagem, para o processo de migrao, passa por mover a rea intermdia do
sistema de destino para o sistema de origem, como ilustra a Figura 4:
+2
/
!
+-
/
!
/,3 - 6# % # 4
A migrao de aplicaes numa organizao e a consolidao dos dados num nico sistema
integrado uma tarefa complexa.
O Oracle Data Integrator uma ferramenta que permite transformar eficientemente grandes
quantidades de dados, processar eventos em tempo real atravs da sua avanada capacidade de captura
de alteraes de dados (CDC) e fornecer funcionalidades robustas de controlo de integridade dos
dados, que asseguram a coerncia e exactido dos mesmos. Resume, deste modo, os requisitos de
desempenho, flexibilidade, produtividade e modularidade de uma plataforma de integrao, devido ao
seu ncleo constitudo por mdulos de conhecimento, desenho declarativo e arquitectura E-LT. A
arquitectura E-LT facilita a utilizao da programao manual e a abordagem ETL na mesma soluo.
Tradicionalmente, as ferramentas de ETL comeam por extrair os dados de diversos sistemas
fonte, transformam-nos e por fim carregam os dados transformados no sistema de destino. A
abordagem E-LT, exemplificada na Figura 6, desloca o passo de transformao de dados para o
sistema de destino, mudando a ordem de operaes para a seguinte:
1 - Extrair os dados das tabelas do sistema fonte,
2 - Carregar os dados no sistema de destino,
3 - Transformar os dados no sistema de destino.
Embora a arquitectura E-LT, utilizada pelo ODI, no v de encontro arquitectura ETL definida
para a Data Migration Framework (Figura 5), possvel estruturar a arquitectura ETL recorrendo a
trs arquitecturas E-LT relativamente a diferentes fases do processo de migrao de dados, tendo por
base o ODI, como exemplifica a Figura 7.
3,
/
!
30
/
!
3+
/
!
A abordagem de integrao dos dados envolve extrair todos os dados do sistema fonte e, em
seguida, integrar toda a informao no sistema de destino. No entanto, esta abordagem pode revelar-se
ineficaz quando o processo de integrao reflectir a necessidade de uma integrao orientada a
eventos. Outro uso deste tipo de integrao pode exigir captar mudanas ao nvel de base de dados.
A capacidade de captura de alteraes de dados (CDC - Changed Data Capture) do Oracle Data
Integrator identifica e captura inseres, actualizaes ou eliminaes de dados do sistema fonte e
torna disponvel para processos de integrao. A ferramenta CDC usada para gerir alteraes, que
frequentemente envolvem vrios sistemas fonte ao mesmo tempo, genrica e aberta, de modo a que
o mtodo de monitorizao de alteraes possa ser personalizado. Este mdulo permite processar
conjuntos de alteraes para as quais a consistncia dos dados garantida.
O Oracle Data Integrator utiliza regras declarativas de integridade de dados definidas no seu
repositrio de metadados centralizado, como demonstra a Figura 9. Estas regras so aplicadas para
garantir a integridade e a coerncia da informao empresarial. Os benefcios da integridade dos dados
so essenciais para as iniciativas de qualidade de dados e facilitam a integrao com processos
empresariais actuais e futuros.
O Oracle Data Integrator recupera, automaticamente, regras definidas a nvel dos dados, como
o caso das constraints a nvel de base dados, por um processo de reverse engineering. Permite, ainda,
33
/
!
definir regras declarativas adicionais que podem ser deduzidas a partir da descoberta de dados e perfis
dentro do Oracle Data Integrator e imediatamente verificadas. Regras declarativas para a integridade
dos dados incluem regras nicas, validao de regras que foram a consistncia a nvel do registo e
regras de referncia simples ou complexas possivelmente envolvendo tecnologias heterogneas.
Dada a complexidade de todo o processo de migrao de dados, os desenvolvimentos
necessrios especificao da arquitectura adequada Data Migration Framework sero
pormenorizados nos prximos captulos.
/,5 - # #
34
/
!
Designer
- Mdulo central para os programadores e administradores de metadados.
- Permite definir regras declarativas para a transformao dos dados e a integridade dos mesmos.
- Utiliza metadados e regras para gerar cenrios de produo.
- Todos os desenvolvimentos que englobam a criao de projectos ocorrem neste mdulo.
- Neste mdulo so definidos o sistema de base de dados e o sistema aplicacional.
Operador
- Controla e monitoriza actividades de produo.
- Permite visualizar logs de erros, o nmero de registos processados, estatsticas e o cdigo que
realmente executado.
- Na fase de desenvolvimento este mdulo essencial para questes de debug.
Topologia
- Permite definir a arquitectura fsica e lgica da infra-estrutura
- Est ligado ao repositrio mestre.
- Atravs deste mdulo possvel registar servios, agentes, schemas no repositrio mestre.
Segurana
- Responsvel pela gesto dos perfis dos utilizadores e os seus respectivos privilgios de acesso.
- Este mdulo permite atribuir privilgios de acesso a objectos e recursos.
35
/
!
O modelo grfico que permite compreender melhor a relao entre o repositrio mestre e os
repositrios de trabalho exemplificado na Figura 11.
36
/
!
!* #& 2
7&
A palavra projecto usada pela primeira vez por altura do sc. XVI, deriva do Latim projicere
(lanar para a frente), sugerindo movimento, trajectria, uma relao exacta com espao e tempo.
Um projecto pode ser definido, segundo o PMBOK Guide [3], como um conjunto de
actividades no repetitivas, planeadas e realizadas de acordo com determinadas especificaes
tcnicas, que visam alcanar objectivos pr-definidos (de custo, prazo e resultados).
De um modo geral, um projecto de migrao pode ser resumido em quatro fases,
respectivamente: planeamento, anlise, desenvolvimento e concluso. extremamente importante que
a fase de anlise seja rigorosa de modo a permitir identificar e documentar todas as regras para a
migrao de dados, com a correspondente aceitao de todas as partes envolvidas. A correcta
definio de regras permite elaborar a ferramenta mais apropriada para o processo de migrao de
dados de vrios sistemas fonte para o ALERT.
2,+ - 1 %
Um projecto de migrao de dados composto por um ciclo de vida mais ou menos extenso,
consoante o tipo de projecto e assenta, essencialmente, nas fases de planeamento, anlise,
desenvolvimento e concluso. Todas as fases so essenciais para atingir os objectivos propostos e por
conseguinte, todas devem ser tratadas com igual ateno.
31
/
!
1 - A fase de planeamento tem como propsito definir o mbito, tempo e custos necessrios
para concluir o projecto. Envolve a definio dos objectivos, a seleco e alocao de recursos
materiais e humanos, calendarizao, definio do oramento e obteno de aprovao para a
implementao do projecto. Esta fase inclui, tambm, anlises viabilidade do projecto em termos
funcionais, tcnicos e financeiros, bem como estudos prvios de mercado (a nvel tcnico e financeiro)
e anlise de alternativas.
2 - A fase de anlise tem como objectivo detalhar a definio do mbito do projecto e com base
no custo e tempo aprovados na fase de planeamento, analisar de que forma o projecto ser
desenvolvido.
3 - A fase de desenvolvimento corresponde implementao do projecto tendo em conta o
planeamento efectuado, a nvel dos prazos, custos e qualidade. Esta fase inclui a definio da
organizao, a alocao e gesto dos recursos humanos, materiais e financeiros, a contratao de
equipamentos e de servios, a verificao e controlo dos prazos, dos custos e da qualidade, e o
replaneamento.
4 - A fase de concluso corresponde libertao dos recursos, elaborao de documentao e
entrega dos resultados do projecto.
A migrao de dados uma tarefa complexa correspondendo, por isso, a um projecto de difcil
implementao e controlo. Para minimizar o risco de encarar dificuldades ao nvel da rectificao de
requisitos, possveis atrasos na migrao de dados, custos que ultrapassam o oramentado, falhas de
documentao, entre outros, necessrio uma definio rigorosa das diferentes fases especficas do
projecto de migrao de dados, que pode ser dividido em cinco fases, nomeadamente:
1 - Fase de Preparao: Nesta fase so analisados e documentados todos os dados do sistema
fonte por reas, com o intuito de definir qual a informao que o cliente pretende migrar para o novo
sistema, bem como esclarecer o que deve ser feito com a informao que no possa ser migrada.
tambm pertinente analisar as diferenas entre as funcionalidades do sistema fonte e de destino, bem
como mapear os dados das diversas funcionalidades do sistema fonte para os dados necessrios ao
correcto funcionamento do sistema de destino. Nesta fase dever ser descrito como os dados sero
migrados, mapeados e como sero apresentados no novo sistema, tendo em considerao requisitos a
nvel de hardware no perodo de migrao.
2 - Fase de Configurao: A fase de configurao consiste em preparar o ambiente para a
migrao, definindo as ligaes entre os diferentes sistemas, configurando as relaes entre o sistema
aplicacional fonte e os dados de referncia do sistema de destino, assim como definir o mtodo de
extraco dos dados do sistema fonte, num dos formatos suportados pela Data Migration Framework,
ou seja, recorrendo a ficheiros XML ou Flat Files.
Nesta fase alm de ser definido o mtodo de extraco dos dados do sistema fonte, tambm
executada a sua exportao e a respectiva importao na rea intermdia, onde sero realizadas todas
as transformaes necessrias para a correcta importao no sistema de destino.
32
/
!
3 - Fase de Migrao em Pr-Produo: A fase de migrao dos dados do sistema fonte para
o sistema de destino, num ambiente de pr-produo, pode ser descrita como uma primeira migrao
que, normalmente, executada cerca de um ms antes da migrao final (num ambiente de produo).
Nesta fase, o sistema aplicacional fonte mantm-se activo sem interferir com o processo de migrao
no sistema de destino.
4 - Fase de Teste: A fase de teste essencial para compreender o sucesso da migrao e como
tal so executados vrios testes quer por parte do cliente quer por parte da equipa responsvel pela
migrao dos dados, recorrendo a testes internos de migrao ou a testes de aceitao definidos pelo
prprio cliente. Os testes de aceitao permitem evitar surpresas desagradveis antes que o novo
sistema entre em funcionamento e determinar se a implementao est de acordo com os objectivos
definidos. Caso seja necessrio possvel realizar pequenas correces para ajustar algum aspecto que
esteja ligeiramente fora do objectivo definido. Entende-se como testes internos de migrao, os testes
realizados pela equipa responsvel pela migrao com o objectivo de avaliar o processo de migrao,
como por exemplo, verificar se a quantidade de informao no sistema fonte igual no sistema de
destino, entre outros.
5 - Fase de Migrao em Produo: Nesta fase executada a primeira migrao em ambiente
de produo, com o sistema fonte apenas em modo de leitura, que se pretende que seja realizado no
menor tempo possvel. Aps a primeira migrao pode ser necessrio realizar migraes diferenciais,
mas neste caso sem que o sistema fonte se encontre apenas em modo de leitura. No fim de cada
migrao existe um perodo de estabilizao para ser possvel identificar possveis incoerncias nos
dados migrados.
necessrio referir que as diferentes fases dum projecto de migrao de dados no devem ser
vistos como etapas de importncia desigual, uma vez que a sua inadequada considerao muitas
vezes a causa de grande parte das falhas de projectos deste tipo. A adopo de uma metodologia
adequada factor fundamental para o sucesso da migrao de dados.
2,/ - ) %#& ! 1 %
+
Fundada em 1989, a Bloor Research uma das organizaes lderes mundiais, de tecnologias de informao (TI), na rea de investigao,
anlise e consultoria. Distribuem solues de TI s organizaes em todo o mundo atravs de inscries on-line, adaptada a servios de
investigao e consultoria de projectos.
3-
/
!
projectos de migrao de dados, o plano inicial do projecto pode sofrer mudanas no cronograma ou
at mesmo fracassar. Deste modo, para que o projecto de migrao ocorra dentro do prazo e dos
oramentos requeridos, importante compreender os factores necessrios ao sucesso do projecto. Em
minha opinio, o factor essencial ao sucesso do projecto consiste em estabelecer um bom
relacionamento com o cliente para definir com exactido qual a informao a migrar para o novo
sistema aplicacional, assim como, determinar solues para a informao que no poder ser migrada
para o novo sistema. A tendncia descobrir que muitas, se no a maioria, das suposies iniciais em
relao aos dados do sistema fonte, no se encontram correctas ou so alteradas pelo cliente j na fase
de migrao, por isso, muito importante definir os requisitos da migrao no incio do projecto.
Devido complexidade do projecto, o processo de migrao constitudo por diversos desafios.
Um dos maiores desafios no projecto de migrao, consiste em obter o menor tempo possvel de
paragem do sistema aplicacional fonte antes do novo sistema aplicacional ser activado. A
oportunidade para extrair e carregar os dados pode ser extremamente limitada e nesse sentido,
essencial dialogar com o cliente assim que o projecto se inicia. Para diminuir o tempo de
carregamento e os riscos durante a migrao importante obter alguma informao pertinente por
parte do cliente, nomeadamente:
Qual o intervalo de tempo que o cliente est disposto a conceder exportao dos dados
para o novo sistema e operaes de carregamento em ambientes de produo?
Qual a quantidade de registos esperados para o processo de migrao?
O sistema de origem tem diferentes interfaces aplicacionais?
Quais as reas funcionais que sero migradas para o novo sistema aplicacional?
O que deve ser feito com a informao que no pode ser incorporada no novo sistema?
A resposta a estas questes permite elaborar testes referentes s taxas indicativas de
carregamento, antes da fase de migrao, em pr-produo.
Para compreender a problemtica da migrao de sistemas fonte desconhecidos para o ALERT,
foi elaborado um projecto-piloto, em Outubro de 2008, com dados reais provenientes do Hospital de
Bernhoven, na Holanda, com informao referente rea dos profissionais e pacientes. Durante a fase
de preparao e configurao do projecto-piloto, foi identificado, uma outra problemtica no projecto
de migrao de dados. Uma vez que o objectivo deste projecto consiste em desenvolver uma
ferramenta que permita migrar dados de diferentes sistemas fonte desconhecidos para o sistema
ALERT, surge a dvida de como dever ser realizada a identificao da informao a migrar e como
relacionar os diferentes sistemas fonte. Assim, torna-se pertinente definir uma rea intermdia que
permita identificar a estrutura da informao a migrar dos diferentes sistemas fonte para o ALERT.
A ampla diversidade de ferramentas que existe nas organizaes no vai de encontro aos
requisitos de performance, flexibilidade e modularidade. Com efeito, um outro factor problemtico no
desenvolvimento da Data Migration Framework passa por conseguir integrar a informao dos
4,
/
!
diversos sistemas fonte no novo sistema ALERT, sem perda de integridade nem performance.
Deste modo, na definio da arquitectura da ferramenta de migrao de dados, foi pertinente
desenvolver uma rea intermdia independente dos sistemas de origem e de destino para no
sobrecarregar os sistemas envolvidos e que permitisse reunir toda a informao proveniente de
diversos sistemas fonte numa nica rea. A utilizao da rea intermdia ir tambm suportar as
alteraes que ocorram no produto ALERT, minimizando o impacto desta alterao na Data
Migration Framework.
2,2 - 6# # % # %
REQUISITOS FUNCIONAIS
A quantidade de registos no sistema fonte no momento anterior migrao tem de ser o mesmo no
sistema de destino aps a migrao.
A migrao deve ser realizada apenas para as reas escolhidas pelo cliente.
Toda a informao que no pode ser migrada para o ALERT deve ser armazenada de acordo com o
que for previamente acordado com o cliente.
40
/
!
A sincronizao dos dados deve ser estabelecida, enquanto todos os sistemas fonte ainda se
encontrarem activos e no forem migrados para o novo sistema.
Dever ser disponibilizado um interface para analisar os erros que possam ter ocorrido na migrao.
REQUISITOS NO FUNCIONAIS
A DMF ser utilizada apenas para migraes de diversos sistemas fonte para o ALERT.
A ferramenta de migrao de dados para o ALERT dever ser instalada, configurada e considerada
pronta para ser utilizada num perodo de tempo reduzido. Nunca mais de 4 horas.
Dever ser disponibilizado um documento para que o cliente compreenda o processo de migrao.
A DMF ter de estar adaptada para qualquer plataforma que o sistema fonte possua.
A Data Migration Framework dever permitir migrar grande volume de dados em tempo reduzido.
O passo final de comutao dos sistemas antigos para o sistema novo (go-live) deve ter uma
durao inferior a 24 horas.
2,3 - $ ! %
A migrao de dados de vrios sistemas fonte para o ALERT um processo que envolve
ambientes de Pr-produo e de Produo. A utilizao do ambiente de pr-produo tem como
objectivo permitir realizar testes internos e de aceitao ao processo de migrao, assim como,
efectuar as actualizaes necessrias ao ambiente do cliente. Com este ambiente intercalar, a
4+
/
!
43
/
!
Com o objectivo de evidenciar a evoluo do processo de migrao de dados, que vai desde que
o sistema aplicacional antigo est activo at ao momento em que o sistema aplicacional ALERT fica
operacional e o antigo deixa de ser usado, desenhou-se um esquema detalhado que se encontra na
Figura 13.
44
/
!
Pela observao da Figura 13 possvel constatar que o processo de migrao mais pesado a
nvel de quantidade de dados a migrar o que realizado no ambiente de pr-produo. Deste modo,
quanto menor for a quantidade de dados a migrar em produo, menor ser o tempo de paragem
aplicacional do sistema fonte e mais rpido ser possvel utilizar o sistema aplicacional ALERT, com
toda a informao que existia no sistema anterior.
45
/
!
Ao longo do processo de migrao de dados para o ALERT, vrias tarefas devero ser
executadas com determinada ordem. Assim, antes de se dar incio ao processo de migrao
fundamental que todo o universo de contedos ALERT esteja disponvel para ser possvel mapear os
dados do cliente com o que j existe no ALERT. O processo de mapeamento de dados compara os
descritivos do universo do cliente com os descritivos do universo ALERT e, caso os descritivos
sejam iguais, assinala-se uma correspondncia. A informao que no encontra correspondncia ter
de ser analisada manualmente pela equipa de contedos, responsvel por este gnero de actividades.
Realizada a fase de mapeamento, d-se incio ao processo de migrao propriamente dito atravs
do carregamento dos dados a migrar do sistema fonte na rea intermdia, seguido de uma primeira
migrao e de migraes diferenciais, da rea intermdia para o ALERT. A migrao de dados para o
ALERT executada numa primeira fase num ambiente de pr-produo e numa segunda fase num
ambiente de produo.
Posteriormente ao processo de migrao dos dados fundamental validar os dados que foram
migrados para o novo sistema, no sentido de validar o sucesso da migrao, no s pelo cliente mas
tambm pela equipa responsvel pelo processo de migrao.
O progresso do processo de migrao, descrito anteriormente, pode ser ilustrado atravs da
Figura 14.
46
/
!
Figura 14 - Progresso do processo de migrao para o ALERT
Como possvel analisar atravs da figura anterior, o processo de migrao em si s tem incio
aps a anlise e o mapeamento entre os dados do sistema fonte e o sistema de destino. O projecto de
migrao s termina quando todos os testes so realizados e validados com sucesso, assim como o
alcance de todos os requisitos estabelecidos pelo cliente.
41
/
!
!* #& 3
' &'
3,+ - ) 6# % #
42
/
!
A utilizao de uma rea intermdia, durante o processo de migrao, apresenta trs grandes
vantagens:
1 - Constitui uma plataforma autnoma para a transformao e consolidao dos dados no
modelo ALERT, relativamente aos sistemas fonte e destino, onde se condensam as regras de
transformao acumuladas pela experincia da equipa de migrao;
2 - Garante independncia relativamente aos detalhes do modelo ALERT, isolando o modelo da
interface com os sistemas fonte dos processos de migrao, o qual pode ser simplificado e estvel, o
que facilita a extraco de dados dos sistemas fonte;
3 - Permite boa adaptao s evolues das sucessivas verses do sistema ALERT atravs de
um segundo modelo, voltado para o carregamento de dados no sistema destino.
Ao tirar partido desta utilizao, consegue-se decompor um problema muitos-para-muitos em
dois sub-problemas, um muitos-para-um na extraco e outro um-para-muitos no carregamento,
ficando ambos ligados por um processo de transformao interno rea intermdia.
possvel, ainda, suportar um nmero qualquer de sistemas fonte, ficando tipicamente a cargo
do cliente, conhecedor dos sistemas fonte, extrair da os dados para o formato de entrada na DMF.
Alguns sistemas, e nomeadamente a Data Migration Framework, so constitudos por uma
arquitectura que impede o acesso directo ao modelo de dados de destino. Esta plataforma possibilita o
abstrair das tecnologias subjacentes, bem como uma integrao mais rpida nos novos sistemas,
possibilitando criar solues mais rpidas e competitivas. Todavia, o carregamento dos dados em tais
sistemas deve passar pela utilizao de uma rea intermdia ou pela utilizao de uma API
4-
/
!
(Application Programming Interface). O conceito de API pode ser descrito como uma srie de funes
acessveis somente por programao, e que permitem utilizar caractersticas do software menos
evidentes por parte do cliente. No caso da DMF, utilizado uma rea intermdia para impedir o
contacto directo com o modelo de dados do sistema de destino. Qualquer outra soluo, como o caso
do carregamento directo para o modelo de dados de destino, poderia dificultar o seu suporte devido
sua complexidade.
A arquitectura da Data Migration Framework decompe-se em sete processos de que a seguir se
d conta.
3,+,+ - % % &8
No processo de recolha dos dados, o cliente deve disponibilizar os dados que pretende migrar
para o sistema ALERT, num formato previamente definido (de acordo com o modelo da rea
intermdia).
A exportao dos dados do cliente pode ser realizada recorrendo a ficheiros no formato XML,
em Flat Files ou directamente atravs de DBLinks, para a rea intermdia. Independentemente do
modo como a informao exportada do sistema fonte, sempre necessrio validar se realmente os
dados se encontram numa estrutura previamente definida.
A validao dos dados exportados do sistema fonte pode ser efectuada em vrios aspectos:
Range: Valida se a informao se encontra no intervalo de valores definido. Por exemplo, o
profissional de sade no pode ter menos de 20 anos;
Mandatory value: Garante que todos os dados que so de preenchimento obrigatrio so
preenchidos;
Length: Valida se determinado valor tem o tamanho esperado;
Data type: Garante que o valor a migrar do tipo previamente definido. Por exemplo: o
nome do profissional de sade do tipo VARCHAR2;
Data profile: Verifica se a informao se encontra no formato definido. Por exemplo, o
formato do cdigo postal;
Primary key: Identifica univocamente cada registo.
Referential integrity: Valida se todas as chaves externas existem nas tabelas referidas.
de citar que estes vrios aspectos de validao apenas nos dizem que os dados esto de acordo
com as regras formais e de consistncia interna, no permitindo validar se a informao est correcta,
isto , se corresponde a factos reais, uma vez que a validao feita ao nvel da sintaxe e no ao nvel
da semntica.
5,
/
!
Os ficheiros gerados para permitir carregar a rea intermdia com informao do sistema fonte,
podem ser validados do seguinte modo:
No caso de ficheiros no formato XML, a validao ser feita recorrendo ao XML Schema
(XSD), que uma linguagem baseada no formato XML para a definio de regras de validao em
documentos no formato XML (ver seco 4.4.1).
No caso de Flat Files, atravs do SQL*Loader possvel analisar o ficheiro de log e
identificar todos os casos que falharam.
No caso de utilizar directamente DBLink, s possvel validar os contedos no momento da
insero dos dados na rea intermdia.
Se, durante o processo de validao, for identificado algum erro, essa situao reportada ao
cliente, para que este corrija a informao. Caso no seja detectada nenhuma inconformidade, a
informao migrada para a rea intermdia (schema STAGING).
3,+,/ - % 9# &
Uma vez que o processo de recolha dos dados j foi executado e toda a informao enviada pelo
cliente encontra-se na rea intermdia necessrio validar a qualidade dos dados.
A qualidade dos dados pode ser avaliada atravs de duas componentes principais que nos
ajudam a garantir que os dados do sistema fonte se encontram suficientemente aptos para serem
migrados para o sistema de destino.
As componentes de avaliao so as seguintes:
Mtricas para medir a qualidade dos dados;
Mtricas para melhorar as actividades.
As mtricas para medir a qualidade dos dados do informao do estado em que se encontram os
nossos dados. Neste caso, a regra que nos permite determinar a qualidade dos dados a de no poder
existir duplicao de informao.
As mtricas para melhorar as actividades tm como objectivo ajudar a gerir eventuais erros nos
dados. No caso de se encontrar registos duplicados, a migrao falha. Para melhorar esta situao,
devem ser definidas determinadas actividades que passam primeiramente por informar o cliente e
definir com ele a melhor soluo, que pode passar pela eliminao do registo ou a actualizao do
mesmo, caso tenha sido encontrado um erro no sistema fonte.
50
/
!
3,+,2 - %
TABELA DE MAPEAMENTO
ID DESCRIO ID DESCTIO
3,+,3 - % !
5+
/
!
os registos identificados so marcados como errados e lanada uma mensagem de erro, no sentido de
permitir a posterior actualizao do registo e novo processamento.
Todos os registos que estejam de acordo com as regras definidas, permitem replicar a
informao que est na MAP OLD para a MAP NEW.
3,+,5 - %
3,+,: - % )%
O processo de notificao responsvel por identificar todos os erros que possam ocorrer,
durante o processo de migrao.
A partir do processo de carregamento at ao processo de migrao, registado em tabelas de
log, todos os erros que possam ocorrer em cada processo, permitindo assim, ter uma percepo do
estado do processo da migrao, e recorrer a estas tabelas para validar os dados migrados. Caso seja
verificado algum erro, ser enviado um e-mail com essa informao para os responsveis do processo
de migrao, com a finalidade de que determinada situao seja resolvida o mais brevemente possvel.
Este processo de extrema importncia para a Data Migration Framework, j que permitir uma
monitorizao activa e em tempo real do processo de migrao de dados, para que a equipa
responsvel pelo processo de implementao, possa actuar com prontido, preciso e sem grande
perda de tempo.
53
/
!
3,+,; - % <
3,/ - 6# % % '
54
/
!
Propriedades de tabela
Caso seja detectado algum erro a este nvel, ser necessrio marcar o registo como encontrando-
se errado e enviar um e-mail ao cliente a informar desta situao, para que os dados sejam corrigidos.
Assim que a informao esteja verificada, possvel proceder-se transformao dos dados para
o schema MIGRA, que constitudo por diversas tabelas que contm informao do sistema fonte
(MAP OLD) e do sistema ALERT (MAP NEW). O primeiro carregamento a ser executado, neste
schema, consiste no preenchimento da MAP OLD. De seguida analisado se existe mapeamento entre
esse contedo e o contedo que j existe no ALERT. Em caso afirmativo, realizado o mapeamento
para a MAP NEW. Em caso negativo, feita uma cpia do contedo da MAP OLD para a MAP
NEW. Em qualquer situao pertinente registar os novos identificadores (ID) na MAP NEW, que
vo estar presentes no ALERT.
Por ltimo, necessrio identificar os registos que esto em condies para serem migrados para
o sistema ALERT, ou seja, os registos que foram carregados correctamente na rea intermdia e que
passaram pela fase de transformao sem erros. No entanto, durante o processamento dos registos
marcados, pode ser identificado algum erro e caso isso acontea, necessrio marcar esse registo
como errado e lanar uma mensagem, para que o registo identificado seja actualizado.
Terminado este processo e caso no seja detectado nenhum erro, a informao migrada para o
ALERT, dando-se assim por concludo o processo de migrao de dados, informando o cliente desta
situao. Com o intuito de manter um histrico do processo de migrao, os dados no sero apagados
do schema MIGRA.
Na Figura 16, que se apresenta de seguida, possvel obter uma viso global dos processos que
esto envolvidos na migrao de dados para o sistema ALERT, com recurso Data Migration
Framework.
55
/
!
56
/
!
3,2 - &
Uma base de dados pode ser descrita como um simples repositrio de informao relacionada
entre si, com um determinado tema ou assunto. constituda por uma coleco de dados
estruturados de determinada maneira que permite a sua consulta, actualizao e outro tipo de
operaes processadas por meios informticos.
Para uma melhor operacionalizao da Data Migration Framework, foram desenvolvidos
diversos objectos a nvel de base dados, nomeadamente, tabelas, sequncias, triggers, DBLinks e
packages, organizados por diferentes schemas e que a seguir se descrevem.
3,2,+ 4 & %
51
/
!
Pela observao da Figura 17 possvel identificar todos os schemas que esto envolvidos no
processo de migrao de dados entre a rea intermdia e o sistema de destino ALERT. Torna-se
ainda possvel constatar que existe uma ordem entre os diferentes schemas que vo desde a recepo
dos dados do sistema fonte at insero dos mesmos no sistema de destino. O primeiro schema a
receber os dados a STAGING que, depois de os validar, envia os dados para o schema MIGRA. A
fase intermdia que se encontra no schema MIG_CONTROL_STG utilizada para armazenar todos
os objectos temporrios que auxiliam o processo de migrao, gerados atravs da utilizao do Oracle
Data Integrator. Caso o processo de migrao dos dados da STAGING para o MIGRA, ou do
MIGRA para ele prprio origine algum erro, essa informao armazenada no schema
MIG_LOG_STG. A migrao entre o schema MIGRA e ele prprio corresponde ao processo de
mapeamento, descrito na seco 4.1.4.
52
/
!
Aps a fase de mapeamento, necessrio migrar toda a informao que esteja validada para os
diferentes schemas de destino, nomeadamente: ALERT, ALERT_ADTCOD,
ALERT_ADTCOD_CFG e FINGER_DB. A rea intermdia entre o schema MIGRA e um dos
sistemas de destino utilizada para armazenar os objectos temporrios gerados pela utilizao do ODI
e designada por MIG_CONTROL_ALERT. Este schema possui a mesma funcionalidade que o
schema MIG_CONTROL_STG, mas encontra-se numa fase mais avanada do processo de migrao.
O schema MIG_LOG_ALERT possui todos os objectos que permitem averiguar se ocorreu algum
erro no carregamento dos dados do schema MIGRA para os schemas de destino.
Schema STAGING
No schema STAGING existem trs tipos de tabelas que se diferenciam pelo tipo de dados que
possuem, nomeadamente: dados transaccionais (operacionais), dados com contedo ALERT, os
quais devero ser mapeados, e dados com contedos do cliente, que podem ser migrados ou mapeados
com o contedo ALERT. Consoante o tipo de contedos, estas tabelas devem incluir os seguintes
prefixos:
Contedos do sistema fonte que tm de ser mapeados com o ALERT: CA_;
Contedos a migrar ou a mapear caso exista correspondncia no ALERT: CC_;
Contedos operacionais a migrar para o ALERT: CO_.
O nome das tabelas no schema STAGING dever ser similar s correspondentes no ALERT,
respeitando os prefixos anteriormente referidos, como exemplificado na Tabela 4. Note-se que, os
nomes das tabelas devero estar no singular, excepo das tabelas que j esto no plural no
ALERT.
CC_HEALTH_PLAN CC_HPLN
CC_BED CC_BED
5-
/
!
Todas as tabelas da STAGING devero ter uma coluna FLG_MIGRATION obrigatria, que
permite identificar se o registo j foi migrado para o ALERT.
As tabelas de contedo ALERT, exemplificadas na Tabela 5, iro herdar das tabelas ALERT
apenas as colunas do tipo ID_ e FLG_, se necessrio, ou outras colunas com informao
relevante. Estas tabelas tambm devero ter duas colunas do tipo CODE_, que tero o descritivo do
contedo do cliente e o descritivo traduzido do contedo ALERT, respectivamente. Estas colunas,
relativas ao contedo ALERT, devero ter o prefixo CA_. As colunas relativas ao contedo do
sistema externo devero ser idnticas s colunas do ALERT.
ALERT.DEPT STAGING.CA_DEPT
ID_DEPT ID_DEPT
CODE_DEPT CODE_DEPT
ID_INSTITUTION ID_INSTITUTION
ABBREVIATION
RANK
CA_ID_DEPT
CA_CODE_DEPT
CA_ID_INSTITUTION
FLG_MIGRATION
O nome das colunas das tabelas do schema STAGING dever ser similar s correspondentes no
ALERT. No entanto, para se poder adoptar mais facilmente a rea intermdia ao contedo
proveniente do sistema fonte, foi necessrio definir o tipo de dados da STAGING diferente do tipo de
dados presente no ALERT (exemplo: Number(7) no ALERT e Varchar2(7) na STAGING).
No que diz respeito, s tabelas com contedo a migrar ou a mapear (CC_), estas tambm vo
herdar das tabelas ALERT apenas as colunas do tipo ID_ e FLG_, se necessrio, ou outras
colunas com informao relevante. Assim como uma coluna do tipo CODE_, que ter o descritivo
do contedo do cliente, como exemplifica a Tabela 6.
6,
/
!
ALERT.BED STAGING.CC_BED
ID_BED ID_BED
CODE_BED CODE_BED
ID_ROOM ID_ROOM
FLG_TYPE FLG_TYPE
FLG_STATUS FLG_STATUS
DESC_BED DESC_BED
NOTES NOTES
RANK
FLG_AVAILABLE
FLG_MIGRATION
Conforme se pode observar na Tabela 6, a coluna RANK do ALERT no foi mapeada para a
tabela do schema STAGING. Assim, s necessrio mapear as colunas do ALERT com informao
relevante a ser migrada.
Relativamente, as tabelas do tipo CO_ do schema STAGING, devero corresponder a todas as
tabelas transaccionais do ALERT com relaes de 1-1, como exemplifica a Tabela 7.
TABELAS ALERT (1-1) TABELA STAGING
ALERT.PROFESSIONAL
Schema MIGRA
O schema MIGRA contm tabelas de mapeamento que tero, no prprio nome, o prefixo
MAP_. Estas tabelas devero ter colunas que iro conter os dados provenientes do sistema fonte,
com o prefixo OLD_, e os dados a migrar, com o prefixo NEW_. Para auxiliar o processo de
60
/
!
migrao, as tabelas de mapeamento, exemplificadas na Tabela 8, devero ter uma coluna denominada
FLG_STATUS. Esta coluna indicar, por exemplo, se o registo j est mapeado, ou se para migrar,
ou ainda se migrou com sucesso ou com erro.
ALERT.PROFESSIONAL MIGRA.MAP_PROFESSIONAL
ID_PROFESSIONAL OLD_ID_PROFESSIONAL
NEW_ID_PROFESSIONAL
NAME OLD_NAME
NEW_NAME
FLG_STATE OLD_FLG_STATE
NEW_FLG_STATE
FLG_STATUS
Schema MIG_LOG
Os schemas MIG_LOG_STG e MIG_LOG_ALERT contm as tabelas de log do processamento
do schema STAGING para o schema MIGRA e do schema MIGRA para o schema ALERT, que
devero ter, no prprio nome, os prefixos ERR$_MAP_ e ERR$_, respectivamente. Estas tabelas
tm uma estrutura idntica s tabelas de origem (tabelas do schema MIGRA ou ALERT) com mais
cinco colunas:
ORA_ERR_NUMBERS$ nmero do erro do Oracle;
ORA_ERR_MESG$ mensagem em texto do erro Oracle;
ORA_ERR_ROWID$ Rowid da linha em erro (para actualizar ou apagar);
ORA_ERR_OPTYP$ Tipo de operao: inserir (I), actualizar (U) e apagar (D);
ORA_ERR_TAG$ Valor da tag fornecida pelo utilizador na clusula do erro.
As tabelas de log, exemplificadas na Tabela 9, so geradas automaticamente atravs da
utilizao de uma funo de base dados designada por
PK_MIGRA_MODEL_ERROR.F_CREATE_ERR_INDIV.
6+
/
!
MIG_LOG.ERR$_MAP_PROFESSIONAL MIG_LOG.ERR$_PROFESSIONAL
ORA_ERR_NUMBERS$ ORA_ERR_NUMBERS$
ORA_ERR_MESG$ ORA_ERR_MESG$
ORA_ERR_ROWID$ ORA_ERR_ROWID$
ORA_ERR_OPTYP$ ORA_ERR_OPTYP$
ORA_ERR_TAG$ ORA_ERR_TAG$
OLD_ID_PROFESSIONAL ID_PROFESSIONAL
NEW_ID_PROFESSIONAL
OLD_NAME NAME
NEW_NAME
OLD_FLG_STATE FLG_STATE
NEW_FLG_STATE
FLG_STATUS
3,2,2 - <
Na estrutura de migraes existe uma tabela geral de configurao de sistema, designada por
SYS_CONFIG que contm opes de configurao do processo de migrao. As diversas colunas
desta tabela devem ser preenchidas com base em:
ID_SYS_CONFIG Identificador de configurao;
VALUE Valor do parmetro de configurao;
DESC_SYS_CONFIG Descrio de configurao.
Para o bom funcionamento do processo de migrao, as regras de configurao de registos so
essenciais, visto que o cdigo construdo volta desta tabela parte do pressuposto de que os registos
so parametrizados sob determinada forma.
63
/
!
3,3,+ 4 = % >
64
/
!
mais bsicos, realizar relacionamentos entre elementos de dados dentro do XML, de modo semelhante
aos relacionamentos entre tabelas de base de dados.
O XML Schema corresponde a um mecanismo eficiente para assegurar a qualidade dos dados,
assim como uma base de dados. Esta proximidade, no entanto, no significa que os documentos XML
devam substituir uma base de dados relacional ou devam ser utilizados como tal. Ainda que o XML
Schema possua estruturas muito similares de validao, os ficheiros de XML no apresentam algumas
das caractersticas essenciais encontradas em bases de dados como o caso da gesto da concorrncia,
na eficincia da organizao interna de dados mais eficiente, na segurana, etc.
Para gerar ficheiros XML a partir de uma query, foi criado um package na base dados,
designado por PK_GEN_XML_RESULT (Figura 18).
Atravs da visualizao da Figura 18 possvel constatar que esta funcionalidade permite uma
maior facilidade de gerao de ficheiros XML, para o cliente, uma vez que independentemente do
sistema de base de dados que este utilize. Com esta funo apenas necessrio identificar a query a
exportar, a tabela de destino da rea intermdia e o nmero de registos que se pretende por ficheiro.
Para a validao do ficheiro XML, foi criado um package na base de dados que permite gerar
ficheiros XSD, indicando apenas o nome da tabela da STAGING. Existe, contudo, um outro
parmetro de entrada que permite, aquando da gerao do ficheiro, esconder uma coluna da tabela da
STAGING uma vez que existem campos da tabela que no so de interesse para o cliente, mas sim
para o processo de migrao. A Figura 19 ilustra o package que necessrio executar para gerar o
ficheiro de validao do XML.
65
/
!
Para validar o ficheiro XML com o XSD, basta executar as linhas de comando ilustradas na
Figura 20. Esta validao permite testar se o ficheiro XML elaborado pelo cliente est apto para ser
integrado na rea intermdia e posteriormente migrado para o ALERT.
O processo de validao do ficheiro XML, com o ficheiro XSD, fundamental para avaliar se a
estrutura dos dados que o cliente est a enviar se encontra de acordo com a estrutura do modelo de
dados da rea intermdia (schema STAGING). A utilizao do ficheiro XSD torna o processo de
validao numa tarefa simples, rpida e eficiente.
66
/
!
3,3,/ - ) # ?
Para se proceder migrao dos dados para o sistema ALERT, foram desenvolvidas as
seguintes tarefas:
Definio da Topologia
Na topologia do ODI necessrio configurar a arquitectura lgica e fsica e definir os contextos.
Entende-se por contexto, todo o processo de migrao dos sistemas fonte para um determinado
sistema de destino. O nmero de contextos vai ser igual ao nmero de schemas que se encontram no
sistema de destino, abaixo descritos:
O processo que MIGRA informao do schema STAGING para o schema ALERT
(STAGING -> MIGRA -> ALERT),
O processo que consiste em migrar a informao do schema STAGING para o schema
FINGER_DB (STAGING -> MIGRA -> FINGER_DB).
O processo responsvel por migrar a informao do schema STAGING para o schema
ALERT_ADTCOD (STAGING -> MIGRA -> ALERT_ADTCOD).
O processo encarregue em migrar a informao do schema STAGING para o schema
ALERT_ADTCOD_CFG (STAGING -> MIGRA -> ALERT_ADTCOD_CFG).
A existncia de quatro schemas de destino diferentes vai dar origem a quatro processos de
migrao diferentes, o que implica ter quatro contextos distintos. A Figura 21 exemplifica a relao
entre o conceito de contexto, processo de migrao e schemas de destino.
61
/
!
62
/
!
Pela visualizao da Figura 22, possvel constatar que a topologia no ODI constituda por trs
camadas, nomeadamente: arquitectura fsica, arquitectura lgica e contextos.
A arquitectura fsica constituda pelo DEV_ALERT e DEV_STAGING que representam dois
servidores, distintos, a nvel de base de dados. O DEV_ALERT constitudo pelos schemas do
sistema de destino e o DEV_STAGING constitudo pelos schemas que contm informao referente
ao sistema fonte.
A arquitectura lgica abranje um conjunto de schemas lgicos que representam os respectivos
schemas fsicos, definidos na arquitectura fsica. A quantidade de schemas lgicos idntica
quantidade de schemas fsicos, ou seja, na Data Migration Framework vai haver um total de oito
schemas lgicos e oito schemas fsicos.
No que diz respeito definio dos contextos, como existem quatro schemas de destino
diferentes, ter-se- quatro processos de migrao diferentes, o que implicar ter quatro contextos.
Criao do Agente
O agente uma componente especial do Oracle Data Integrator, que coordena os processos de
integrao enviando comandos a diferentes tecnologias, em background. Com esta componente
possvel agendar tarefas, como por exemplo definir uma data e hora para iniciar o processo de
migrao sem ser necessrio o apoio presencial de um tcnico.
Para criar ou configurar um agente, necessrio executar os seguintes passos:
1 - Localizar o ficheiro odiparams.bat, em \\<ODI_oracle_home>\ODI\oracledi\bin.
2 - Editar o ficheiro e actualizar a informao referente ligao com os repositrios mestre e
trabalho.
3 - Criar o servio.
4 - Definir o agente na arquitectura fsica do ODI.
5 - Testar o agente fsico, no ODI.
6 - Definir o agente na arquitectura lgica do ODI.
7 - Testar o agente lgico, no ODI.
8 - Aps estas operaes, possvel iniciar o servio associado ao agente e test-lo.
Posteriormente, para fazer uso do agente, necessrio associar contextos ao agente.
6-
/
!
schemas, estrutura de base de dados, campos e colunas de tabelas, regras para a integridade dos dados,
referncias cruzadas, entre outros.
Quem desenvolve no ODI pode igualmente criar novas regras declarativas
sem codificao, usando o interface grfico designado por Designer.
Para reverter as tabelas que se encontram na base de dados para o modelo de dados do ODI,
necessrio seleccionar a tab Reverse no mdulo de Designer do ODI, como ilustra a Figura 23:
Nesta execuo, define-se o contexto que ir ser utilizado para o reverse engineering do modelo
de dados, previamente determinado. Posteriormente, na tab Selective Reverse escolhe-se as tabelas a
importar e selecciona-se a opo Reverse.
Devido a um problema interno do ODI, que no momento do reverse engineering converte os
campos do tipo TIMESTAMP ou TIMESTAMP WITH LOCAL TIME ZONE com dimenso seis para
campos do mesmo tipo com dimenso 11, foi necessrio adicionar um trigger na tabela SNP_COL
que se encontra no repositrio de trabalho. Esta alterao essencial para que no momento do reverse,
o tipo e a dimenso do campo no sejam alterados e deste modo garantir a coerncia entre o modelo
de dados da base dados e o modelo de dados do ODI.
1,
/
!
10
/
!
1+
/
!
Para cada um dos KM descritos anteriormente, o ODI cria internamente tabelas e views
temporrias, com um prefixo especfico, como ilustra a Tabela 10. Estes objectos so criadas no
schema MIG_CONTROL_STG ou MIG_CONTROL_ALERT, dependendo da fase em que se
encontre o processo de migrao.
13
/
!
PREFIXO DESCRIO
14
/
!
2 - Adicionar a todas as tabelas, sobre as quais se pretende aplicar o Journal ao CDC, a opo
Add to CDC, visvel na Figura 28.
15
/
!
4 - Activar o Journal, para todas as tabelas do modelo, atravs da tab Models (Figura 30).
Aps seguir os passos descritos anteriormente e exemplificados na Figura 27, Figura 28, Figura
29 e Figura 30, exequvel monitorizar qualquer alterao que ocorra a nvel do modelo de base de
dados. Recorrendo a esta funcionalidade possvel manter os dados do sistema de destino sempre
actualizados, permanecendo de acordo com a informao presente no sistema fonte.
16
/
!
packages de base de dados, que criam de forma automtica as tabelas de mapeamento e de log,
designados por:
PK_GENERATE_MAP_TABLE.F_CREATE_SCRIPT_TABLE_MAP responsvel por
criar as tabelas de mapeamento;
PK_MIGRA_MODEL_ERROR.F_CREATE_ERR_INDIV responsvel por criar as
tabelas de log.
de realar que as tabelas de mapeamento e o package responsvel pela sua criao so
armazenados no schema MIGRA. O package responsvel pela criao das tabelas de log, assim como
os objectos gerados por ele, so armazenados em schemas prprios de base de dados designados por
MIG_LOG_STG e MIG_LOG_ALERT. A utilizao destes dois schemas prende-se com o facto de
ser necessrio separar as tabelas de log que ocorrem durante a passagem de informao do schema
STAGING para o schema MIGRA, da que ocorre durante a passagem da informao do schema
MIGRA para o schema ALERT. A descrio de cada funo utilizada nesta fase registada na Tabela
11 e que a seguir se d conta.
FUNES DESCRIO
11
/
!
ficheiro no formato XML, o que vai de encontro a uma limitao do ODI que obriga existncia de
uma arquitectura fsica por cada ficheiro XML distinto, mesmo que tenha a mesma estrutura, ou seja,
mesmo que os ficheiros XML sejam carregados na mesma tabela de destino da STAGING. Assim,
necessrio definir uma estrutura de pastas que possibilite que todos os ficheiros XML, responsveis
por carregar a mesma tabela de destino da STAGING, sejam carregados usando a mesma arquitectura
fsica.
Esta alterao tem como objectivo tornar o processo de carregamento mais genrico, ou seja,
permite carregar vrios ficheiros XML com nomes diferentes mas com a mesma estrutura (exemplo:
documento1.xml, documento2.xml) de forma sequencial, usando para isso um nome genrico por cada
tabela da STAGING (exemplo: documento.xml).
A estrutura de pastas utilizada para ultrapassar esta limitao do ODI a seguinte:
ODI_IncomingFiles, onde so colocados todos os ficheiros, no formato XML, a migrar para
a STAGING;
ODI_Logs, onde so armazenados os ficheiros com informao do processo de
carregamento da STAGING;
ODI_FileLoad, onde so armazenados os ficheiros XSD, para validao dos ficheiros XML
e o ficheiro XML a ser processado no momento.
ODI_FileTemp, onde se encontram o ficheiro XML original a ser processado no momento
do processo de carregamento.
ODI_FileOK, onde so armazenados os ficheiros que foram carregados na STAGING com
sucesso;
ODI_FileFail, onde so armazenados os ficheiros que no foram carregados na STAGING
com sucesso.
Assim que a estrutura de pastas se encontre implementada, dever criar-se um package no
Oracle Data Integrator por cada tabela de destino a carregar na STAGING, que dever incluir os
seguintes elementos:
Interfaces, que consistem num conjunto de regras que definem o carregamento do modelo de
dados do sistema de destino a partir de um ou mais sistemas fonte.
Variveis, que devem ser criadas sempre ao nvel do projecto e com informao da aco
igual a NOT PERSISTENT, para que o valor da varivel seja sempre actualizado;
Procedimentos, que correspondem chamada de uma funo a nvel de base de dados.
Cada package no ODI tem a seguinte estrutura de tarefas nesta fase:
1 - Actualizar todas as variveis;
2 - Definir o valor da varivel VAR_IVC2_< nome da tabela> para ser o mesmo nome da tabela
da rea intermdia a ser carregada;
3 - Apagar o ficheiro que j foi processado da pasta ODI_FileLoad (caso exista);
12
/
!
1-
/
!
O processo de migrao deve ter incio com a operao de Start (start journalizing e add
subscribers) no ODI, seguido da execuo do carregamento inicial recorrendo funo de base de
dados PK_LOAD_OLD.F_LOAD. Aps a fase de carregamento executada a operao Iniciar
(extend window e lock subscribers), seguido do respectivo package e terminando o processo com a
operao Terminar (purge journal e unlock subscribers).
A operao de carregamento inicial deve ser executada apenas na primeira vez que o processo de
migrao executado, uma vez que, as migraes diferenciais no necessitam desta opo, porque o
ODI j processou uma vez e encontra-se a monitorizar as alteraes realizadas desde ento (tabelas
jornalizas activas).
As operaes descritas anteriormente so importantes e como tal sero descritas em detalhe:
A operao de Start utilizada para registar qualquer alterao a nvel de base de dados,
mais concretamente nas tabelas que foram jornalizadas;
A operao de Iniciar responsvel por definir uma janela de aco, sobre o respectivo
subscriber e permitir identificar todas as alteraes que ocorram a nvel de base de dados, nas tabelas
jornalizadas, at aquele momento;
A operao Terminar fecha a janela de aco e limpa os dados processados;
A operao de STOP faz com que as tabelas jornalizadas deixem de estar vigiadas, ou seja,
qualquer alterao que ocorra nessas tabelas deixem de ser monitorizadas.
A funo de base de dados responsvel pelo carregamento inicial das tabelas jornalizadas
descrita na Tabela 12.
2,
/
!
FUNO DESCRIO
20
/
!
A descrio de todas as funes de base de dados utilizados nesta fase encontram-se assinaladas
na Tabela 13.
FUNO DESCRIO
A estrutura do package do ODI, para tabelas do tipo CC_ e CO_, semelhante e tem a
seguinte estrutura de tarefas, como ilustra a Figura 34 e a Figura 35, repectivamente:
1 - Actualizar todas as variveis;
2 - Definir o valor da varivel VAR_IVC2_TABLE_NAME para ser o mesmo nome da tabela
da rea intermdia a ser carregada;
3 - Executar o respectivo interface.
2+
/
!
23
/
!
A estrutura do package do ODI, para tabelas do tipo CC_ tem a seguinte estrutura de tarefas
(Figura 36):
1. Actualizar todas as variveis;
2. Definir o valor da varivel VAR_IVC2_TABLE_NAME para ser o mesmo nome da tabela
da rea intermdia a ser carregada;
3. Executar o procedimento PRC_MIGRA_F_MAP_DATA, que referncia a funo
PK_MAPING.F_MAP_DATA, para analisar o mapeamento entre o contedo do cliente e o contedo
ALERT;
4. Executar o procedimento PRC_MIGRA_F_UPDATE_SEQUENCE, que referncia a funo
de base de dados PK_SEQUENCE.F_UPDATE_TABLE_SEQUENCE, para gerar novos
identificadores, necessrios para a migrao dos dados para o ALERT;
5. Executar o respectivo interface.
A diferena entre os packages do ODI para tabelas do tipo CC_ e do tipo CO_ consiste no
facto de no ser utilizado o procedimento PRC_MIGRA_F_MAP_DATA nos packages das tabelas do
tipo CO_, como visvel atravs da Figura 37. A estrutura do package do ODI, para tabelas do tipo
CO_ fica deste modo com a seguinte estrutura de tarefas:
1. Actualizar todas as variveis;
2. Definir o valor da varivel VAR_IVC2_TABLE_NAME para ser o mesmo nome da tabela
da rea intermdia a ser carregada;
24
/
!
As funes de base de dados utilizadas nesta fase encontram-se descritas na Tabela 14.
FUNO DESCRIO
25
/
!
26
/
!
A diferena entre os packages do ODI para tabelas do tipo CC_ e do tipo CO_ assenta no
facto de ser utilizada a funo PRC_MIGRA_F_API_ALERT_SET_DATA_GOV nos packages das
tabelas do tipo CO_, como visvel atravs da Figura 39. A estrutura do package no ODI, para
tabelas do tipo CO_ fica deste modo com a seguinte estrutura de tarefas:
1. Actualizar todas as variveis;
2. Definir o valor da varivel VAR_IVC2_TABLE_NAME para ser o mesmo nome da tabela
da rea intermdia a ser carregada;
3. Executar o respectivo interface;
4. Executar o procedimento PRC_MIGRA_F_VALIDATE_MIGRATION_INDIV que
referncia a funo de base dados PK_VALIDATE.F_VALIDATE_MIGRATION_INDIV;
5. Executar o procedimento PRC_MIGRA_F_INSERT_TRANSLATION_INDIV que
referncia a funo de base de dados PK_INSERT_TRANSLATION.F_TRANSLATION_INDIV;
6. Executar o procedimento PRC_MIGRA_F_API_ALERT_SET_DATA_GOV que referncia
a funo de base de dados PK_MIGRA_MODEL_ERROR.F_INSERT_ALERT_LOB_INDIV;
7. Executar o procedimento PRC_MIGRA_F_VALIDATE_CC_STAGING que referncia a
funo de base de dados PK_VALIDATE.F_VALIDATE_CC_STAGING.
21
/
!
As funes de base de dados utilizadas nesta fase encontram-se descritas na Tabela 15.
FUNO DESCRIO
Esta funo identifica todos os registos da tabela de
mapeamento com FLG_STATUS = C e analisa se na
tabela de log correspondente foi identificado algum
erro. Se for detectado algum erro ento a tabela de
PK_VALIDATE.
mapeamento actualizada com FLG_STATUS igual a
F_VALIDATE_MIGRATION_INDIV
E. Caso contrrio pode-se actualizar a FLG_STATUS
com o valor T para que de seguida, caso exista, seja
actualizada a tabela Translation correspondente no
ALERT.
Percorre todos os registos da tabela de mapeamento
com FLG_STATUS igual a T e actualiza a descrio
22
/
!
tabela ERR$_TRANSLATION.
Se no tiver nada para actualizar no ALERT, ento a
tabela de mapeamento actualizada com
FLG_STATUS igual a Y.
Esta funo procura todos os registos da tabela de
mapeamento com FLG_STATUS igual a E, Y ou
M e todos os registos nas tabelas da STAGING com
PK_VALIDATE.
FLG_MIGRATION igual a N. Se a FLG_STATUS
F_VALIDATE_CC_STAGING
for igual a Y ou M ento a tabela da STAGING
actualizada para FLG_MIGRATION = Y, caso
contrrio actualizada para E.
Identifica todos os registos das tabelas da STAGING
com FLG_MIGRATION = N e para cada registo
valida se aquela informao j existe na tabela de
mapeamento com FLG_STATUS = Y ou M. Se
Com o intuito de agilizar o processo de migrao, so gerados cenrios a partir dos packages
definidos no ODI. Pela utilizao destes cenrios possvel exportar do ambiente de desenvolvimento
e incorporar no cliente apenas um objecto que contm o conjunto de todos os outros cenrios
necessrios ao processo de migrao de dados. Para tornar este processo exequvel, foram
desenvolvidos trs tipos de cenrios:
2-
/
!
3 - Um cenrio que agrupa todos os outros cenrios descritos no ponto anterior, como
exemplifica a Figura 41.
-,
/
!
3,3,3 4 !&
3,3,5 - <
Para alm da Data Migration Framework, foi desenvolvida uma ferramenta web de
monitorizao, designada por Monitoring Framework, com o objectivo de validar o progresso da
migrao de dados e analisar qualquer anomalia que possa ocorrer durante a migrao de dados.
A ferramenta de monitorizao, disponvel no Anexo D Ferramenta de Monitorizao, foi
desenvolvida em PL/SQL, criando-se cinco packages a nvel de base de dados, cujo resultado visvel
em HTML, permitindo deste modo a monitorizao do processo de migrao, por qualquer pessoa,
sem que para isso seja necessrio conhecimento prvio em PL/SQL. A partir dos cinco packages
criados a nvel de base de dados foram elaboradas vrias queries ao repositrio mestre e de trabalho,
dado que nestes repositrios que se encontra armazenas todas as actividades que ocorrem a nvel do
Oracle Data Integrator. Alm destes dois repositrios, foram analisadas algumas tabelas de log
presentes noutros schemas, nomeadamente: MIGRA, MIG_LOG_STG e MIG_LOG_ALERT.
De seguida sero apresentadas todas as pginas web desenvolvidas na ferramenta de
monitorizao, bem como a informao que pode ser analisada em cada uma delas.
A primeira pgina diz respeito anlise do desempenho da migrao de dados ao nvel dos
objectos internos a cada package do ODI, ou seja, a informao referente s variveis utilizadas, aos
interfaces, s chamadas a procedimentos de base dados, entre outros. Nesta pgina possvel analisar
-0
/
!
o tempo de execuo de cada uma das etapas definidas para cada objecto presente no package do ODI,
assim como quantos registos foram actualizados, inseridos ou eliminados em cada etapa.
A Figura 42 permite a visualizao da informao referente primeira pgina Web da
ferramenta de monitorizao.
Para uma melhor compreenso da informao, existem quatro aspectos que na minha opinio
so importantes, nomeadamente:
Alternncia de tonalidade nas linhas pares e mpares da tabela;
Informao presente na tabela de forma agregada, permitindo visualizar pequenas
quantidades de registos de cada vez;
Utilizao de cores mais escuras na seleco de um registo especfico, com o intuito de
analisar apenas um parmetro em particular;
Informao no rodap da pgina com a informao necessria para entrar em contacto com
algum que possa ajudar a compreender algum assunto relacionado com a migrao.
Uma outra rea que importante avaliar a performance no processo de migrao a informao
executada em cada knowledge module, principalmente o LKM e o IKM. A Figura 43 apresenta a
segunda pgina Web disponvel na ferramenta de monitorizao.
-+
/
!
A informao presente nesta rea encontra-se ordenada por ordem temporal decrescente, cujo
objectivo manter a tarefa mais recente sempre no topo da tabela, assim como identificar a ordem de
execuo das tarefas internas nos mdulos de conhecimento.
A terceira pgina Web da ferramenta de monitorizao, ilustrada na Figura 44, permite
identificar qualquer aco que tenha ocorrido durante o processo de migrao a nvel dos packages de
base de dados.
A informao que consta nesta tabela contm a mensagem de erro, a data e a tabela em que
ocorreu o erro, assim como uma varivel designada por v_result que no caso de ser igual a zero
significa que a tarefa processada deu erro e caso seja igual a um significa que a tarefa processada
terminou com sucesso. Nesta rea existe ainda a possibilidade de filtrar a informao da tabela por
data e hora de incio e fim. Caso no seja escolhido nenhum valor, nenhum filtro ser aplicado e toda a
informao ser apresentada.
-3
/
!
A quarta pgina Web da ferramenta de monitorizao, visvel na Figura 45, permite identificar a
data de incio e de fim do processo de migrao de dados, assim como todas as anomalias que possam
ter ocorrido, a nvel dos mdulos de conhecimento, durante esse perodo.
Nesta pgina tambm possvel pesquisar a informao presente na tabela por data e hora, assim
como identificar o nmero e a mensagem de erro Oracle, a tabela onde ocorreu o erro, assim como a
data em que ocorreu.
-4
/
!
-5
/
!
Com o objectivo de permitir identificar as funes de base dados utilizadas em cada pgina Web
da ferramenta de monitorizao, assim como a respectiva figura que a identifica, foi construda a
Tabela 16 que a seguir se apresenta.
VALIDATE_DMF_V25032.V_ODI_BD_Pkg
(dt_ini in VARCHAR2 default null, Corresponde quarta pgina Web que est ilustrada na
(dt_ini in VARCHAR2 default null, monitorizao que est ilustrada na Figura 44 - Validate
-6
/
!
ODI-KM.
dt_end in VARCHAR2 default null,
VALIDATE_DMF_V25032.V_LOG_TOTAL
(dt_ini in VARCHAR2 default null, Corresponde quinta pgina Web que est exemplificada na
-1
/
!
!* #& 5
' &
5,+ - #&
O processo de elaborao da DMF teve incio com uma prova de conceito realizada em Outubro
de 2008, referente migrao de dados da rea dos profissionais e pacientes, com informao
provenientes do Hospital de Bernhoven. Merc desta prova foi possvel melhorar o processo de
migrao a nvel de desempenho, definio da topologia do ODI e ao mesmo tempo testemunhar a
-2
/
!
importncia do uso de uma rea intermdia na arquitectura da DMF que permite que esta fique
independente do sistema ALERT e das constantes alteraes que ocorrem nas verses do produto, de
modo a minimizar o impacto entre verses.
Os testes executados na Holanda, no ambiente de pr-produo, foram realizados recorrendo
extraco dos dados do sistema de origem atravs de ficheiros no formato XML, referente apenas a
algumas reas suportadas pelo ALERT, nomeadamente: informao referente a profissionais,
pacientes, visitas e episdios. A extraco dos dados em ficheiros XML para a rea intermdia revelou
ser um processo pouco invasivo no sistema de origem e independente do formato de base de dados do
cliente.
A relao entre a quantidade de informao a migrar, por reas, o tempo de execuo de cada
uma e o nmero de tabelas que vo ser carregadas no sistema de destino encontra-se descrita na
Tabela 17 que a seguir se apresenta.
TEMPO DE NMERO DE
NMERO DE
EXECUO TABELAS NO
REAS
REGISTOS
MIGRADAS (Horas) SISTEMA DE DESTINO
PACIENTES 539.040 3 17
VISITAS 5.173.822 28 2
EPISDIOS 2.000.000 11 9
Com base na anlise sumria da Tabela 17 possvel compreender o quanto esta ferramenta de
migrao pode ser vantajosa no que diz respeito ao tempo necessrio execuo do processo de
migrao de dados para o ALERT, uma vez que precisou, somente, de cerca de 42 horas para migrar
7.717.003 registos.
importante referir e comprovar pela observao da Tabela 17 que a migrao de dados no
realizada de uma tabela do sistema de origem para uma tabela do sistema de destino (relao 1-1), mas
sim de uma tabela do sistema de origem para vrias tabelas no sistema de destino (relao 1-N), o que
aumenta a complexidade de todo o processo de migrao, bem como o tempo necessrio para
processar a informao em cada rea.
Dado que a migrao de dados realizada no hospital de Bernhoven est pela primeira vez a ser
realizada a partir de variados sistemas fonte desconhecidos para o ALERT e tendo em considerao o
volume de informao a migrar, que em Portugal no ultrapassa em mdia os seiscentos mil episdios,
possvel confirmar que a DMF revelou-se uma ferramenta de sucesso.
--
/
!
0,,
/
!
!* #& :
%&# ?
Reflectindo sobre todo o projecto desenvolvido concluiu-se que em contexto real a Data
Migration Framework aumenta a confiana no processo de migrao de dados para o ALERT,
adaptando-se a qualquer sistema fonte.
Com recurso utilizao da Monitoring Framework no processo de migrao de dados
possvel identificar, mais objectivamente, o tempo disponibilizado em cada tarefa, a quantidade de
informao migrada, assim como qualquer tipo de problema que possa ter ocorrido durante o processo
de migrao de dados para o ALERT.
Devido elevada confiana no processo de migrao que a Data Migration Framework revelou,
assim como a capacidade de gerar relatrios do resultado da migrao, atravs da Monitoring
Framework, resulta numa maior facilidade de aceitao mudana para o ALERT, por parte do
cliente, uma vez que se est a lidar com informao muito sensvel, ligada rea da sade, no
havendo margem para erros.
A arquitectura definida para a Data Migration Framework, dividida nas fases de extraco,
transformao e carregamento, revelou-se, no processo de migrao de dados, muito til e adequada
pelas razes a seguir expostas:
A fase de extraco dos dados dos sistemas fonte, recorrendo a ficheiros XML, possibilita
uma maior simplicidade nas tarefas a serem realizadas por parte do cliente. Com recurso a ficheiros
XML, deixa de ser necessrio um profundo conhecimento do sistema fonte e possvel validar o
respectivo ficheiro recorrendo a ficheiros no formato XSD.
A fase de transformao, definida por uma rea intermdia, independente dos sistemas de
origem e de destino, constituda pelos schemas STAGING e MIGRA. O schema STAGING
representa a plataforma de integrao dos dados a migrar para o ALERT, de acordo com as regras
0,0
/
!
estipuladas pelo prprio. Devido a esta independncia, a DMF no necessita ser alterada sempre que
ocorra um upgrade ao produto ALERT. O schema MIGRA possibilita transformar os dados que se
encontravam no sistema fonte para irem de encontro estrutura do sistema ALERT. Este schema
permite garantir que a informao proveniente do sistema de origem no se perde durante o processo
de migrao de dados para o ALERT, dado que toda a informao dos sistemas de origem e destino
se encontram mapeados. Caso algum erro seja identificado no ALERT, possvel identificar e
garantir se esse erro surgiu com o processo de migrao ou se j se encontrava assim no sistema de
origem. de realar que o recurso a uma rea intermdia na arquitectura da DMF permite no s
migrar de diversos sistemas fonte desconhecidos para o ALERT, mas tambm de outros sistemas
ALERT para o ALERT.
A fase de carregamento pode ser definida como o processo de exportao dos dados da rea
intermdia (schema MIGRA MAP NEW) para o ALERT.
O correcto funcionamento do sistema aplicacional ALERT foi mantido e toda a informao
migrada encontra-se correctamente disponvel no sistema de destino.
Embora a ferramenta de migrao desenvolvida se tenha revelado um sucesso no teste realizado
no Hospital de Bernhoven, na Holanda, necessrio sublinhar que, actualmente, a Data Migration
Framework encontra-se em fase de desenvolvimento, uma vez que ainda no foram desenvolvidas
todas as reas suportadas pelo ALERT, nomeadamente, a rea referente informao correspondente
aos meios complementares de diagnstico e teraputico, a rea referente informao da alta da
instituio hospitalar, a rea referente informao de documentos dos profissionais e pacientes, entre
outros.
Para se obter um maior e melhor sucesso da aplicao desta ferramenta de migrao de dados
igualmente necessrio desenvolver outros mdulos, no sentido de permitir que a Data Migration
Framework consiga receber informao do sistema fonte, no s no formato XML, mas tambm
recorrendo a Flat Files ou a DBLinks.
Aps a realizao dos testes verificou-se, a possibilidade de um novo desenvolvimento na Data
Migration Framework, que passaria por utilizar uma API (Application Programming Interface) na
fase de carregamento da informao dos diversos sistemas fonte para a rea intermdia, com o intuito
de facilitar a execuo das tarefas, desta fase, por parte do cliente.
Considera-se, assim, que a Data Migration Framework e a Monitoring Framework representam
um passo importante na caminhada da internacionalizao da empresa ALERT.
0,+
/
!
) 0 %
[3] PMI Standards Committee; WILLIAM, Duncan A Guide to the Project Management Body
of Knowledge (PMBOK Guide) Fourth Edition. Project Management Institute, 2008.
[5] VANDER, Emiro ETL: Quais as ferramentas mais poderosas do mercado? [Acedido a
18 de Janeiro de 2009]. Disponvel na Internet:
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6727.
0,3
/
!
@ $& )
Migraes para bases de dados open source. [Acedido a 17 de Junho de 2009]. Disponvel
na Internet:
http://www.dri.pt/pt/servicos_open_source/sistemas_open_source/migracao_bases_dados.html.
0,4
/
!
Moving Global Electronics Data using Sunopsis, 2006 [Acedido a 11 de Janeiro de 2009].
Disponvel na Internet: http://www.rittmanmead.com/2006/11/30/moving-global-electronics-data-
using-sunopsis/.
Oracle Data Integrator Getting Started with an ETL Project. Oracle, 2007 [Acedido a 09
de Dezembro de 2009]. Disponvel na Internet: http://www.oracle.com/technology/products/
oracledataintegrator/10.1.3/htdocs/documentation/oracledi_getting_started.pdf.
Oracle Data Integrator Users Guide. Oracle, 2007 [Acedido a 09 de Dezembro de 2009].
Disponvel na Internet: http://www.oracle.com/technology/products/oracledataintegrator/10.1.3/
htdocs/documentation/oracledi_users.pdf.
PEREIRA, Alexandre; POUPA, Carlos Como escrever uma tese monografia ou livro
cientfico usando o Word. 3 ed. Lisboa: Edies Slabo, 2006.
0,5
/
!
The essential online community resource for the data migration profession. Comunidade
online para profissionais responsveis por realizarem Migraes de dados [Acedido a 13 de Novembro
de 2008]. Disponvel na Internet: http://www.datamigrationpro.com/data-migration-news-journal/.
WANG, Richard; ZIAD, Mostapha & LEE, Yang Data Quality. Kluwer Academic
Publishers [Acedido a 13 de Novembro de 2008]. Disponvel na Internet:
http://books.google.pt/books?id=A_TxcokcIA8C&printsec=frontcover&source=gbs_v2_summary_r&
cad=0.
0,6
/
!
0,1
/
!
= 4 !&
0,2
/
!
0,-
/
!
00,
/
!
000
/
!
00+
/
!
003
/
!
= @ - $ &
004
/
!
005
/
!
= - $ &
006
/
!
001
/
!
002
/
!
= - <
00-
/
!
CURSOR get_data IS
SELECT sstl.sess_no,
sstl.nno,
sstl.scen_task_no,
sst.task_name1 as task_name,
sst.task_type as task_type,
sst.task_name2 as task_PKG,
sst.ord_trt as id_task_KM,
sst.task_name3 as task_KM,
sst.ind_log_nb as type_task_KM,
sst.def_lschema_name as LKM_schema,
sstl.task_beg,
sstl.task_end,
to_char(trunc(sysdate) + (((sstl.task_dur / 60) / 60) / 24),
'hh24:mi:ss') as duracao,
sstl.task_status,
sstl.nb_ins,
sstl.nb_upd,
sstl.nb_del,
sstl.nb_err
from MIGRA_WORK.snp_sess_task_log sstl,
MIGRA_WORK.snp_sess_task sst
where sstl.sess_no = sst.sess_no
and sstl.nno = sst.nno
and sstl.scen_task_no = sst.scen_task_no
order by sstl.sess_no, scen_task_no;
BEGIN
lvc2_error_origin := 'Perf_ODI_KM';
0+,
/
!
0+0
/
!
htp.p('<tr>');
htp.p(' <td>' || i.SESS_NO || '</td>');
htp.p(' <td>' || i.NNO || '</td>');
htp.p(' <td>' || i.SCEN_TASK_NO || '</td>');
htp.p(' <td>' || i.TASK_NAME || '</td>');
htp.p(' <td>' || i.TASK_TYPE || '</td>');
htp.p(' <td>' || i.TASK_PKG || '</td>');
htp.p(' <td>' || i.ID_TASK_KM || '</td>');
htp.p(' <td>' || i.TASK_KM || '</td>');
htp.p(' <td>' || i.TYPE_TASK_KM || '</td>');
htp.p(' <td>' || i.LKM_SCHEMA || '</td>');
htp.p(' <td>' || to_char(i.TASK_BEG, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || to_char(i.TASK_END, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || i.DURACAO || '</td>');
htp.p(' <td>' || i.TASK_STATUS || '</td>');
htp.p(' <td>' || i.NB_INS || '</td>');
htp.p(' <td>' || i.NB_UPD || '</td>');
htp.p(' <td>' || i.NB_DEL || '</td>');
htp.p(' <td>' || i.NB_ERR || '</td>');
htp.p('</tr>');
END LOOP;
htp.p(' </table>');
htp.p(' </div>');
htp.p(' <div id="footer">In need of assistance please contact the <a
href="mailto:micaela.lima@alert.pt">migration team</a>. </div>');
htp.p('</div>');
htp.p('</div>');
htp.p('</body>');
htp.p('</html>');
EXCEPTION
WHEN OTHERS THEN
var_result := 'Resultado com erro: ' || SQLCODE || ' -ERROR- ' ||
SQLERRM;
lvc2_error_title := var_result;
lvc2_level := 'ERR';
lvc2_error_desc := lvc2_error_origin || '-' || lvc2_error_title;
pk_ia_util.insert_error(lvc2_error_origin,
lvc2_error_title,
SQLERRM,
lvc2_error_desc,
lvc2_level);
END Perf_ODI_KM;
PROCEDURE Perf_ODI_Pkg IS
var_result VARCHAR2(4000);
lvc2_error_title error.title%TYPE := NULL;
lvc2_error_origin error.origin%TYPE := NULL;
lvc2_error_desc error.description%TYPE := NULL;
lvc2_level error.err_level%TYPE := NULL;
CURSOR get_data IS
SELECT ss.sess_no as numero,
ss.sess_name as package_name,
ss.scen_version as version,
sss.nno as step_order,
sss.step_name as int_step_name,
sss.step_type as int_step_type,
sss.var_name,
sss.var_value,
to_char(trunc(sysdate) + (((ss.sess_dur / 60) / 60) /
24),'hh24:mi:ss') as duracao,
ss.sess_beg as dt_ini,
ss.sess_end as dt_end,
0++
/
!
ss.sess_status as status,
ss.sess_rc as code_error,
ssl.nb_err as n_errors,
ssl.nb_ins as n_inserts,
ssl.nb_upd as n_updates,
ssl.nb_del as n_deletes
from migra_work.snp_session ss,
migra_work.snp_step_log ssl,
migra_work.snp_sess_step sss
where ss.sess_no = ssl.sess_no
and ss.sess_no = sss.sess_no
AND SSL.NNO = SSS.NNO
order by ss.sess_no, ss.sess_name, ss.scen_version, sss.nno;
BEGIN
lvc2_error_origin := 'Perf_ODI_Pkg';
htp.p('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
htp.p('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">');
htp.p('<head>');
htp.p('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
htp.p('<title>Performance ODI-Package</title>');
htp.p('<script type="text/javascript" src="js/paginate.js"></script>');
htp.p('<link href="css/tablecloth.css" rel="stylesheet" type="text/css"
media="screen" />');
htp.p('<script type="text/javascript" src="js/tablecloth.js"></script>');
htp.p('<link rel="stylesheet" href="css/style.css" type="text/css"
media="screen" />');
htp.p('</head>');
htp.p('<body>');
htp.p('<div>');
htp.p('<div id="container">');
htp.p(' <div id="header">');
htp.p('<img src="/Migration/images/logo.jpg"/>');
htp.p(' </div>');
htp.p(' <div>');
htp.p(' <ul id="menu">');
htp.p(' <li class="trans">aa</li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_Pkg" title="" class="current">Performance
ODI-Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_KM" title="">Performance ODI-
KM</a></li>');
htp.p(' <li><a href="http://alert-mig/migra_25/VALIDATE_DMF_V25032.v_odi_km"
title="">Validate ODI-KM</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_ODI_BD_Pkg" title="">Validate DB-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_LOG_TOTAL" title="">Validate Total
Logs</a></li>');
htp.p(' </ul>');
htp.p(' </div>');
htp.p(' </div>');
htp.p(' <div id="content">');
htp.p(' <h1>Performance ODI-Package</h1>');
htp.p(' <p>To create and manage Oracle Data Integrator projects are used
four graphical modules. We will focus on the Designer module, that is used to
define data stores (tables, files, Web services, and so on), interfaces (data
mappings), and packages (sets of integration steps, including interfaces).');
htp.p(' <br/>');
htp.p(' <p>In this area its possible to analyze the performance of the Data
Migration Framework in a Package level.');
htp.p('<div id="dataTable">');
htp.p('<table cellspacing="0" cellpadding="0" class="paginate-10 max-pages-
7">');
htp.p(' <tr>');
0+3
/
!
htp.p('<tr>');
htp.p(' <td>' || i.NUMERO || '</td>');
htp.p(' <td>' || i.PACKAGE_NAME || '</td>');
htp.p(' <td>' || i.VERSION || '</td>');
htp.p(' <td>' || i.STEP_ORDER || '</td>');
htp.p(' <td>' || i.INT_STEP_NAME || '</td>');
htp.p(' <td>' || i.INT_STEP_TYPE || '</td>');
htp.p(' <td>' || i.VAR_NAME || '</td>');
htp.p(' <td>' || i.VAR_VALUE || '</td>');
htp.p(' <td>' || i.DURACAO || '</td>');
htp.p(' <td>' || to_char(i.DT_INI, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || to_char(i.DT_END, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || i.STATUS || '</td>');
htp.p(' <td>' || i.CODE_ERROR || '</td>');
htp.p(' <td>' || i.N_ERRORS || '</td>');
htp.p(' <td>' || i.N_INSERTS || '</td>');
htp.p(' <td>' || i.N_UPDATES || '</td>');
htp.p(' <td>' || i.N_DELETES || '</td>');
htp.p('</tr>');
END LOOP;
htp.p(' </table>');
htp.p(' </div>');
htp.p('<div id="footer">In need of assistance please contact the <a
href="mailto:micaela.lima@alert.pt">migration team</a>. </div>');
htp.p('</div>');
htp.p('</div>');
htp.p('</body>');
htp.p('</html>');
EXCEPTION
WHEN OTHERS THEN
var_result := 'Resultado com erro: ' || SQLCODE || ' -ERROR- ' ||
SQLERRM;
lvc2_error_title := var_result;
lvc2_level := 'ERR';
lvc2_error_desc := lvc2_error_origin || '-' || lvc2_error_title;
pk_ia_util.insert_error(lvc2_error_origin,
lvc2_error_title,
SQLERRM,
lvc2_error_desc,
lvc2_level);
END Perf_ODI_Pkg;
0+4
/
!
CURSOR get_data IS
SELECT ID,
TABLE_NAME,
TABLE_NAME_ROWID,
ORA_ERR_ROWID,
ORA_ERR_NUM,
ORA_ERR_MSG,
ORA_ERR_OPTYPE,
ORA_ERR_TAG,
STATUS,
DT_BEGIN,
DT_END
FROM mig_control_error
order BY ID, TABLE_NAME;
CURSOR get_some_data IS
SELECT ID,
TABLE_NAME,
TABLE_NAME_ROWID,
ORA_ERR_ROWID,
ORA_ERR_NUM,
ORA_ERR_MSG,
ORA_ERR_OPTYPE,
ORA_ERR_TAG,
STATUS,
DT_BEGIN,
DT_END
FROM mig_control_error
where (DT_BEGIN >= to_date(dt_ini, 'dd-mm-yyyy hh24:mi:ss') or
DT_BEGIN is null)
and (DT_END <= to_date(dt_end, 'dd-mm-yyyy hh24:mi:ss') or
DT_END is null)
order BY ID, TABLE_NAME;
BEGIN
lvc2_error_origin := 'V_ODI_BD_Pkg';
0+5
/
!
htp.img('/Migration/images/logo.jpg');
htp.p(' </div>');
htp.p(' <div>');
htp.p(' <ul id="menu">');
htp.p(' <li class="trans">a</li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_Pkg" title="">Performance ODI-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_KM" title="">Performance ODI-
KM</a></li>');
htp.p(' <li><a href="http://alert-mig/migra_25/VALIDATE_DMF_V25032.v_odi_km"
title="">Validate ODI-KM</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_ODI_BD_Pkg" title="" class="current">Validate
DB-Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_LOG_TOTAL" title="">Validate Total
Logs</a></li>');
htp.p(' </ul>');
htp.p(' </div>');
htp.p(' </div>');
htp.p(' <div id="content">');
htp.p('<h1>Validate DB-Package</h1>');
htp.p('<p>');
htp.p('It''s also possible to validate the Data Migration at a Database
level.');
htp.p('In this are we will analyze te result of the Data Migration with the
possibilite to filter the data according to a start date/time and an end
date/time.');
htp.p('</p>');
htp.p('<h2>Search</h2>');
htp.p('<form action="VALIDATE_DMF_V25032.v_odi_bd_pkg" method="post">');
htp.p('Start Date/Time: <input type="text" name="dt_ini" id="startDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''startDate'',''ddmmyyyy'',''arrow'',true,24,false)"><im
g src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('End Date/Time: <input type="text" name="dt_end" id="endDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''endDate'',''ddmmyyyy'',''arrow'',true,24,false)"><img
src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('<input name="submit" type="submit" value="Search class="but"" />');
htp.p('</form>');
htp.p('<div id="dataTable">');
htp.p('<table cellspacing="0" cellpadding="0" class="paginate-10 max-pages-
7">');
htp.p(' <tr>');
htp.p(' <th >ID</th>');
htp.p(' <th >TABLE_NAME</th>');
htp.p(' <th >TABLE_NAME_ROWID</th>');
htp.p(' <th >ORA_ERR_ROWID</th>');
htp.p(' <th >ORA_ERR_NUM</th>');
htp.p(' <th >ORA_ERR_MSG</th>');
htp.p(' <th >ORA_ERR_OPTYPE</th>');
htp.p(' <th >ORA_ERR_TAG</th>');
htp.p(' <th >STATUS</th>');
htp.p(' <th >DT_BEGIN</th>');
htp.p(' <th >DT_END</th>');
htp.p(' </tr>');
if submit = 'Search' and (dt_ini IS NOT NULL or dt_end IS NOT NULL) then
FOR i IN get_some_data LOOP
htp.p('<tr>');
htp.p(' <td>' || i.ID || '</td>');
htp.p(' <td>' || i.TABLE_NAME || '</td>');
htp.p(' <td>' || i.TABLE_NAME_ROWID || '</td>');
0+6
/
!
htp.p(' </table>');
htp.p(' </div>');
htp.p('<div id="footer">In need of assistance please contact the <a
href="mailto:micaela.lima@alert.pt">migration team</a>. </div>');
htp.p('</div>');
htp.p('</div>');
htp.p('</body>');
htp.p('</html>');
EXCEPTION
WHEN OTHERS THEN
var_result := 'Resultado com erro: ' || SQLCODE || ' -ERROR- ' ||
SQLERRM;
lvc2_error_title := var_result;
lvc2_level := 'ERR';
lvc2_error_desc := lvc2_error_origin || '-' || lvc2_error_title;
pk_ia_util.insert_error(lvc2_error_origin,
lvc2_error_title,
SQLERRM,
lvc2_error_desc,
lvc2_level);
END V_ODI_BD_Pkg;
CURSOR get_data IS
SELECT ID, O_RESULT, V_RESULT, DATA, TABLE_NAME
FROM LOG_MIGRA
order BY DATA DESC;
0+1
/
!
CURSOR get_some_data IS
SELECT ID, O_RESULT, V_RESULT, DATA, TABLE_NAME
FROM LOG_MIGRA
where (DATA >= to_date(dt_ini, 'dd-mm-yyyy hh24:mi:ss') or
dt_ini is null)
and (DATA <= to_date(dt_end, 'dd-mm-yyyy hh24:mi:ss') or
dt_end is null)
order BY DATA DESC;
BEGIN
lvc2_error_origin := 'V_ODI_KM';
htp.p('</head>');
htp.p('<body>');
htp.p('<div>');
htp.p('<div id="container">');
htp.p(' <div id="header">');
htp.img('/Migration/images/logo.jpg');
htp.p(' </div>');
htp.p(' <div>');
htp.p(' <ul id="menu">');
htp.p(' <li class="trans">a</li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_Pkg" title="">Performance ODI-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_KM" title="">Performance ODI-
KM</a></li>');
htp.p(' <li><a href="http://alert-mig/migra_25/VALIDATE_DMF_V25032.v_odi_km"
title="" class="current">Validate ODI-KM</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_ODI_BD_Pkg" title="">Validate DB-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_LOG_TOTAL" title="">Validate Total
Logs</a></li>');
htp.p(' </ul>');
htp.p(' </div>');
htp.p(' </div>');
htp.p(' <div id="content">');
htp.p('<h1>Validate ODI-KM</h1>');
htp.p('<p>');
htp.p('Oracle Data Integrator (ODI) includes Knowledge Modules (KMs) that are
components, which contain the information for ODI to perform a specific set of
tasks against a specific technology.');
htp.p('There are 6 different types of KMs, but in this area we will only
validate in detail the tasks in 2 different types:');
0+2
/
!
htp.p('<br/>');
htp.p(' LKM (Loading Knowledge Modules) are used to extract data from the
source database tables and other systems (files, middleware, mainframe, etc.).');
htp.p('<br/>');
htp.p(' IKM (Integration Knowledge Modules) are used to integrate (load) data
to the target tables.');
htp.p('</p>');
htp.p('<h2>Search</h2>');
htp.p('<form action="VALIDATE_DMF_V25032.v_odi_km" method="post">');
htp.p('Start Date/Time: <input type="text" name="dt_ini" id="startDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''startDate'',''ddmmyyyy'',''arrow'',true,24,false)"><im
g src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('End Date/Time: <input type="text" name="dt_end" id="endDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''endDate'',''ddmmyyyy'',''arrow'',true,24,false)"><img
src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('<input name="submit" type="submit" value="Search" class="but"/>');
htp.p('</form>');
htp.p('<div id="dataTable">');
htp.p('<table cellspacing="0" cellpadding="0" class="paginate-10 max-pages-
7">');
htp.p(' <tr>');
htp.p(' <th >ID</th>');
htp.p(' <th >O_RESULT</th>');
htp.p(' <th >V_RESUL</th>');
htp.p(' <th >DATA</th>');
htp.p(' <th >TABLE_NAME</th>');
htp.p(' </tr>');
if submit = 'Search' and (dt_ini IS NOT NULL or dt_end IS NOT NULL) then
FOR i IN get_some_data LOOP
htp.p('<tr>');
htp.p(' <td>' || i.ID || '</td>');
htp.p(' <td>' || i.O_RESULT || '</td>');
htp.p(' <td>' || i.V_RESULT || '</td>');
htp.p(' <td>' || to_char(i.data, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || i.TABLE_NAME || '</td>');
htp.p('</tr>');
END LOOP;
elsif dt_ini IS NULL and dt_end IS NULL then
FOR i IN get_data LOOP
htp.p('<tr>');
htp.p(' <td>' || i.ID || '</td>');
htp.p(' <td>' || i.O_RESULT || '</td>');
htp.p(' <td>' || i.V_RESULT || '</td>');
htp.p(' <td>' || to_char(i.data, 'dd-mm-yyyy hh24:mi:ss') ||
'</td>');
htp.p(' <td>' || i.TABLE_NAME || '</td>');
htp.p('</tr>');
END LOOP;
end if;
htp.p(' </table>');
htp.p(' </div>');
htp.p('<div id="footer">In need of assistance please contact the <a
href="mailto:micaela.lima@alert.pt">migration team</a>. </div>');
htp.p('</div>');
htp.p('</div>');
htp.p('</body>');
htp.p('</html>');
EXCEPTION
WHEN OTHERS THEN
var_result := 'Resultado com erro: ' || SQLCODE || ' -ERROR- ' ||
0+-
/
!
SQLERRM;
lvc2_error_title := var_result;
lvc2_level := 'ERR';
lvc2_error_desc := lvc2_error_origin || '-' || lvc2_error_title;
pk_ia_util.insert_error(lvc2_error_origin,
lvc2_error_title,
SQLERRM,
lvc2_error_desc,
lvc2_level);
END V_ODI_KM;
CURSOR get_data IS
SELECT LTE_ID,
LTE_ERROR_TYPE,
LTE_ERROR_NUM,
LTE_ERROR_DESC,
LTE_DT_CREATION
FROM LOG_TOTAL_ERROR
order BY LTE_DT_CREATION DESC;
CURSOR get_some_data IS
SELECT LTE_ID,
LTE_ERROR_TYPE,
LTE_ERROR_NUM,
LTE_ERROR_DESC,
LTE_DT_CREATION
FROM LOG_TOTAL_ERROR
where (LTE_DT_CREATION >= to_date(dt_ini, 'dd-mm-yyyy hh24:mi:ss') or
dt_ini is null)
and (LTE_DT_CREATION <= to_date(dt_end, 'dd-mm-yyyy hh24:mi:ss') or
dt_end is null)
order BY LTE_DT_CREATION DESC;
BEGIN
lvc2_error_origin := 'V_LOG_TOTAL';
htp.p('</head>');
htp.p('<body>');
htp.p('<div>');
htp.p('<div id="container">');
htp.p(' <div id="header">');
03,
/
!
htp.img('/Migration/images/logo.jpg');
htp.p(' </div>');
htp.p(' <div>');
htp.p(' <ul id="menu">');
htp.p(' <li class="trans">a</li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_Pkg" title="">Performance ODI-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.Perf_ODI_KM" title="">Performance ODI-
KM</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.v_odi_km">Validate ODI-KM</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_ODI_BD_Pkg" title="">Validate DB-
Package</a></li>');
htp.p(' <li><a href="http://alert-
mig/migra_25/VALIDATE_DMF_V25032.V_LOG_TOTAL" title="" class="current">Validate
Total Logs</a></li>');
htp.p(' </ul>');
htp.p(' </div>');
htp.p(' </div>');
htp.p(' <div id="content">');
htp.p('<h1>Validate ODI-KM</h1>');
htp.p('<p>');
htp.p('Oracle Data Integrator (ODI) includes Knowledge Modules (KMs) that are
components, which contain the information for ODI to perform a specific set of
tasks against a specific technology.');
htp.p('There are 6 different types of KMs, but in this area we will only
validate in detail the tasks in 2 different types:');
htp.p('<br/>');
htp.p(' LKM (Loading Knowledge Modules) are used to extract data from the
source database tables and other systems (files, middleware, mainframe, etc.).');
htp.p('<br/>');
htp.p(' IKM (Integration Knowledge Modules) are used to integrate (load) data
to the target tables.');
htp.p('</p>');
htp.p('<h2>Search</h2>');
htp.p('<form action="VALIDATE_DMF_V25032.v_odi_km" method="post">');
htp.p('Start Date/Time: <input type="text" name="dt_ini" id="startDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''startDate'',''ddmmyyyy'',''arrow'',true,24,false)"><im
g src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('End Date/Time: <input type="text" name="dt_end" id="endDate"
maxlength="25" readonly="readonly size="19" /><a
href="javascript:NewCssCal(''endDate'',''ddmmyyyy'',''arrow'',true,24,false)"><img
src="/Migration/images/cal.gif" alt="Pick a date" width="16" height="16"
class="calImg" /></a>');
htp.p('<input name="submit" type="submit" value="Search" class="but"/>');
htp.p('</form>');
htp.p('<div id="dataTable">');
htp.p('<table cellspacing="0" cellpadding="0" class="paginate-10 max-pages-
7">');
htp.p(' <tr>');
htp.p(' <th >DT_CREATION</th>');
htp.p(' <th >ERROR_TYPE</th>');
htp.p(' <th >ERROR_NUM</th>');
htp.p(' <th >ERROR_DESC</th>');
htp.p(' </tr>');
if submit = 'Search' and (dt_ini IS NOT NULL or dt_end IS NOT NULL) then
FOR i IN get_some_data LOOP
htp.p('<tr>');
htp.p(' <td>' ||
TO_CHAR(i.lte_dt_creation, 'YYYY-MM-DD HH24:MI:SS') ||
030
/
!
'</td>');
htp.p(' <td>' || i.lte_error_type || '</td>');
htp.p(' <td>' || i.lte_error_num || '</td>');
htp.p(' <td>' || i.lte_error_desc || '</td>');
htp.p('</tr>');
END LOOP;
elsif dt_ini IS NULL and dt_end IS NULL then
FOR i IN get_data LOOP
htp.p('<tr>');
htp.p(' <td>' ||
TO_CHAR(i.lte_dt_creation, 'YYYY-MM-DD HH24:MI:SS') ||
'</td>');
htp.p(' <td>' || i.lte_error_type || '</td>');
htp.p(' <td>' || i.lte_error_num || '</td>');
htp.p(' <td>' || i.lte_error_desc || '</td>');
htp.p('</tr>');
END LOOP;
end if;
htp.p(' </table>');
htp.p(' </div>');
htp.p(' <div id="footer">In need of assistance please contact the <a
href="mailto:micaela.lima@alert.pt">migration team</a>. </div>');
htp.p(' </div>');
htp.p('</div>');
htp.p('</body>');
htp.p('</html>');
EXCEPTION
WHEN OTHERS THEN
var_result := 'Resultado com erro: ' || SQLCODE || ' -ERROR- ' ||
SQLERRM;
lvc2_error_title := var_result;
lvc2_level := 'ERR';
lvc2_error_desc := lvc2_error_origin || '-' || lvc2_error_title;
pk_ia_util.insert_error(lvc2_error_origin,
lvc2_error_title,
SQLERRM,
lvc2_error_desc,
lvc2_level);
END V_LOG_TOTAL;
end VALIDATE_DMF_V25032;
/
03+