28
Multibāzes realizācija Mārtiņš Paukšte Saturs 1. Datu bāzu vadības sistēmu sasaiste – 3. lpp. 2. Oracle Heterogeneous Services (pieslēgšanās pie ne-Oracle datu avotiem) – 4. lpp. 3. Piemērs – kā pieslēgties pie MS Excel – 14. lpp. 4. Savienojumi starp Oracle datubāzēm – 18. lpp. 5. Globālās shēmas pielietojuma interpretācija – 23. lpp.

Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Embed Size (px)

Citation preview

Page 1: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Multibāzes realizācijaMārtiņš Paukšte

Saturs

1. Datu bāzu vadības sistēmu sasaiste – 3. lpp.

2. Oracle Heterogeneous Services (pieslēgšanās pie ne-Oracle datu avotiem) – 4. lpp.

3. Piemērs – kā pieslēgties pie MS Excel – 14. lpp.

4. Savienojumi starp Oracle datubāzēm – 18. lpp.

5. Globālās shēmas pielietojuma interpretācija – 23. lpp.

Page 2: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Datu bāzu vadības sistēmu sasaiste

2

Page 3: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

3

Page 4: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

4

Page 5: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

pārāk aizrauties.

5

Page 6: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

6

Page 7: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

7

Page 8: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

8

Page 9: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Mainīgie:

"WL032121" ir datora nosaukums, uz kura šis viss tiek darīts "C:\prog\ora9201" - mana ORACLE_HOME "hsodbc" - tas nav mans izdomājums - tas jāliek visiem avotiem, kuriem grib slēgties ar Heterogeneous

Service ODBC GSDB ir mana jaunizveidotā Oracle datubāze, no kuras es slēgšos pie MS Access avotiem "hsone" un "scndhsbase" ir manis tādi kā pieņemtie vārdi (alias) abiem MS Access avotiem Sadaļas par PLSExtProc (Method for PL/SQL packages to access operating system executables) klātesamība

šeit varētu arī nebūt svarīga (Var palasīt http://www.integrigy.com/security-resources/whitepapers/Integrigy_Oracle_Listener_TNS_Security.pdf  vai kādā jaunākā avotā)

9

Page 10: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

10

Page 11: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

11

Page 12: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

12

Page 13: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

13

Page 14: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

14

Page 15: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

15

Page 16: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

16

Page 17: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Savienojumi starp Oracle datubāzēm

Izveido 3 datubāzes ar „Database Configuration Assistant” (manā gadījumā ar noklusētajiem parametriem „General Purposes”)

1. DATBUĀZE – Globālās shēmas datubāze

17

Page 18: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

2. DATUBĀZE

3. DATUBĀZE

18

Page 19: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Izveido datubāzes saites no GS (“GSDB”) datubāzes uz pārējām (Database Links).

Oracle SQL Developer attēlojums datubāzes saitēm:

19

Page 20: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

CREATE DATABASE LINK lieto, lai izveidotu datubāzes saiti, kas ir shēmas objekts vienā datubāzē, kas ļauj piekļūt objektiem otrā datubāzē. Otrai datubāzei nav obligāti jābūt Oracle Database sistēmā. Tomēr, lai piekļūtu ne-Oracle sistēmām, ir jālieto “Oracle Heterogenous Services”

Izveido datu avotus katrā datubāzē:

Vienā datubāzē (FORDB):

CREATE TABLE db_one_people (first_name VARCHAR2(255 BYTE), last_name VARCHAR2(255 BYTE), age NUMBER, nationality VARCHAR2(255 BYTE))

Otrā datubāzē (LOCDB):

CREATE TABLE db_two_people (nosaukums VARCHAR2(255 BYTE), vecums NUMBER, tautiba VARCHAR2(255 BYTE))

Aizpildām abas datu tabulas ar testa datiem:

--Foreign Database(FORDB)--DROP TABLE db_one_people;TRUNCATE TABLE db_one_people;INSERT INTO db_one_people(first_name,last_name,age,nationality) VALUES('Jānis','Auziņš',35,'Čigāns');INSERT INTO db_one_people(first_name,last_name,age,nationality) VALUES('Renāte','Ralfsdottirf',31,'Latviete');INSERT INTO db_one_people(first_name,last_name,age,nationality) VALUES('Andris','Tretjakovs',25,'Krievs');INSERT INTO db_one_people(first_name,last_name,age,nationality) VALUES('Jana','Kočina',23,'Latviete');

--Loacal Database(LOCDB)--DROP TABLE db_two_people;TRUNCATE TABLE db_two_people;INSERT INTO db_two_people(nosaukums,vecums,tautiba) VALUES('Aivars Akots',26,'Latvietis');INSERT INTO db_two_people(nosaukums,vecums,tautiba) VALUES('Maija Ļaksa',39,'Latviete');INSERT INTO db_two_people(nosaukums,vecums,tautiba) VALUES('Ivar Štrāls',23,'Krievs');INSERT INTO db_two_people(nosaukums,vecums,tautiba) VALUES('Regīna Kairiša',29,'Latviete');INSERT INTO db_two_people(nosaukums,vecums,tautiba) VALUES('Armands Baranovskis',28,'Īrs');

Pārbaudām, ka caur nodefinētajiem savienojumiem ir iespējams izgūt datus GSDB datubāzē.

20

Page 21: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

21

Page 22: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Globālās shēmas pielietojuma interpretācija

Globālās shēmas datubāzē (GSDB) izveido:

Tabulu ziņojumiem, ko aizpildīs datu savākšanas procedūra:

CREATE TABLE gs_messages (creation_date DATE, message_text VARCHAR2(255 BYTE), statement_id NUMBER)

Tabulu izgūtajiem datiem:

CREATE TABLE gs_retrieved_data (data VARCHAR2(4000 BYTE))

Tabula ar informāciju par datu avotiem:

CREATE TABLE gs_data_sources (source_name VARCHAR2(255 BYTE), link_name VARCHAR2(255 BYTE), source_object_name VARCHAR2(255 BYTE) )

Šo tabulu uzreiz arī aizpildām ar informāciju par iepriekš izveidotajām tabulām:

--GS metadatiTRUNCATE TABLE gs_data_sources;INSERT INTO gs_data_sources(source_name,link_name,source_object_name) VALUES('PERSONS','LINK_TO_FORDB','db_one_people');INSERT INTO gs_data_sources(source_name,link_name,source_object_name) VALUES('PERSONS','LINK_TO_LOCDB','db_two_people');

22

Page 23: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Procedūra, kas savāc datus pēc norādītā no norādītājiem avotiem:

Izsaukums

BEGIN GS_DATA_ACCESS.retrieve_data(p_source=>'persons');END;

SELECT * FROM gs_data_sources;

Ja vēlas pievienot kādu avotu, kas ir tajā pašā datubāzē, tad LINK_NAME nenorāda.

SELECT * FROM gs_retrieved_data;

Izsaukums ar filtru:

BEGIN GS_DATA_ACCESS.retrieve_data(p_source=>'persons' ,p_filter =>'Andris' );

END;

SELECT * FROM gs_retrieved_data;

SELECT * FROM gs_messages ORDER BY STATEMENT_ID DESC;

23

Page 24: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Procedūras kods:

CREATE OR REPLACE PACKAGE gs_data_access IS PROCEDURE retrieve_data(p_source IN VARCHAR2 ,p_filter IN VARCHAR2 DEFAULT NULL);END;/

CREATE OR REPLACE PACKAGE BODY gs_data_access IS -------------------------------------------------------------------------------- PROCEDURE retrieve_data(p_source IN VARCHAR2 ,p_filter IN VARCHAR2 DEFAULT NULL) IS l_what VARCHAR2(255); l_executable VARCHAR2(4000); l_records_matched NUMBER; l_statement_id NUMBER; l_column_name VARCHAR2(255); l_link_string VARCHAR2(255);

TYPE t_cursor_type IS REF CURSOR;

c t_cursor_type; BEGIN SELECT gs_statement_seq.NEXTVAL INTO l_statement_id FROM DUAL;

--EXECUTE IMMEDIATE 'TRUNCATE TABLE gs_retrieved_data'; --COMMITO DELETE FROM gs_retrieved_data;

DELETE FROM gs_messages;

FOR t IN (SELECT source_object_name, link_name FROM gs_data_sources WHERE UPPER(source_name) = UPPER(p_source)) LOOP BEGIN l_link_string := NULL;

IF t.link_name IS NOT NULL THEN l_link_string := '@' || t.link_name; END IF;

l_what := NULL; l_executable := '(SELECT column_name

FROM all_tab_columns' || l_link_string;

l_executable := l_executable || ' WHERE table_name = ''' || UPPER(t.source_object_name) || ''')';

OPEN c FOR l_executable;

LOOP FETCH c INTO l_column_name;

24

Page 25: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

EXIT WHEN c%NOTFOUND;

IF l_what IS NULL THEN l_what := l_column_name; ELSE l_what := l_what || ' ||'' | ''|| ' || l_column_name; END IF; END LOOP;

--DBMS_OUTPUT.put_line(l_what); l_executable := 'INSERT INTO GS_RETRIEVED_DATA(SELECT ' || l_what || ' FROM ' || UPPER(t.source_object_name) || l_link_string;

IF p_filter IS NOT NULL OR p_filter != '' THEN l_executable := l_executable || ' WHERE ' || l_what || ' LIKE ''%' || p_filter || '%'''; END IF;

l_executable := l_executable || ')';

EXECUTE IMMEDIATE l_executable;

l_records_matched := sql%ROWCOUNT;

IF l_records_matched = 0 THEN INSERT INTO gs_messages(creation_date ,MESSAGE_TEXT ,statement_id) VALUES (SYSDATE , 'Tabulā' || UPPER(t.source_object_name) || ' netika atrasti atbilstoši ieraksti!' ,l_statement_id); END IF; -- EXCEPTION -- WHEN NO_DATA_FOUND THEN NULL; END; END LOOP; END retrieve_data;--------------------------------------------------------------------------------END;/

25

Page 26: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Projektējamais lietojums

26

Page 27: Web viewPiemērs – kā pieslēgties pie MS Excel – 14. lpp. Savienojumi starp Oracle datubāzēm – 18. lpp. Globālās shēmas pielietojuma interpretācija – 23. lpp

Piebildes un secinājumi:

Tabulu sasaistes loģiku varētu realizēt skatos

Heterogēniem avotiem datu avotu reģistrs būtu jāpapildina ar datu avota tipu, pēc kura attiecīgi būtu savādāk jāformē dinamiskie vaicājumi. Kā tikt klāt MS Access metadatiem?

DDL (Data Definition Language) trigeri datu avotos. Tie brīdinātu par aktivitātēm ar objektiem (datu tipu maiņu, kolonnu maiņu u.c.). Tas gan būtu svarīgāk, ja GS shēmā būtu dublēti metadati, bet tas jau vairāk atgādinātu Oracle Disoverer atdarinājumu.

Sinonīmu kombinācijā ar speciālu skatu GS lietošanas?

27