Sunteți pe pagina 1din 30

Cursul 6

ANALIZA COMPARATIVA A DIFERITELOR


INSTRUMENTE UTILIZATE PENTRU
INTEGRAREA DATELOR
n integrarea orientat pe date un rol important l au instrumentele.
Aceste instrumente le putem clasifica n dou categorii:
instrumente pentru gestiunea datelor, n cazul n care datele
sunt deja stocate n baze de date sau n depozite de date i
instrumente pentru extragerea datelor din diferitele surse i
ncrcarea acestora ntr-o baz de date consolidat.
n acest capitol vor fi prezentate principalele sisteme de gestiune a
bazelor de date i a depozitelor de date i cteva teste realizate cu
instrumentele folosite pentru migrarea datelor.

3.1. Sisteme de gestiune a bazelor de date


Un sistem de gestiune a bazelor de date este un ansamblu complex
de programe care asigur interfaa ntre o baz de date i utilizatorii acesteia.
Sistemul de gestiune a bazelor de date este componenta software a
unui sistem de baz de date care interacioneaz cu toate celelalte
componente ale acestuia, asigurnd legtura i interdependena ntre
elementele sistemului.
Rolul unui SGBD ntr-un context de sistem de baz de date este de:
1. a defini i descrie structura bazei de date, lucru care se realizeaz
printr-un limbaj propriu specific, conform unui anumit model de date;
2. a ncrca/valida datele n baza de date respectnd nite restriciile
de integritate impuse de modelul de date utilizat;
3. a realiza accesul la date pentru diferite operaii (consultare,
interogare, actualizare, editare situaii de ieire), utiliznd operatorii
modelului de date;
4. a ntreine baza de date cu ajutorul unor instrumente specializate
(editoare, utilitare (shells), navigatoare, convertoare etc.);
5. a asigura protecia bazei de date sub aspectul securitii i
integritii datelor.
Obiectivul general al unui SGBD este de a furniza suportul
software complet pentru dezvoltarea de aplicaii informatice cu baze de
116

Cursul 6
date. Fiind un mediu specializat, SGBD satisface cerinele informaionale
ale utilizatorului ntr-un mod optim. Astfel, el asigur minimizarea costului
de prelucrare a datelor, reduce timpul de rspuns (timp util), asigur o mai
buna flexibilitate i deschidere a aplicaiei, asigur protecie ridicat a
datelor.
Cele mai utilizate SGBD-uri sunt:
ORACLE realizat de firma Oracle Corporation USA, produs complet
relaional, robust, bazat pe SQL standard extins, ajuns la versiunea 10G,
extensie orientat obiect, arhitectura client/server, lucrul distribuit, BD
Internet, optimizator de regsire;
DB2 - realizat de firma IBM, bazat pe SQL, optimizator de regsire,
respect teoria relaional, lucrul distribuit, robust;
INFORMIX realizat de firma Informix, respect teoria relaional,
lucru distribuit, robust;
PROGRESS realizat de firma Progress Software, are limbaj propriu
(Progress 4GL), suport SQL, ruleaz pe o gam larg de calculatoare sub
diferite sisteme de operare;
SQLServer realizat de firma Microsoft, bazat pe SQL, ruleaz n
arhitectura client/server;
INGRES II realizat de firma Computer Associates, este un SGBDR
complet, implementeaz dou limbaje relaionale (nti Quel i apoi SQL),
este suportat de diferite sisteme de operare (Windows, VMS, UNIX),
lucreaz distribuit n arhitectura client/server, extensie cu faciliti orientate
obiect, permite aplicaii tip Internet, protecia ridicat a datelor, organizarea
fizic a tabelelor se face prin sistemul de operare, are numeroase
componente;
VISUAL FOXPRO - realizat de firma Microsoft, are un limbaj
procedural propriu foarte puternic, extensie orientat obiect, programare
vizual, nucleu extins de SQL, rapid;
ACCESS realizat de firma Microsoft, bazat pe SQL, are limbajul
procedural gazd (Basic Access), are generatoare puternice;
PARADOX - realizat de firma Borland, are limbaj procedural propriu
(PAL) i suport SQL.

3.2. Sisteme pentru gestiunea depozitelor de date

117

Cursul 6
3.2.1 Oracle Discoverer
Instrumentele oferite de Oracle Discoverer cuprind: elemente de
analiz multidimensional a datelor care implementeaz operaiile specifice
(navigare n cadrul ierarhiilor, rotaii, seciuni) i funcii de analiz (de
previziune, de construire a scenariilor ce se ntmpl dac?); elemente de
vizualizare a datelor prin construirea de rapoarte i grafice flexibile i uor
de modificat de ctre utilizatorul final.
Oracle Discoverer 9.0.4. este alctuit din dou componente majore
(figura 3.1):
un mediu pentru definirea structurilor de date i a metadatelor
utilizate n analiz Oracle Discoverer Administrator;
mai multe medii pentru construirea i prezentarea rapoartelor i
analizelor OracleAS Discoverer Plus, OracleAS Discoverer
Viewer, Oracle Discoverer Desktop [NET05].
Arhitectura Oracle Discoverer este compus din trei niveluri
distincte: nivelul datelor, nivelul End User Layer (EUL V5 pentru
versiunea Oracle Discoverer 9.0.4) care conine metadatele i structurile
specifice utilizate n analiz i nivelul interfeei cu utilizatorul.
Accesul la date se realizeaz prin intermediul nivelului EUL i este
un acces direct, fr construirea unui depozit de date suplimentar. Structurile
multidimensionale de tipul dimensiunilor i a tabelelor de fapte sunt
transformate automat din sursele relaionale n obiecte de tipul Folder i
grupate i ncrcate n obiectele de tipul Business Area ale nivelului EUL.
Din acest motiv, pe baza de date relaional trebuie construite mai nti o
serie de view-uri care s faciliteze maparea datelor pe obiectele din Oracle
Discoverer.
Pentru construirea unei aplicaii de analiz de tipul Business
Intelligence sunt necesare dou etape:
definirea obiectelor n Oracle Discoverer Administrator i
construirea prezentrilor n Oracle Discoverer Desktop sau
Oracle Discoverer Plus sau Viewer.

118

Cursul 6

DISCOVERER
ADMINISTRATOR
(WINDOWS)

ADMINISTRARE

VIZUALIZAR
E

D
E
F
I
N
I
R
E

DISCOVERER
DESKTOP
(WINDOWS)

EUL V5

EXTRAGERE

DISCOVERER PLUS
(WEB)

ORACLE
DATABASE

DISCOVERER
VIEWER
(WEB)

Figura 3.1. Arhitectura Oracle Discoverer


Oracle Discoverer ofer posibilitatea construirii unui depozit virtual
de date, centralizat sau bazat pe data marts, folosind surse de date diferite,
extrase de obicei din bazele de date relaionale. Depozitul se bazeaz pe
tabele sau pe un set de viziuni construite pe baza de date. Integrarea datelor
se poate realiza prin acest nivel de tabele virtuale care pot fi construite pe
baze de date diferite prin intermediul data link-urilor.
3.2.2 Oracle Warehouse Builder
Soluia cea mai complex oferit de compania Oracle pentru analiza,
proiectarea, dezvoltarea i implementarea unui depozit de date este
Warehouse Builder 10g. Este conceput ca un mediu integrat care s asiste
119

Cursul 6
ntregul ciclu de dezvoltare a depozitelor de date. Acesta permite i migrarea
datelor obinute n alte medii cum ar fi OLAP Analytic Workspace Manager
sau Oracle Discoverer sau chiar versiunile anterioare de Oracle Express.
Spre deosebire de Oracle Discoverer n care se realiza un depozit
virtual, n Warehouse Buider datele sunt stocate fizic ntr-un repository
special construit pe baza de date.
Principalele obiecte cu care lucreaz Warehouse Builder sunt
prezentate n continuare:
coleciile (collections) reprezint un mecanism generic de grupare.
Ele sunt o cale de acces mai uoar la definiiile obiectelor folosit
pentru a realiza activiti la nivel de grup, de exemplu validarea
sau generarea de cod;
bazele de date (databases) reprezint maparea unor date din baze
de date Oracle sau non-Oracle. Se introduc noiunile de modul i
locaie;
Modulul reprezint un mod logic de grupare a definiiilor de
obiecte. De exemplu, un modul de baz de date Oracle reprezint o
grupare logic de obiecte care aparin unei baze de date (scheme)
Oracle. Att bazele de date (databases), fiierele (files), aplicaiile
(applications), ct i fluxurile de procese (process Flows) sunt
grupate din punct de vedere logic n module.
Locaia definete informaii referitoare la schema bazei de date sau
la instrumente destinaie. Locaiile sunt specifice tipurilor de
module: baze de date Oracle, baze de date non-Oracle, SAP sau
fiiere. Atunci cnd se creeaz o locaie, se memoreaz o definiie
logic ce conine tipul de locaie i versiunea.
fiierele (files). Un modul de fiiere definete o legtur ctre un
director ce conine un numr de fiiere text. Putem folosi un
wizard pentru a importa aceste fiiere, ele putnd conine tipuri
multiple de nregistrri, nregistrri separate prin caractere etc.;
aplicaiile (applications) conin definiii ale pachetelor de aplicaii.
Oracle Warehouse Builder asigur un instrument de integrare
pentru sistemele SAP;
fluxul de date (process flow) conine definiii ale fluxurilor de
procese. Acestea sunt coninute n module, iar n cadrul modulului
sunt coninute n pachetele de fluxuri de date. Codul pe care
Warehouse Builder-ul l genereaz pentru a reprezenta definiiile
fluxurilor de date respect standardul XML Process Definition
Language(XPDL);
120

Cursul 6
transformrile publice (public transformations) reprezint
transformri ce pot fi folosite n cadrul proiectului. Acestea sunt
divizate n transformri obinuite i transformri predefinite. Cele
obinuite pot fi definite sau importate de ctre utilizator, n timp
ce, cele predefinite sunt legate de instalarea Warehouse Builder.
Toate acestea sunt disponibile n schema
destinaie.
Transformrile publice sunt divizate n urmtoarele categorii:
Administration - de exemplu: activarea/anularea restriciilor,
analizare tabela/schem,etc;
Character- de exemplu CHR, CONCAT, LDAP,LTRIM,etc;
Conversion - pentru realizarea conversiilor dintre tipurile de
date;
Date - asigur un numr de transformri specifice pentru datele
de tip date ;
Numeric - de exemplu ABS, SIN,FLOOR, etc;
OLAP - asigur accesul la procedurile de ncrcare a cubului i
dimensiunilor
Other - inclusiv transformri NVL;
XML - pentru a expune transformrile de ncrcare XML;
conexiunea la Runtime Repository (Runtime Repository
Connections) conine specificaiile de conectare la depozitul
central de rulare (runtime repository).
Datele provenite din surse multiple, att din fiiere, ct i din baze de
date de diferite generaii i productori, sunt preluate i ncrcate ntr-un
modul centralizat, numit modul surs i apoi acestuia i se aplic procesul de
extragere, transformare i ncrcare (ETL) ntr-un modul destinaie, din care
vor fi utilizate pentru analiz. Iat, pe scurt, obiectele acestor dou module:
1) Modulul surs se definete pe baza tabelelor din sistemelor
tranzacionale existente n cadrul instituiei. Pentru simplificarea procesului
de extragere i ncrcare a datelor n depozit se pot construi view-uri sau
tabele suplimentare care s prezinte datele ntr-o form asemntoare celor
din dimensiuni i fapte. Datele pot proveni fie din diverse fiiere, fie din
tabelele aplicaiilor operaionale pe diferite platforme ca Oracle, Microsoft,
SAP, Informix, Hyperion etc. Ele sunt centralizate i integrate n acest
modul pe care se va aplica procesul ETL.
2) Modulul destinaie va conine dimensiunile, tabelele de fapte,
cuburile i maprile necesare depozitului de date. n cadrul acestui modul se
pot defini urmtoarele elemente:
dimensiunile - Warehouse Builder permite proiectarea dimensional
(acesta reprezint un avantaj fa de cei mai importani concureni).
121

Cursul 6

Dimensiunile constau n unul sau mai multe niveluri i ierarhii i


conin atribute;
cuburile - sunt descrise de dimensiuni. Cuburile fac parte din
modelarea dimensional. n mod obinuit, un cub are legturi cu una
sau mai multe dimensiuni i conine msuri ale datelor care ne
intereseaz. ntr-o implementare relaional, cubul este realizat ca o
tabel relaional, n timp ce n mediul OLAP cubul este creat ca o
structur separat;
maprile - reprezint fluxuri de date necesare modelrii procesului
ETL (Extract, Transform and Load). Warehouse Builder genereaz
cod pentru implementarea maprilor n mediul de rulare (runtime).
Se poate genera cod n trei tipuri de limbaje n funcie de natura
sursei: PL/SQL, SQL Loader (n cazul n care sursa o reprezint
fiierele text) i ABAP (n cazul n care sursa e reprezentat de
tabelele din cadrul pachetelor de aplicaii SAP);
transformrile se prezint sub form de cod PL/SQL implementat
ca i funcie, procedur sau pachet. Warehouse Builder asigur
utilizatorului posibilitatea de a defini cod PL/SQL i de a-l include
ntr-o mapare pentru a implementa orice tip de transformare;
tabelele - definiii de tabele sunt folosite deseori n proiectarea unui
sistem de inteligen a afacerilor;
viziunile - se pot folosi viziuni pentru a simplifica eventualele
interogri de regsire;
viziunile materializate - pot fi foarte importante pentru a uura
cererile de regsire. Warehouse Builder permite definirea de viziuni
materializate;
tabelele externe - Warehouse Builder permite proiectarea tabelelor
externe n cadrul sistemului destinaie (target). Pentru a nu folosi
direct un fiier text ca i surs ntr-o mapare i a rula programul de
ncrcare SQL, se poate defini o tabel extern. Avantajele folosirii
definiiei unei tabele externe comparativ cu folosirea definiiei unui
fiier text sunt: rularea select-urilor n paralel i flexibilitate n cadrul
transformrilor PL/SQL, datorat posibilitii realizrii unui join
eterogen ntre tabelele externe i tabelele relaionale;
listele avansate (advanced queues) - pot fi folosite att ca surs ct
i ca destinaie ntr-o mapare;
secvene - definiiile de secvene pot fi folosite ca obiect surs ntr-o
mapare pentru a genera o valoare numeric n secven.
122

Cursul 6
Dup realizarea procesului de ncrcare n modulul destinaie,
Warehouse Builder valideaz obiectele i genereaz urmtoarele tipuri de
script-uri:
script-uri DDL pentru crearea i tergerea obiectelor de tipul
dimensiunilor, tabelelor de fapte, ierarhiilor;
fiiere de control SQL*Loader pentru extragerea i transportul
datelor pornind de la fiierul surs;
script-uri TCL pentru programarea i conducerea job-urilor
Enterprise Manager.
Prin intermediul utilitarului de transfer, Warehouse Builder Transfer
Wizard se permite exportul metadatelor ctre urmtoarele tipuri de
destinaie: un fiier n conformitate cu standardul OMG CWM, Oracle
Discoverer, Oracle Express i OLAP Server.
Datorit facilitilor sale, a posibilitilor de integrare a datelor din
surse multiple i diferite, dar i a mediului integrat de dezvoltare oferit, se
poate spune c Oracle Warehouse Builder 10g este cel mai potrivit
instrument de realizare a unui depozit de date.
3.2.3. Microsoft SQL Server 2005 Business Intelligence
Prin instrumentele Analysis Services, Microsoft SQL Server 2005
integreaz soluii avansate pentru depozite de date i Business Intelligence.
n prezentarea oficial a produsului, compania Microsoft [NET01]
precizeaz c Analysis Services ofer instrumente pentru realizarea unor
analize complexe asupra informaiilor stocate n baze de date de mari
dimensiuni.
Componenta Online Analytical Processing (OLAP) integrat n
cadrul acestei soluii, ofer posibiliti avansate de realizarea a analizelor
multidimensionale asupra datelor. Suplimentar, OLAP permite realizarea
analizei pe baza unor surse eterogene de informaie, componenta OLE DB
oferind posibilitatea de conectare la diverse alte sisteme de gestiune a
bazelor de date.
OLAP Actions, o nou facilitate din cadrul Analysis Services,
permite declanarea diverselor aciuni pe baza rezultatelor analizelor.
Analizele realizate prin intermediul instrumentelor OLAP pot deveni
accesibile prin intermediul Web-ului, fiind asigurat n acest mod un nivel
deosebit de mobilitate n accesarea informaiilor.
123

Cursul 6
SQL Server dispune de doi algoritmi (Microsoft Decision Trees i
Microsoft Clustering) care permit realizarea unor analize complexe prin data
mining.
Pentru realizarea analizelor i exploatarea avantajelor oferite de
Analysis Services este posibil integrarea cu diverse aplicaii. Instrumentele
Pivot Table i Pivot Chart, accesibile n cadrul suitei Microsoft Office, pot fi
utilizate pentru sintetizarea datelor rezultate n urma analizelor OLAP sau
data mining. Microsoft Data Analyzer este un instrument specializat dedicat
managerilor, care permite realizarea simpl a unor rapoarte i grafice pe
baza datelor furnizate de Analysis Services.
SQL Server 2005 Reporting Services este un instrument destinat
realizrii de rapoarte clasice i automate, disponibile la cerere sau generate
periodic ntr-o multitudine de formate de raportare (HTML, PDF, Excel).
Pentru o analiz comparativ prezentm n continuare un tabel cu
cteva soluii i instrumente existente de realizare i prelucrare a datelor
multidimensionale.
Dup cum se poate observa, instrumentele oferite de Oracle acoper
ntreaga gam a posibilitilor de stocare i prelucrare a unui depozit de
date, iar prin facilitile de transfer i comunicare ntre aceste instrumente se
poate dezvolta o soluie complex de depozit de date n funcie de
necesitile de realizare.

Opiuni de
Baza de date
procesare multirelaional
dimensional
Motorul server
Oracle Express
Multi(ROLAP mode)
dimensional
Oracle AWM
Oracle Warehouse
Builder
Crystal Holos (ROLAP
mode)
IBM DB2 OLAP Server
CA EUREKA:Strategy
Longview Khalix
Informix MetaCube
Speedware Media/MR
Microsoft Analysis
Services

124

Baza de date
multidimensional
Oracle Express
Oracle Warehouse
Builder
SAS CFO Vision
Crystal Holos
Comshare Decision
Hyperion Essbase
Gentia
Speedware Media/M
Microsoft Analysis
Services
PowerPlay Enterprise
Server
Pilot Analysis Server

Fiiere
Oracle
Warehouse
Builder

Cursul 6
Pilot Analysis Server
Sagent
Applix iTM1
WhiteLight

Applix iTM1

Oracle Discoverer
Informix MetaCube

Comshare FDC
Dimensional Insight
Hyperion Enterprise
Hyperion Pillar
PwC CLIME

Motorul client
Multidimensional

Oracle Personal
Express
Brio.Enterprise
BusinessObjects
Cognos
PowerPlay
iTM1
Perspectives

Tabel 3.1 Opiuni de stocare i prelucrare a datelor


multidimensionale

3.3. Instrumente utilizate pentru migrarea datelor


Migrarea datelor se poate face manual sau folosind anumite instrumente.
Pornind de la baza de date surs se export structura, obiectele i datele
acesteia n scripturi SQL. Acestea sunt apoi adaptate la sintaxa bazei de date
destinaie, pentru a putea fi rulate pe aceasta, proces care poate fi unul
deosebit de anevoios. De aceea, se recomand folosirea unui asistent de
migrare, care s faciliteze acest proces. El trebuie s ndeplineasc ct mai
multe din urmtoarele cerine:
1. S ofere o soluie cuprinztoare i integrat
Asistentul de migrare trebuie s asigure nu doar conversia datelor, ci ntregii
scheme a bazei de date i algoritmului. Trebuie convertite i datele de tip
LOB (imagini, video), definiiile de tabele incluznd i tipurile de date, tipul
NULL, valorile implicite i comentariile, cheile primare, unice i externe,
viziunile, funciile/ procedurile/pachetele stocate. Dac aceste faciliti nu
sunt oferite de baza de date, asistentul trebuie s poat oferi soluii
alternative (spre exemplu, conversia pachetelor n funcii i proceduri, dac
125

Cursul 6
baza de date destinaie nu are suport nativ pentru pachete). Pe lng
diferenele de sintax, software-ul trebuie s rezolve problemele legate de
cuvinte rezervate i de conflicte de identificatori. Dac se schimb numele
unei tabele sau unei coloane, modificarea trebuie reflectat automat n toate
funciile sau tabelele care refer acea tabel sau coloan. Software-ul de
migrare trebuie s cunoasc particularitile fiecrei baze de date. Spre
exemplu, MySQL impune definirea de indeci pe coloanele care sunt
folosite ca i chei externe pentru alte tabele. Dac aceste cerine nu sunt
ndeplinite i se convertesc doar datele, restul de obiecte trebuiesc convertite
manual sau cu un alt asistent de migrare.
2. S ofere o soluie flexibil pentru definirea regulilor globale
Structura bazei de date nu trebuie modificat prea mult n timpul conversiei,
deoarece ar trebui rescrise aplicaiile, ceea ce ar face migrarea foarte
scump. Exist cazuri n care trebuie schimbatmodul implicit de conversie
ntre dou tipuri de date sau modul de redenumire a
coloanelor/tabelelor/funciilor care n noua baz de date sunt nume
rezervate. Implicit, aceste nume sunt puse ntre ghilimele sau apostroafe, dar
pentru muli dezvoltatori acest lucru poate fi un inconvenient, deoarece vor
trebui s fie folosite ghilimelele de fiecare dat cnd este referit
tabela/coloana respectiv. Toate aceste reguli trebuie s poat fi definite
global i s fie aplicate pentru toate obiectele.
3. S faciliteze migrarea aplicaiilor
Dup migrarea bazei de date, aplicaiile sunt de obicei modificate, fr a
afecta ns structura bazei de date. Aceste modificri vor conduce la
schimbarea sintaxei comenzilor SQL n cazul n care acest lucru este impus
de noul SGBD,dar i rezolvarea de incompatibiliti de interfa. Aplicaiile
scrise doar n SQL sunt n general uor de migrat. E mai dificil n cazul unei
aplicaii scrise, spre exemplu n Visual C+, care apeleaz o baz de date
Oracle printr-un ODBC. Sunt imposibil de migrat aplicaiile scrise ntr-un
mediu proprietar (spre exemplu Orace Developer Suite). Pentru ca acest
lucru s se desfoare ct mai uor asistentul, trebuie s raporteze
modificrile realizate n structura bazei de date n timpul conversiei ct i
posibilele incompatibiliti de interfa ntre aplicaii i noua baz de date.
4. S ofere performane ridicate
Deoarece bazele de date stocheaz volume mari de date, migrarea
trebuie s se realizeze n cel mai rapid mod posibil. Comenzile LOAD DATA
INFILE din MySQL i IMP din Oracle sunt de 20 de ori mai rapide dect
importul folosind INSERT din SQL. Asistentul de migrare trebuie s
126

Cursul 6
foloseasc aceste faciliti i s recurg la INSERT din SQL prin interfaa
ODBC doar dac nu exist alt alternativ mai rapid. Este necesar ns i
exportul structurii tabelelor n scripturi SQL i a datelor n formate ASCII
(CSV, Tab Delimited, SQL Insert).
5. S ofere posibiliti de personalizare
Se dorete ca migrarea s fie automatizat n procent de 100%, dar asistenii
de migrare existeni pot oferi o automatizare de pn la 95%. Dar, chiar i
numai 5% de obiecte care nu au fost migrate automat pot genera mari
probleme. De aceea, este foarte important ca productorul asistentului s
ofere servicii de personalizare pentru fiecare proiect n parte, pentru a
micora la minim conversia manual.
6. S ofere posibiliti de migrare ntre ct mai multe sisteme de baze
de date, inclusiv pentru bazele de date distribuite.
Fiecare productor de SGBD pune la dispoziie un asistent pentru preluarea
de date din alte baze de date. Exist ns i asisteni mai generali, care
suport mai multe baze de date ca surs i ca destinaie.
3.3.1. Oracle Migration Workbench
Acest utilitar asigur migrarea datelor i procedurilor stocate n
Oracle din alte baze de date. Cea mai recent versiune aprut este 10.1.0.4.
Obiectul

MS SQL
Server & MS Access
Sybase

Informix

MySQL DB2/400 DB2/UDB

Tabele

Viziuni

D
(Interogari)

Indexes

Groupuri/Roluri

Utilizatori

Restrictii

D
(Reguli)

Drepturi

Tipuri de date
definite de
utilizator

N/A

Proceduri

127

Cursul 6
stocate
Declanatori

Embedded SQL

ESQL/C
Pro*C

N/A

Obiectele
schemei
migrate n
obiecte
utilizator

Alte opiuni

N/A

Relaii,
tabele
de Tipuri de
legtur,
date
Support
reutilizarea
colecie, ENUM
codului
secvene.
aplicaiei.

Tabel 3.2 Migrare folosind Oracle WorkBench (D=DA, N=NU,


I=INDISPONIBIL)
3.3.2. Utilitarele SQL*Loader i Import/Export
Oracle Database Server are trei utilitare ncrcarea i descrcarea
datelor dintr-o baz de date: Export, Import i SQL*Loader. Utilitarele
Import i Export lucreaz mpreun: Export trimite definiiile bazei de date
i datele efective unui fiier de export i Import poate citi fiierul pentru a
efectua diferite activiti. Se poate utiliza Import i Export pentru diverse
activiti importante ale bazei de date: restaurarea unei tabele, generarea de
comenzi script CREATE, copierea datelor ntre baze de date Oracle,
migrarea ntre versiuni Oracle, mutarea tabelelor dintr-o schem n alta.
SQL*Loader este asemntor cu Import n modul n care ncarc
datele, diferena principal este aceea c utilitarul Import poate citi numai
fiiere de export Oracle, iar SQL*Loader poate citi i fiiere text generate
de baze de date non-Oracle. SQL*Loader utilizeaz un fiier de control
pentru a comunica utilitarului cum s ncarce datele.
Utilitarele Import i Export pot efectua urmtoarele operaii:
1.
Arhivarea i recuperarea datelor. Probabil cea mai folosit
caracteristic a acestor utilitare este capacitatea de a servi ca o soluie
de arhivare. Majoritatea soluiilor Oracle utilizeaz arhivri on-line
sau hot pentru a arhiva ntreaga baz de date, n eventualitatea unui
defect hardware sau software. Acestea funcioneaz bine, deoarece
toate datele pot fi restaurate la o miime de secund fa de momentul
prbuirii bazei de date. Dac o singur tabel din ntreaga baz de
date are nevoie de recuperare n timpul unei arhivri complete,
ntreaga baz de date va trebui recuperat pe un alt calculator, iar
tabela respectiv s fie copiat la loc. Export permite ca dintr-un fiier
ce conine ntreaga baz de date, s poat fi extrase un utilizator, o
tabel sau orice alt obiect.
128

Cursul 6
2.

Copierea obiectelor ntre scheme (utilizatori). Utilitarele pot fi


utilizate pentru a copia de la o schem la alta toate tipurile de obiecte:
tabele, indeci, drepturi, proceduri, viziuni. Se pot specifica obiectele
care se doresc mutate, specificnd schemele surs i destinaie prin
(utilizatorii) prin FROM i TO. Pentru a copia tabele ntre utilizatori,
acestea trebuie s aib permisiunile corecte. CREATE ANY TABLE este
necesar pentru a crea tabele n contul destinaie. n plus, oricare din
permisiunile SELECT sau EXP_ANY_TABLE trebuie acordate
utilizatorului care efectueaz exportul. Spaiile de tabele trebuie s fie
suficient de mari pentru ca tabelele s poat fi create.
Exemplu:
Pentru a exporta datele din tabelele departamente i angajai din
utilizatorul datef, se poate utiliza urmtoarea comand:
Exp userid=system/manager@oracle9i tables=datef.departamente,
datef.angajai

La importarea datelor, poate aprea una din urmtoarele situaii:


Dac tabelele departamente i angajai nu exist n utilizatorul
test, se poate folosi urmtoarea sintax:
imp userid=system/manager@oracle9i from user=datef to user=test
tables=departamente, angajai

Dac tabele exist deja n userul test, dar nu conin date se


poate utiliza parametrul IGNORE=Y:
imp userid=system/manager@oracle9i from user=datef touser=test
tables=departamente, angajai IGNORE=Y

Dac exist n utilizatorul test una din tabelele departamente


sau angajai, acestea trebuie trunchiate nainte de import
pentru a evita s existe date duplicate sau respinse (din cauza
cheilor primare sau unice).
Copierea obiectelor ntre baze de date Oracle. O tabel se poate
exporta dintr-o baz de date i s fie importat n alta (chiar i de alt
versiune). Sunt situaii n care sunt exportate tabele cheie (sau cele ce
se modific) i sunt trimise ctre o locaie ndeprtat unde se poate
utiliza Import pentru a ncrca datele n baza de date local. Aceasta
este o form de replicare a datelor la distan cu o singur direcie.
Generarea comenzilor script de tip CREATE. Export i Import conin
opiuni puternice ce permit generarea de comenzi script pentru crearea
de tabele, viziuni, indeci, proceduri/funcii/pachete stocate sau orice
alt obiect, spaii de tabele, segmente rollback, acordare de drepturi, etc.
Acestea sunt folositoare pentru refacerea structurii bazei de date.
Generarea de fiiere script se face folosind opiunile SHOW i LOG

3.

4.

129

Cursul 6

5.

6.

pentru a salva comenzile SQL ntr-un fiier script, listat n ordinea


corect a dependenelor (adic o tabel este creat naintea unui index,
cheile primare naintea cheilor externe, amd). Formatarea rezultatului
nu este corect din punct de vedere sintactic, aprnd ghilimele aezate
necorespunztor, sau cuvinte desprite pe dou linii, rezultate care
necesit modificare manual.
Migrarea bazei de date de la o versiune Oracle la alta. Se poate
efectua upgrade, iar uneori downgrade folosind Import i Export. De
exemplu, se poate exporta o baz de date Oracle8i, copia fiierul pe un
calculator avnd Oracle9i i importa fiierul. Se recomand ca
importul i exportul s se fac cu utilitarele versiunii de baz de date
destinaie.
Defragmentarea unui spaiu de tabel. Fragmentarea se produce
atunci cnd tabelele i indecii sunt creai, teri, mrii i redui de
mai multe ori ntr-o perioad de timp. Acest fapt determin ca spaiul
liber s fie desprit n mai multe buci. Dac sunt mai multe blocuri
mici de spaiu liber n loc de cteva spaii mari, s-ar putea ca anumite
obiecte s nu poat fi create sau anumite tabele s nu poat fii
populate. Defragmentnd tabelele de spaiu, datele sunt reorganizate,
astfel nct tot spaiul liber este aezat ntr-o singur zon, iar spaiile
obiectelor sunt grupate alturat. Utilitarele Import i Export pot
rezolva fragmentarea n dou feluri: fie proceseaz o tabel cu spaii
multiple pentru a o redimensiona ntr-o tabel cu un singur spaiu mai
mare care va avea dimensiunea total a spaiilor anterioare, fie alipete
obiectele din spaiile de tabele, n timp ce transform spaiile libere
ntr-un spaiu liber mai mare. Metoda cea mai uoar de rezolvare a
problemei este urmtoarea: Se export baza de date, specificnd
FULL=Y i COMPRESS=Y. FULL=Y export ntreaga baz de date,
iar COMPRESS=Y indic compresarea spaiilor. Dup aceea se terge
i se recreeaz ntreaga baz de date, iar importul se face cu parametrul
FULL=Y.
SQL*Loader poate efectua urmtoarele operaii:
a. ncrcarea datelor ntr-o baz de date Oracle dintr-o baz de date
non-Oracle. Utilitarul SQL*Loader este folosit pentru analizarea i
ncrcarea fiierelor text n tabele Oracle. Multe produse non-Oracle
cum ar fi Microsoft Excel, Acces, SQL Server, Lotus 1-2-3,
SyBase, Informix pot salva date ntr-un fiier cu lungime fix,
variabil sau ntr-un fiier delimitat. Un fiier cu lungime fix are un
numr de caractere specificat pentru fiecare coloan n tabel. De
exemplu, dac specificarea este de 50 de bytes si exist doar 20 de
130

Cursul 6

b.

c.

d.
e.

f.

bytes n coloana nregistrri, vor fi adugate 20 de spaii libere. n


acest fel Oracle tie unde s caute fiecare coloan. ntr-un fiier
delimitat existnun caracter special (de obicei, un tab sau o virgul)
care separ fiecare coloan pentru fiecare nregistrare. n general,
datele de tip ir de caractere sunt puse ntre ghilimele, iar dac
delimitatorul se regsete ntre acestea el este ignorat.
nlocuirea datelor existente cu date noi. SQL*Loader poate s
nlocuiasc nregistrrile existente ntr-o tabel cu nregistrrile care
sunt ncrcate. Acesta metod este cunoscut sub denumirea de
REPLACE. O metod asemntoare este TRUNCATE, mai rapid
dect REPLACE, n care toate nregistrrile sunt ndeprtate din
tabel nainte ca noile date s fie introduse.
Obinerea unui set cu datele invalide. SQL*Loader poate crea
fiiere ce listeaz toate nregistrrile care nu ndeplinesc condiiile
specificate, sau datele formatate n mod incorect. Aceste fiiere pot fi
analizate dup ncrcare, i, dac se dorete acest lucru, datele pot fi
terse i rencrcate.
Lucrul la nivel logic cu datele n timpul ncrcrii. Se pot specifica
condiii WHEN astfel nct numai anumite tipuri de nregistrri s fie
ncrcate.
ncarcarea datelor din surse multiple n mod simultan.
nregistrrile fizice multiple se pot combina ntr-o singur
nregistrare a bazei de date, utiliznd clauza CONTINUE IF...THIS n
fiierul de control din SQL*Loader. Pentru ca acesta s funcioneze,
fiierul text trebuie setat ntr-un mod special. Alt metod este
ncrcarea surselor multiple n tabele temporare n baza de date i
apoi unirea acestora folosind SQL.
ncarcarea datelor n tabele multiple. Aceast opiune din
SQL*Loader permite specificarea coloanelor care merg ntr-o tabel
i coloanelor care merg n alta. Se pot chiar repeta coloanele de
ncrcare n mai multe tabele ale bazei de date. Un avantaj este
faptul ca setul de tabele al bazei de date s fie normalizat, fiecare
tabel cu o cheie primar folosit pentru jonciune, caz n care
SQL*Loader poate ncrca coloanele adecvate n fiecare tabel n
timp ce copiaz cheia primar n fiecare tabel pentru fiecare
nregistrare din fiierul text.

131

Cursul 6

Figura 3.2. SQL* Loader


SQL Loader este invocat folosind comanda sqlldr, eventual cu
parametrii pentru a stabili caracteristicile sesiunii. n situaia n care
parametrii se modific rar, este mai eficient a se specifica parametrii,
grupndu-i ntr-un fiier de parametrii specificat mai apoi n linia de
comand folosind parametrul PARFILE. Anumii parametrii pot fi inclui n
fiierul de control al SQL*Loader-ului folosind clauza OPTIONS. Totui
valorile parametrilor specificate n linia de comand suprascriu valorile din
fiierele din parametri sau cei din clauza OPTIONS.
Fiierul de control este un fiier text scris dup o structur pe care
SQL*Loader-ul o nelege. Acest fiier i spune unde se gsesc datele, cum
s le citeasc i cum s le interpreteze, unde s le insereze i nc cteva alte
lucruri. Se poate spune c fiierul de control are trei seciuni, dei acestea nu
sunt definite prea precis:
Prima seciune conine informaii generale despre sesiune,
printre acestea: opiuni globale, cum ar fi numrul de rnduri,
numrul de rnduri peste care s sar, clauza INFILE (care
specific unde sunt localizate datele).
A doua seciune este alctuit din unul sau mai multe blocuri
INTO TABLE. Fiecare dintre aceste blocuri conine informaii
despre tabele n care se ncarc datele, cum ar fi numele
acesteia i coloanele care o alctuiesc.
132

Cursul 6
A treia seciune este opional i poate conine datele efectiv
de ncrcat. Sintaxa fiierului de control este liber,
comenzile putndu-se extinde pe mai multe linii i nu se face
diferena ntre literele mari i cele mici (case insensitive), cu
excepia irurilor de caractere aflate ntre ghilimele, care sunt
luate ca atare. Cuvintele CONSTANT i ZONE au o
semnificaie aparte pentru SQL*Loader i de aceea nu se
recomand folosirea acestor denumiri pentru tabele sau
coloane.
Fiierele de date de intrare. SQL*Loader citete datele din unul sau
mai multe fiiere specificate n fiierul de control. Din punctul lui de vedere,
datele din fiierele de intrare sunt organizate n nregistrri. O nregistrare
poate fi n format fix, variabil sau stream. Formatul nregistrrilor este
specificat n fiierul de control, mai exact prin parametrul INFILE. Dac nu
este specificat nici un format, implicit se folosete tipul delimitat (stream).
a. Un fiier este n format fix cnd toate nregistrrile au aceeai
lungime. Dei acest format este cel mai puin flexibil, este n
schimb cel mai performant. Se specific faptul c fiierul de date
este n format fix astfel: INFILE 'nume_fiier_date ' "fix n", unde n
este lungimea n octei a fiecrei nregistrri.
Fiierul de date din urmtorul exemplu conine cinci nregistrri,
prima nregistrare [001, cd,] avnd 11 octei considerndu-se c
fiecare caracter ocup un octet, iar delimitatorul de rnd nc un
octet.

Ldr.sql
load data
infile 'example.dat' "fix 11"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1, col2)
example.dat:
001, cd, 0002,fghi,
00003,lmn,
1, "pqrs",
0005,uvwx,

Importul se lanseaz astfel:


sqlldr userid=user/parola@bazadate control=ldr.sql log=log.txt

b. Un fiier este n format variabil cnd lungimea fiecrei


nregistrri, n cazul unui cmp de tip caracter, se afl la
nceputul fiecrei nregistrri din fiierul de date. Formatul acesta
este mai flexibil dect cel anterior i aduce un spor de
133

Cursul 6
performan fa de cel de tip stream. Spre exemplu, se poate
specifica ca un fiier de date s fie interpretat n format variabil
astfel: INFILE 'nume_fiier_date' "var n", unde n reprezint
numrul de octei ai fiecrui cmp de specificare a lungimii
nregistrrii. Dac n nu este specificat, i se atribuie valoarea
implicit 5, iar dac i este atribuit o valoare mai mare de 40 va
rezulta o eroare.
n exemplul urmtor, fiierul de control spune SQL*Loader-ului
s caute datele n fiierul example.dat i se ateapt un format
variabil, n care cmpurile au maxim 3 octei. Fiierul de date
example.dat conine trei nregistrri. Prima nregistrare este de
009 octei, a doua este de 010 octei (include i caracterul de rnd
nou), iar a treia de 012 octei (de asemenea, e inclus caracterul de
rnd nou).
load data
infile 'example.dat' "var 3"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
col2 char(7))
example.dat:
009salut,cd,010carte,im,
012my,name is,

c. Un fiier este n format delimitat (stream), cnd nu se specific


lungimea nregistrrilor. SQL*Loader formeaz nregistrri,
cutnd terminatorul de nregistrare. Acest format este cel mai
flexibil, dar i cel mai puin performant. Pentru ca un fiier de date
s fie prelucrat ca fiind n format delimitat se specific: INFILE
nume_fisier_date ["str terminator_sir"]. Terminatorul poate fi
specificat n format caracter, ntre ghilimele (de exemplu ",") sau
ca un octet n baza 16. Cnd un terminator conine un caracter
special, neimprimabil, el trebuie specificat n format hexa. Totui
exist anumite caractere neimprimabile care pot fi specificate n
format caracter astfel:
\n indic linia nou;
\t indic tabul orizontal;
\f indic form feed;
\v indic tab vertical;
\r indic carriage return.
134

Cursul 6
Dac setul de caractere nu este specificat prin parametrul
NLS_LANG, iar setul de caractere a sesiunii curente este diferit fa
de cel din fiierul de date, caracterele sunt convertite n setul de
caractere a acestuia. Aceast conversie se realizeaz nainte de
cutarea terminatorului de nregistrare. Pe platformele Unix, dac nu
este specificat nici un terminator, cel implicit este '\n'. Pe o platform
Windows, dac nu este specificat terminatorul, SQL*Loader
folosete \n sau \r\n, mai exact pe care l gsete primul. Dac
terminatorul dorit este \r\n i \n se afl mai nainte, trebuie specificat
explicit terminatorul. n exemplul urmtor este specificat
terminatorul '|\n'.
load data
infile 'example.dat' "str '|\n'"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
col2 char(7))
example.dat:
hello,world,|
ileana,alina,|

SQL*Loader organizeaz datele de intrare n nregistrri fizice, n


funcie de formatul specificat. Implicit, o nregistrare fizic este echivalent
cu una logic, dar SQL*Loader-ul poate combina mai multe nregistrri
fizice ntr-una logic. El poate combina un numr fix de nregistrri fizice
pentru a forma fiecare nregistrare logic sau poate combina nregistrrile
fizice n cele logice, att timp ct o anumit condiie este adevrat.
ncepnd cu Oracle9i, sunt suportate nregistrri mai mari dect 64KB.
Acest lucru reduce nevoia de a se despri nregistrrile logice n mai multe
nregistrri fizice. Pentru asamblarea la loc a nregistrrilor fizice n
nregistrri logice se pot folosi CONCATENATE sau CONTINUEIF. Se va
folosi CONCATENATE cnd se dorete ca SQL*Loader s combine mereu
acelai numr de nregistrri fizice pentru a forma o nregistrare logic. n
exemplul urmtor, integer specific numrul de nregistrri fizice de
combinat: CONCATENATE integer. Valoarea integer specificat determin
numrul de structuri de nregistrri fizice pe care SQL*Loader le aloc
pentru fiecare rnd din vectorul coloanelor. Deoarece valoarea implicit
pentru COLUMNARRAYROWS este mare, dac se va specifica o valoare
mare i pentru CONCATENATE este posibil s apar erori din cauza
memoriei insuficiente. Performana se poate mbunti prin reducerea
135

Cursul 6
valorii parametrului COLUMNARRAYROWS (reducnd numrul de rnduri
ntr-un vector de coloane).
Se poate folosi i CONTINUEIF, dac numrul de nregistrri fizice
ce trebuie combinate variaz. Clauza CONTINUEIF este urmat de o
condiie, care va fi evaluat pentru fiecare nregistrare fizic, n timp ce este
citit. Spre exemplu, dou nregistrri pot fi combinate dac semnul diez (#)
se afl pe poziia 80 a primei nregistrri. Dac la aceast poziie se afl
orice alt caracter, a doua nregistrare nu este concatenat cu prima. Poziiile
specificate n clauz se refer la poziia din fiecare nregistrare fizic,
aceasta fiind singura situaie n care sunt referite poziii din nregistrrile
fizice. Orice alte referine au n vedere nregistrrile logice. Pentru
CONTINUEIF THIS i CONTINUEIF LAST, dac parametrul PRESERVE
nu este specificat, cmpul de continuare este ters din toate rndurile fizice
unde nregistrarea logic este asamblat. Spre exemplu, dac se specific
CONTINUEIF THIS(3:5)='***' este specificat, atunci poziiile de la 3 la 5
sunt terse din toate nregistrrile, chiar dac pe aceste poziii se afl
caracterele de continuare (***). n cazul CONTINUEIF THIS i
CONTINUEIF LAST, dac este specificat parametrul PRESERVE, cmpul
de continuare este meninut.
Exemplu (CONTINUEIF THIS fr parametrul PRESERVE)
Se presupune cazul unor nregistrri fizice de 14 octei, n care
punctul reprezint un spaiu:
%%aaaaaaaa....
%%bbbbbbbb....
..cccccccc....
%%dddddddddd..
%%eeeeeeeeee..
..ffffffffff..

Dac clauza CONTINUEIF THIS nu conine parametrul PRESERVE:


CONTINUEIF THIS (1:2) = '%%'
n acest caz dac, '%%' se afl pe primele dou poziii ale unei
nregistrri fizice (rnd), urmtoarea nregistrare este concatenat dup
aceasta, nemeninndu-se caracterele de continuare:
aaaaaaaa....bbbbbbbb....cccccccc....
dddddddddd..eeeeeeeeee..ffffffffff..

136

Cursul 6
Dac clauza CONTINUEIF THIS folosete parametrului
PRESERVE, caracterele de continuare '%%' sunt meninute i dup
concatenare:
CONTINUEIF THIS PRESERVE (1:2) = '%%'
n acest caz, nregistrrile logice sunt asamblate astfel:
%%aaaaaaaa....%%bbbbbbbb......cccccccc....
%%dddddddddd..%%eeeeeeeeee....ffffffffff..

Dup formarea nregistrrilor logice, sunt setate cmpurile de date


din cadrul acestora. Setarea cmpurilor este un proces n care SQL*Loader
folosete specificaiile din fiierul de control pentru a determina care parte a
nregistrrilor logice corespunde fiecrui cmp din fiierul de control. Este
posibil ca pentru dou sau multe specificaii, s se refere la aceleai date. De
asemenea, este posibil ca o nregistrare logic s conin date care nu sunt
referite de nici o specificaie a fiierului de control. De cele mai multe ori,
specificaiile cmpurilor din fiierul de control se refer la o parte din
nregistrrile logice.
Fiierele de tip LOB i cele secundare. Fiierele de tip LOB sunt
suficient de mari pentru a fi ncrcate din fiiere speciale: LOBFILE. n
aceste fiiere datele, cmpurile nu sunt organizate n nregistrri i de aceea
lucrul destul de anevoios cu acestea este evitat. Spre exemplu se pot folosi
fiiere LOBFILE pentru a ncrca mrcile, numele i CV-urile angajailor. n
acest caz marca i numele pot fi citite din fiierul normal de date, iar CVurile, care sunt mai voluminoase, din fiierele LOBFILE. Aceste fiiere pot
fi folosite i pentru o ncrcare mai facil a datelor de tip XML.
Fiierele secundare de date (SDF) sunt similare celor principale: o
colecie de nregistrri, fiecare nregistrare fiind alctuit din cmpuri.
Acestea trebuie specificate n fiierul de control (folosind parametrul SDF)
i sunt folosite n special pentru a ncrca tabele imbricate.
LOAD DATA
INFILE 'sample.dat'
INTO TABLE person_table
FIELDS TERMINATED BY ','
(name
CHAR(20),
"RESUME"
LOBFILE(CONSTANT 'jqresume') VARCHARC(4,2000))
Datafile (sample.dat)
Johny Quest,
Speed Racer,
Secondary Datafile (jqresume.txt)
0501Johny Quest
500 Oracle Parkway
...
0000

137

Cursul 6
VARCHARC(4,2000) arat c primii patru octei (caractere) trebuie
s fie interpretai ca lungimea fiierului (spre exemplu, 0501 arat ca fiierul
LOB conine 501 de caractere, iar 0000 arat c fiierul LOB nu conine
date) i c dimensiunea maxim a cmpului este de 2000 de caractere.
Conversia datelor. n timpul unei ncrcri obinuite, cmpurile din
fiiere sunt copiate i convertite n coloanele din baza de date. Conversia se
face n doi pai:
SQL*Loader folosete specificaiile cmpurilor din fiierul de
control pentru a interpreta formatul fiierului de date, pentru a analiza
fiierele de intrare i pentru a popula vectorii ce corespund unei comenzi
INSERT.
Baza de date accept datele i execut comenzile INSERT.
Baza de date folosete tipul de dat a coloanei pentru a converti
datele n formatul n care vor fi stocate. Trebuie inut cont de faptul c exist
o diferen ntre tipurile de date ale cmpurilor definite n fiierul de control
al SQL*Loader-ului i cele ale coloanelor din baza de date.
nregistrrile cu erori. nregistrrile citite din fiierele de date pot s
nu fie inserate n baza de date, ele regsindu-se ntr-un fiier cu nregistrri
eronate (bad file) sau ntr-un fiier cu nregistrri ignorate (rejected file).
Fiierul cu nregistrri eronate conine nregistrrile care au fost respinse fie
de Loader, fie de baza de date. Fiierele de date sunt respinse de
SQL*Loader cnd formatul de intrare este eronat. Spre exemplu, dac nu
exist un caracter delimitator, sau dac un cmp este mai mare dect
dimensiunea maxim. Un fiier de date procesat de SQL*Loader este trimis
bazei de date pentru a fi inserat ntr-o tabel ca o nregistrare. Dac baza de
date determin c nregistrarea este valid, ea este introdus n tabel, iar
dac nu, ea este respins i SQL*Loader-ul o introduce n fiierul cu date
eronate. O nregistrare poate fi invalid deoarece: o cheie nu este unic, un
cmp obligatoriu este NULL sau nu este ndeplinit alt condiie de
integritate, datele sunt invalide pentru tipul de dat al coloanei din baza de
date, etc. SQL*Loader poate crea, la cerere, un fiier cu datele ignorate.
Aceste date sunt cele care nu au trecut de filtrare pentru c nu au corespuns
nici unui criteriu de selecie specificat n fiierul de control. Se poate
specifica numrul maxim de nregistrri care s fie inserate n acest fiier.
Fiierul de log. Cnd SQL*Loader ncepe execuia, el creeaz un
fiier de log care va conine detalii despre ncrcarea datelor i despre erorile
aprute. Dac acest fiier nu poate fi creat, execuia nu se mai desfoar.
Acest fiier este creat implicit n acelai director cu fiierul de control.

138

Cursul 6
3.3.3. Ispirer SQLWays
Este un asistent de migrare foarte bun pentru importul datelor n
MySQL, el suportnd numeroase baze de date, att ca surs (DB2, Oracle,
SQL Server, SyBase, SAP, Access, Lotus Notes, Foxpro, Dbase), ct i ca
destinaie (DB2, SqlServer, Oracle, SyBase, Pervasive SQL). Cea mai
recent versiune aprut este 3.9 i suport ca surs i destinaie cele mai
recente versiuni ale SGBD-urilor (DB/2 8.2, Oracle 10g, MySql 5.x, MS
SQL Server 2005, .a.). Acest utilitar d posibilitatea administratorului de
baz de date s intervin n convertirea implicit a tipurilor de date prin
definire unor reguli globale.
SQLWays rezolv situaiile aprute datorit conflictelor de
identificatori sau datorit unei denumiri de obiect din baza de date surs care
este cuvnt rezervat n baza de date destinaie. Cnd se redenumete un
astfel de obiect, asistentul realizeaz modificrile necesare n toate obiectele
care l refereau. SQLWays poate exporta baza de date surs n script SQL,
ceea faciliteaz folosirea altor utilitare sau limbaje de script (Perl spre
exemplu). SQLWays realizeaz rapoarte despre modificrile suferite n
timpul conversiei i faciliteaz conversia aplicaiilor. Ca i utilitarele pentru
migrare oferite de Oracle sau IBM pentru propriile lor baze de date,
SQLWays realizeaz exportul i importul n modul cel mai rapid disponibil.
3.3.4. Embarcadero DT/Studio
Este optimizat pentru folosirea n cazul depozitelor de date i este
orientat mai ales pe transferul i transformarea de date. Suport, de
asemenea, modelarea datelor i ingineria invers (pentru a converti i
schema bazei de date) poate converti i schema bazei de date. DT/Studio
este recomandat n cazul cnd este necesar o reproiectare important a
bazei de date, deoarece pune la dispoziie numeroase funcii i faciliti de
transformare.
DT/Studio
nu
suport
conversia
funciilor/procedurilor/pachetelor stocate n baza de date.
3.3.5. Microsoft DTS
i acest utilitar se concentreaz pe transferul de date i pune la
dispoziie scripturi, Visual Basic pentru transformri de date. Se pot redefini
tipurile de date pentru fiecare tabel i se pot schimba denumirile de tabele
sau de coloane, dar este necesar o intervenie important din partea
utilizatorului pentru ca migrarea s se fac complet. DTS ofer faciliti
139

Cursul 6
limitate de conversie a schemei bazei de date, nesuportnd chei primare,
unice sau externe, valori implicite sau comentarii.

3.4. Testarea instrumentelor


3.4.1. Migrarea din Oracle folosind XML
Se d tabela Srbtori cu urmtoarea structur (n Oracle 10g):
Name Type
Nullable Comments
---- ------------------------- --------- ----------------------DATA DATE
Data calendaristica
TIP VARCHAR2(1) Y
R -Religioasa,L-Legala
DEN VARCHAR2(25) Y
Denumire

Folosind procedura de mai jos, se export tabela srbtori n


format XML. Dac nu se seteaz DBMS_XMLGEN.setMaxRows(qryCtx, 5),
ntregul document se va regsi n cmpul result de tip CLOB din tabela
temp_clob_tab. Dac se seteaz acest parametru i tabela srbtori are 6
nregistrri n temp_clob_tab se vor gsi dou nregistrri, una coninnd un
document cu 5 elemente i a doua coninnd un singur document cu un
element.
DECLARE
qryCtx DBMS_XMLGEN.ctxHandle;
result CLOB;
BEGIN
qryCtx := dbms_xmlgen.newcontext('SELECT * from sarbatori');
DBMS_XMLGEN.setRowTag(qryCtx, 'SARBATORI');
DBMS_XMLGEN.setMaxRows(qryCtx, 5);
LOOP
result := DBMS_XMLGEN.getXML(qryCtx);
EXIT WHEN
DBMS_XMLGEN.getNumRowsProcessed(qryCtx) =0;
INSERT INTO temp_clob_tab VALUES(result);
END LOOP;
END;
/

n tabela temp_clob_tab obinem dou nregistrri, una cu documentul:


<?xml version="1.0"?>
<ROWSET>
<SARBATORI>

140

Cursul 6
<DATA>01-JAN-06</DATA>
<TIP>L</TIP>
<DEN>Anul nou</DEN>
</SARBATORI>
<SARBATORI>
<DATA>02-JAN-06</DATA>
<TIP>L</TIP>
<DEN>Anul nou</DEN>
</SARBATORI>
<SARBATORI>
<DATA>24-APR-06</DATA>
<TIP>R</TIP>
<DEN> Prima zi de Paste</DEN>
</SARBATORI>
<SARBATORI>
<DATA>25-DEC-06</DATA>
<TIP>R</TIP>
<DEN>Craciun</DEN>
</SARBATORI>
<SARBATORI>
<DATA>26-DEC-06</DATA>
<TIP>R</TIP>
<DEN>Craciun</DEN>
</SARBATORI>
</ROWSET>

i cealalt cu o singur nregistrare.


<?xml version="1.0"?>
<ROWSET>
<SARBATORI>
<DATA>01-DEC-06</DATA>
<TIP>L</TIP>
<DEN>Ziua Nationala</DEN>
</SARBATORI>
</ROWSET>

Se poate schimba denumirea nodului principal din ROWSET folosind


funcia
setRowsetTag,
spre
exemplu:
dbms_xmlgen.setRowsetTag(qryCtx,'RANDURI'). Documentul astfel obinut
poate fi uor exportat n alt baz de date cu suport nativ de XML.
Se d tabela nomenclator_prenume avnd 66841 de nregistrri cu
urmtoarea structur. Rularea procedurii de mai sus a durat 5,875 de
141

Cursul 6
secunde pe un calculator Barton 2500+ cu 1GB RAM, obinndu-se un
singur document XML.
Name
Type
Comments
--------------------- ---------------------- ----------------------PRENUME_CD VARCHAR2(40)
Prenume cu diacritice
ID_PRENUME NUMBER(8)
Id prenume
PRENUME_FD VARCHAR2(40)
Prenume fr diacritice

Pe tabela acte_identitate avnd 316.562 de nregistrri i structura de


mai jos; rularea procedurii a durat 55,784 de secunde.
Name
Type
Comments
------------------- ------------------------------ ----------------------ID_P
NUMBER(12)
ID Partener
NR_CRT
NUMBER(2)
Numar curent
TIP_ACT_ID
VARCHAR2(2)
Tip AI
SERIE
VARCHAR2(15)
Serie AI
NUMAR
NUMBER(15)
Numar AI
ELIBERAT_DE
VARCHAR2(128)
Eliberat de
VALABIL_PANA_LA DATE
Valabil pana la
ELIBERAT_LA
DATE
Data eliberarii
STARE
VARCHAR2(1)
A-Activ, D - Dezafectat

Acest lucru arat c exportul n format XML este rentabil ca timp i


n cazul unui volum mai mare de date.
Dac se dorete obinerea de documente imbricate n cazul de fa
listarea angajailor pe departamente, trebuie folosite TYPE-uri ct i
operatorul CAST.
CREATE OR REPLACE TYPE ang_t AS OBJECT("@angajat_id" NUMBER,
nume VARCHAR2(20));
CREATE OR REPLACE TYPE anglist_t AS TABLE OF ang_t;
CREATE OR REPLACE TYPE dept_t AS OBJECT("@department_id"
NUMBER, department_name VARCHAR2(20), anglist anglist_t);
DECLARE
qryCtx dbms_xmlgen.ctxHandle;
result CLOB;
BEGIN
-- get the query context;
qryCtx := dbms_xmlgen.newContext
('SELECT dept_t(department_id, department_name,
CAST(MULTISET
(SELECT a.angajat_id, a.nume
FROM angajati a
WHERE a.dep_id=d.depart_id)
AS anglist_t))

142

Cursul 6
AS deptxml
FROM departamente d');
dbms_xmlgen.setMaxRows(qryCtx, 5);
LOOP
result := dbms_xmlgen.getxml(qryCtx);
INSERT INTO temp_clob_tab VALUES(result);
IF result IS NULL THEN
EXIT;
END IF;
END LOOP;
END;

3.4.2. Migrarea folosind Ispirer SQLWays 3.8


Pentru demonstrarea migrrii ntre Oracle i MySQL se folosete o
baz de date Oracle 10g rulnd pe un calculator Barton 2500+ cu 1GB RAM
i o baz de date MySQL 5.0.3 rulnd pe un calculator Barton 2400+ cu 512
MB RAM, legate n reea (10 Mbps). Folosind Ispirer SQLWays 3.8 se va
ncerca migrarea unui utilizator din Oracle n MySQL. Utilizatorul are 8
Funcii, 1 pachet, 6 tabele, 1 viziune i 3 declanatori. Structura lui se afl
pe CD n directorul Demo/Oracle. Exportul se face rapid i fr erori,
folosind wizard-ul, conform documentaiei [WWW02], scripturile rezultate
aflndu-se pe CD n directorul DemoMigrare/Mysql. La import apar ns
erori, doar 5 tabele sunt create i ncrcate corect din start, iar pentru una
dintre ele trebuie modificat script-ul CREATE, schimbnd DEFAULT(0) n
DEFAULT 0 pentru a funciona. Nici un declanator nu se compileaz
corect i apar erori la una din funcii i la pachet. De asemenea, noul
utilizator a trebui s fie creat manual, script-ul generat automat
nefuncionnd.
Din cele 20 obiecte, au aprut erori la 7 dintre ele rezultnd
n concluzie, aceast metod de migrare, bazat asistentul Ispirer
SQLWays, ntre aceste dou sisteme de gestiune a bazelor de date trebuie s
se limiteze la exportul de date, exportul altor obiecte putnd duce la erori.
Exportarea unei tabele avnd 9 coloane i 316.562 de nregistrri (tabela
acte_identitate descris i la paragraful anterior) dureaz 27 de secunde, iar
importul n MYSQL folosind LOAD INFILE dureaz mai puin de 10
secunde, mai puin chiar dect n cazul generrii de fiiere XML folosind
pachetul DBMS_XMLGEN din Oracle.
143

Cursul 6

Figura 3.3 Exportul folosind SQL WaysWizard


S-a ncercat, de asemenea, migrarea unei baze de date coninnd
28 de tabele din MySQL 5.0.3 n Oracle 10g. Dac structura tabelelor a fost
migrat cu succes, datele n sine nu au fost migrate, din cauza unei folosiri
defectuoase a SQL*Loader-ului de ctre SQL Ways.

144

Cursul 6
CAPITOLUL 3.
ANALIZA COMPARATIVA A DIFERITELOR
INSTRUMENTE UTILIZATE PENTRU INTEGRAREA DATELOR.....116
3.1. Sisteme de gestiune a bazelor de date..............................................116
3.2. Sisteme pentru gestiunea depozitelor de date..................................117
3.2.1 Oracle Discoverer......................................................................117
3.2.2 Oracle Warehouse Builder.........................................................119
3.2.3. Microsoft SQL Server 2005 Business Intelligence..................123
3.3. Instrumente utilizate pentru migrarea datelor..................................125
3.3.1. Oracle Migration Workbench...................................................127
3.3.2. Utilitarele SQL*Loader i Import/Export.................................128
3.3.3. Ispirer SQLWays.......................................................................139
3.3.4. Embarcadero DT/Studio...........................................................139
3.3.5. Microsoft DTS..........................................................................139
3.4. Testarea instrumentelor....................................................................140
3.4.1. Migrarea din Oracle folosind XML..........................................140
3.4.2. Migrarea folosind Ispirer SQLWays 3.8...................................143

145

S-ar putea să vă placă și