Capitolul 3



Yüklə 169,35 Kb.
səhifə3/3
tarix03.11.2017
ölçüsü169,35 Kb.
#29138
1   2   3

3.4. Testarea instrumentelor




3.4.1. Migrarea din Oracle folosind XML

Se dă tabela Sărbători cu următoarea 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 sărbători în format XML. Dacă nu se setează DBMS_XMLGEN.setMaxRows(qryCtx, 5), întregul document se va regăsi în câmpul result de tip CLOB din tabela temp_clob_tab. Dacă se setează acest parametru şi tabela sărbători are 6 înregistrări în temp_clob_tab se vor găsi două înregistrări, una conţinând un document cu 5 elemente şi a doua conţinând 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 obţinem două înregistrări, una cu documentul:
<?xml version="1.0"?>


01-JAN-06
L
Anul nou


02-JAN-06
L
Anul nou


24-APR-06
R
Prima zi de Paste


25-DEC-06
R
Craciun


26-DEC-06
R
Craciun


şi cealaltă cu o singură înregistrare.


<?xml version="1.0"?>


01-DEC-06
L
Ziua Nationala


Se poate schimba denumirea nodului principal din ROWSET folosind funcţia setRowsetTag, spre exemplu: dbms_xmlgen.setRowsetTag(qryCtx,'RANDURI'). Documentul astfel obţinut poate fi uşor exportat în altă bază de date cu suport nativ de XML.


Se dă tabela nomenclator_prenume având 66841 de înregistrări cu următoarea structură. Rularea procedurii de mai sus a durat 5,875 de secunde pe un calculator Barton 2500+ cu 1GB RAM, obţinându-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 fără diacritice


Pe tabela acte_identitate având 316.562 de înregistrări ş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 doreşte obţinerea de documente imbricate în cazul de faţă listarea angajaţilor pe departamente, trebuie folosite TYPE-uri cât ş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))

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 migrării între Oracle şi MySQL se foloseşte o bază de date Oracle 10g rulând pe un calculator Barton 2500+ cu 1GB RAM şi o bază de date MySQL 5.0.3 rulând pe un calculator Barton 2400+ cu 512 MB RAM, legate în reţea (10 Mbps). Folosind Ispirer SQLWays 3.8 se va încerca migrarea unui utilizator din Oracle în MySQL. Utilizatorul are 8 Funcţii, 1 pachet, 6 tabele, 1 viziune şi 3 declanşatori. Structura lui se află pe CD în directorul Demo/Oracle. Exportul se face rapid şi fără erori, folosind wizard-ul, conform documentaţiei [WWW02], scripturile rezultate aflându-se pe CD în directorul DemoMigrare/Mysql. La import apar însă erori, doar 5 tabele sunt create şi încărcate corect din start, iar pentru una dintre ele trebuie modificat script-ul CREATE, schimbând DEFAULT(0) în DEFAULT 0 pentru a funcţiona. Nici un declanşator nu se compilează corect şi apar erori la una din funcţii şi la pachet. De asemenea, noul utilizator a trebui să fie creat manual, script-ul generat automat nefuncţionând.

Din cele 20 obiecte, au apărut erori la 7 dintre ele rezultând

Î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 putând duce la erori. Exportarea unei tabele având 9 coloane şi 316.562 de înregistrări (tabela acte_identitate descrisă şi la paragraful anterior) durează 27 de secunde, iar importul în MYSQL folosind LOAD INFILE durează mai puţin de 10 secunde, mai puţin chiar decât în cazul generării de fişiere XML folosind pachetul DBMS_XMLGEN din Oracle.





Figura 3.3 Exportul folosind SQL WaysWizard

S-a încercat, de asemenea, migrarea unei baze de date conţinând 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 către SQL Ways.



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 118

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







Yüklə 169,35 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin