Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kurs Oracle i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

7,542 views

Published on

Kurs Oracle i SQL, bazy danych - tworzenie stron www, porady, trening, kurs internetowy online

Published in: Technology
  • Be the first to comment

Kurs Oracle i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

  1. 1. Oracle jako przykład komercyjnego systemu bazodanowego Autor: KatMPB
  2. 2. Wstęp – o czym będzie mowa  Wprowadzenie do Oracle:         System zarządzania bazą danych Historia Oracle Czym jest Oracle Mechanizm uzyskiwania pomocy Architektura Oracle SQL widziany z punktu widzenia Oracle (obiekty baz danych) PL/SQL Administrowanie Oracle  Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych) Autor: KatMPB 2
  3. 3. Wstęp – o czym będzie mowa           Instalowanie, uruchamianie i zamykanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Tworzenie bazy danych Pliki konfiguracyjne bazy danych Kopie zapasowe Transakcje Przetwarzanie rozproszone Oracle a Internet (Java) Oracle Application Server (m.in. formularze i raporty) Partycjonowanie danych Autor: KatMPB 3
  4. 4. Wprowadzenie do Oracle System zarządzania bazą danych (DBMS) jest zorganizowanym zbiorem narzędzi umożliwiającym dostęp i zarządzanie jedną lub więcej bazami danych. DBMS jest powłoką, która otacza bazę danych i za pomocą której dokonują się wszystkie operacje na bazie danych. Funkcje realizowane przez większość DBMS zaliczamy do trzech grup: -pielęgnacja danych -wyszukiwanie danych -kontrola danych Autor: KatMPB 4
  5. 5. Wprowadzenie do Oracle Historia Oracle W 1977 roku Lawrence Ellison, Robert Miner i Edward Oates założyli firmę SDL (Software Development Labs). Jednym z podmiotów zainteresowanych możliwościami gromadzenia dużej liczby danych i szybkiego ich pobierania było CIA. Firma SDL wygrała przetarg i rozpoczęła pracę nad tym ściśle tajnym projektem. Nazwa kodowa tego projektu brzmiała Oracle (pl. „wyrocznia”). Po pewnym czasie przerwano pracę, jednak Lawrence Ellison i jego współpracownicy dostrzegli komercyjne możliwości bazy danych. To spostrzeżenie w połączeniu z przeświadczeniem, że plany firmy IBM uwzględniają zastosowanie takiej relacyjnej bazy danych i języka SQL w swoich przyszłych komputerach, doprowadziło do podjęcia przez Ellisona, Minera i Oates’a decyzji o kontynuacji prac nad projektem. Autor: KatMPB 5
  6. 6. Wprowadzenie do Oracle Historia Oracle 1978 - Nazwa firmy zmieniona z SDL na Relational Software Inc. (RSI). 1979 - Pierwsza komercyjna baza danych trafia na rynek (konkurencja dla IBM). 1980 - Firma RSI zmienia nazwę na Oracle Systems Corporation (a później na Oracle Corporation) – Po raz pierwszy napisana w C. 1981-1983 – Powstaje wersja 3 na komputery typu mainframe i minikomputery. 1984 - Zmiana siedziby firmy do Kalifornii. 1985 - Oracle wchodzi w sektor aplikacji (finansowych). 1986 - Powstaje wersja 5 z możliwościami operacji rozproszonych. Firma wkracza na giełdę jeden dzień przed firmą Microsoft jej wartość rynkowa sięga 270 mln dol. (Microsoft - 700 mln dol.). 1988 - Zostaje wydana wersja 6 ze znacznie zmienionym kodem źródłowym. Wprowadzona pakiety oprogramowania finansowego oraz pakiety CASE przeznaczone dla programistów. Autor: KatMPB 6
  7. 7. Wprowadzenie do Oracle Historia Oracle 1989 - Powstaje Oracle 6.2 (po raz pierwszy w historii dwa komputery, które nie korzystały ze wspólnej pamięci fizycznej mogły równocześnie korzystać z jednego dysku). 1990-1991 – Przekroczono granicę 1 mld dolarów. 1992 - Ray Lane w Oracle (marketing). 1993 - Firma dostrzega rosnącą rolę działu aplikacji (wprowadzenie pakietu aplikacji dla wielu głównych sektorów gospodarki). 1994-1995 – Powstaje wersja 7 dla komputerów osobistych. 1996 - Oracle Corporation wydzielił firmę Network Computer Inc., której zadaniem ma być zadanie budowa komputera sieciowego. Rozpoczęcie działalności firmy Oracle na rynku detalicznym postawiło przedsiębiorstwo wobec konieczności podjęcia konkurencji wobec takich firm jak Sun, IBM i innych producentów komputerowych. Projektowany komputer sieciowy miał nie wykorzystywać systemu operacyjnego Windows. Autor: KatMPB 7
  8. 8. Wprowadzenie do Oracle Historia Oracle Dział aplikacji odnotował wartość sprzedaży na poziomie ponad 500 mln dol. Ponieważ z każdą aplikacją wiąże się sprzedaż bazy danych, dział aplikacji stał się istotną częścią ogólnej działalności Oracle. Obecnie pakiet Oracle obejmuje: -Oracle Financials; -Oracle Supply Chain Management; -Oracle Manufacturing; -Oracle Project Systems; -Oracle Human Resources; -Oracle Market Management. Również w roku 1996 Oracle wzbogaca się o pakiet narzędzi OLAP który wykorzystywany jest w zakresie aplikacji obsługujących hurtownie danych. Autor: KatMPB 8
  9. 9. Wprowadzenie do Oracle Historia Oracle 1997 - Pojawia się Oracle w wersji 8. Po raz kolejny firma podjęła kluczową pod względem strategicznym decyzję techniczną na wczesnym poziomie rozwoju produktu, przechodząc na język programowania Java i zrezygnowano z architektury klient-serwer na rzecz aplikacji działających w Internecie. 1998 - Obsługa systemu Linux. 1999 - Pojawia się pakiet Oracle8i w znacznej części utworzony w języku Java. 2000 – Firma osiąga wartość sprzedaży na poziomie 10 319 mln dol. Lawrence Ellison stał się najbogatszym człowiekiem na świecie. Wprowadzono pakiet Oracle9i który stanowi konkurencje dla takich firm jak m.in.: IBM (DB/2), Microsoft (SQL Server), czy innych. Autor: KatMPB 9
  10. 10. Wprowadzenie do Oracle Czym jest Oracle? Oracle Corporation dostarcza oprogramowanie służące do zarządzania informacjami. Obszar ten obejmuje zarządzanie bazami danych, tworzenie aplikacji, zaawansowane narzędzia analityczne oraz tworzenie aplikacji biznesowych, przystosowanych do pracy w Internecie. Pod względem rodzajów produktów ofertę Oracle można podzielić na pięć grup: - baza danych Oracle 9i; - serwer aplikacji Oracle 9i; - pakiet narzędzi programowania aplikacji internetowych; - hurtownie danych i rozwiązania wspierające rozwój firmy; - pakiet E-Business Suite. JEST PRZYKŁADEM POSTRELACYJNEGO SYSTEMU BAZODANOWEGO Autor: KatMPB 10
  11. 11. Wprowadzenie do Oracle Mechanizm uzyskiwania pomocy Dział Oracle Support Services jest głównym elementem systemu pomocy, jaką Oracle Corporation udostępnia użytkownikom. Na dział OSS składa się: - wnioski iTAR (TAR); mogą składać tylko użytkownicy posiadający odpowiednie umowy pomocy technicznej; - Serwis MetaLink; umożliwia odnalezienie odpowiedzi na większość pytań, jakie może zadać użytkownik (wnioski iTAR [składanie], biblioteki techniczne [archiwum działu pomocy technicznej firmy], fora [pl. Artykuły]); - Oracle Technology Network (m.in. dział download); - AppsNet (bezpłatne członkowstwo w przeciwieństwie do MetaLink); - Grupy dyskusyjne i serwery list dyskusyjnych; - Dokumentacja on-line; - Internet. () Autor: KatMPB 11
  12. 12. Wprowadzenie do Oracle Architektura Oracle Serwer stanowi moduł wykonywalny, który po uruchomieniu przeprowadza pewne istotne operacje. Uzyskanie dostępu do bazy danych Oracle9i jest możliwe właśnie dzięki temu modułowi. Warto tu wspomnieć, że do tego celu służy również szereg procedur i plików pomocniczych. Uwaga! – Składniki omówione poniżej są elementami wspólnymi dla wszystkich baz danych Oracle. Są one dostępne, ale mogą być nieużywane w przypadku niektórych instancji bazy Oracle9i. - INIT.ora: jest to plik zawierający wpisy, które określają środowisko wykonywania bazy danych Oracle9i. Wartości tych wpisów sterują różnymi elementami, takimi jak ilość pamięci przydzielanej instancji czy podział tej pamięci na struktury. Autor: KatMPB 12
  13. 13. Wprowadzenie do Oracle Architektura Oracle - Pamięć dzielona: często w przypadku komputerów osobistych jest związana z pamięcią RAM. Jest to ilość pamięci, która jest zajmowana przez bazę danych Oracle 9i po jej uruchomieniu. Dokładniej rzecz biorąc, pamięć ta jest zajmowana przez uruchomiony serwer Oracle9i dla konkretnej instancji bazy danych. Jej popularną nazwą jest SGA, co stanowi skrót od System Global Area. - Pliki bazy danych: pliki te dzielą się na trzy kategorie – pliki danych, pliki kontrolne i pliki dzienników (rozszerzenia odpowiednio to: .dbf, .ctl i .log). - Procesy pomocnicze: są to działania inicjowane w momencie uruchomienia bazy danych Oracle9i. Ich zadaniem jest wspieranie operacji uzyskiwania dostępu do plików bazy danych. - Dostęp do sieci: funkcje zapewniania dostępu do sieci spełnia chodzący w skład pakietu Oracle9i program Oracle Net. Autor: KatMPB 13
  14. 14. Wprowadzenie do Oracle Architektura Oracle - Pliki śladu: są zapisywane w sposób ciągły podczas pracy programu Oracle9i, w katalogach określonych w plikach INIT.ora dla poszczególnych instancji. Zawierają głównie dwa rodzaje informacji opisowych – informację o pewnych błędach Oracle oraz datowniki wybranych, istotnych działań, dotyczących pracy poszczególnych instancji. - Biblioteki czasu wykonywania: są to odpowiedniki stosowanych w przypadku komputerów osobistych bibliotek dołączonych dynamicznie. Zawierają one procedury i składniki usług, dzięki którym serwer Oracle9i może obsługiwać i wykonywać szereg zaawansowanych funkcji, niezbędnych dla prawidłowej pracy użytkowników. Autor: KatMPB 14
  15. 15. Wprowadzenie do Oracle Architektura Oracle Pomocnicze procesy drugoplanowe: - Proces zapisujący do plików danych (dbw0): odpowiada za zapisywanie zawartości buforów bazy danych na dysk. Jest to jedyny proces, który powoduje zapisywanie danych w bazie w sposób trwały; - Monitor procesów (pmon): odpowiada za zwalnianie zasobów (np. opróżnianie buforów) w przypadkach, gdy sesje użytkownika są kończone w sposób niestandardowy, za pomocą funkcji innych niż wewnętrzne mechanizmy tych sesji; - Monitor systemu (smon): realizuje szereg zadań, z których najważniejsze ma miejsce tuż po uruchomieniu instancji bazy danych Oracle9i. W tym momencie proces smon odpowiada za zagwarantowanie pełnej spójności wszystkich plików bazy danych, a w razie potrzeby wykonuje operacje odtwarzania; Autor: KatMPB 15
  16. 16. Wprowadzenie do Oracle Architektura Oracle - Proces zapisujący do plików dziennika powtórzeń (lgwr): odpowiada za zarządzanie pracą bufora dziennika powtórzeń; - Proces punktu kontrolnego (ckpt): zapewnia pełne zsynchronizowanie plików danych po zakończeniu operacji wyznaczania punku kontrolnego; - Odtwarzacz (reco): zadaniem odtwarzacza jest rozwiązanie niezrealizowanych transakcji w rozproszonym środowisku systemu Oracle9i. - Archiwizator (arc0): dokonuje automatycznego zapisywania kopii dzienników powtórzeń w katalogu określonym przez administratora bazy danych. Proces ten może zachodzić dopiero po włączeniu funkcji odtwarzania nośnika (konfiguracja w pliku INIT.ora). Autor: KatMPB 16
  17. 17. Wprowadzenie do Oracle Architektura Oracle Rys. Pamięć dzielona, procesy pomocnicze i interakcje między plikami. Autor: KatMPB 17
  18. 18. Wprowadzenie do Oracle Architektura Oracle Pliki bazy danych: - Plik kontrolny jest swojego rodzaju przewodnikiem po bazie danych, zawiera m.in.: nazwę bazy danych, datę i godzinę utworzenia bazy danych, informację dotyczące punktów kontrolnych itp.; - Dzienniki powtórzeń; - Pliki danych bazy danych są przechowywane w przestrzeniach tabel. Autor: KatMPB 18
  19. 19. Wprowadzenie do Oracle Architektura Oracle Zależność między bazą danych, przestrzenią tabel i plikami danych. Element Jest nadrzędny wobec Baza danych Przestrzeń tabel/plik danych Przestrzeń tabel Plik danych Zawiera się w Baza danych Plik danych Przestrzeń tabel Polecenia SQL tworzące przykładowe przestrzenie tabel: CREATE TABLESPACE nazwa DATAFILE ‘/oracle/nazwa_katalogu/nazwa_pliku.dbf’ SIZE 5M RESUE EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (INITIAL 25K NEXT 25K MINEXTENTS 5 MAXEXTENTS 100 PCTINCREASE 0); Autor: KatMPB 19
  20. 20. Wprowadzenie do Oracle Architektura Oracle CREATE TABLESPACE nazwa DATAFILE ‘/oracle/nazwa_katalogu/nazwa_pliku.dbf’ SIZE 5M RESUE EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLESPACE nazwa DATAFILE ‘/oracle/nazwa_katalogu/nazwa_pliku.dbf’ SIZE 5M RESUE EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K; CREATE UNDO TABLESPACE nazwa DATAFILE ‘/oracle/nazwa_katalogu/nazwa_pliku.dbf’ SIZE 5M RESUE AUTOEXTEND ON MAXSIZE UNLIMITED; Autor: KatMPB 20
  21. 21. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Złączenia (klucze obce) Podzapytania Indeksy Integralność danych (integralność: encji, referencyjna, dziedziny, asercje)  Perspektywy  Przełączniki typu TRIGGER (wyzwalacze)  Procedury serwera STORED PROCEDURES (funkcje serwera, pakiety)     Uwaga! - Wszystkie podpunkty będą omówione na przykładach. Autor: KatMPB 21
  22. 22. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Złączenia (klucze obce) create table faktury ( numer int primary key, dostawca varchar2(32) not null, data date not null default sysdate ) create table pozycje ( nrfaktury int not null, numer int not null, towar varchar2(24) not null, ilosc int not null, cena int not null, CONSTRAINT pozycje_faktury FOREIGN KEY (nrfaktury) REFERENCES faktury(numer), primary key (nrfaktury, numer) ) Autor: KatMPB 22
  23. 23. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Integralność danych -Integralność encji jest realizowana przez klucze główne -Integralność referencyjna jest realizowana przez klucze obce -Integralność dziedziny create table nazwa ( … pole int; … CHECK (pole BETWEEN 100 AND 1000); … ) Klauzula CHECK służy do wymuszenia integralności dziedziny. Autor: KatMPB 23
  24. 24. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Integralność danych -Asercje nie są wspierane przez Oracle9i. Więzy mogą być nazywane i określane niezależnie od jakiejkolwiek tabeli lub dziedziny. W takim przypadku więzy są nazywane asercjami. Możemy na przykład zdefiniować asercje dla jakieś tabeli i gdy dowolna instrukcja SQL dokonuje wstawienia, modyfikacji bądź usunięcia wiersza tabeli, istnieje możliwość, że więzy mogą zostać naruszone. Autor: KatMPB 24
  25. 25. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Podzapytania. select imie_prac || ’ ‘ || naz_prac as Pracownicy_dzialu_finansow from pracownik where id_dzialu = (select id_dzialu from dzial where nazwa_dzialu = ‘Finanase’); Autor: KatMPB 25
  26. 26. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Indeksy są niewielką kopią całej tabeli wstępnie posortowaną. create index nazwa_indeksu on nazwa_tabeli (nazwa_kolumny_1, … ); Indeksy mogą być unikatowe i nieunikatowe. W Oracle9i możliwe jest tworzenie indeksów bitmapowych dla grup wierszy o niewielkim zróżnicowaniu. create bitmap index plec on nazwa_tabeli (nazwa_kolumny); Reguła 95/5 umożliwia dokonywanie pomiaru skuteczności działania indeksów. Jeśli wynikiem zapytania będzie zwrócenie nie więcej niż 5% wierszy tabeli, indeks jest właściwie zawsze najszybszym sposobem wyszukiwania danych. Jeśli zaś wynikiem będzie wyszukanie ponad 5% wszystkich danych, lepiej nie korzystać z indeksu Autor: KatMPB 26
  27. 27. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Perspektywy są niestandardowym zbiorem danych pochodzącym z jednej lub więcej tabel bazowych. W odróżnieniu od tabeli, perspektywa nie zawiera danych a jedynie składowaną instrukcję SQL. Podobnie jak w przypadku tabel, w perspektywie można wstawiać, aktualizować, usuwać oraz wybierać dane, oczywiście z pewnymi ograniczeniami. create view wyd_dzial_prac as select e.imie_prac, e.nazw_prac, d.nazwa_dzial from pracownik e, dzial d where e.id_dzial = d.id_dzial; Istnieją również perspektywy materializowane (dawniej snapshot) – perspektywy w których są przechowywane dane. Przed utworzeniem perspektywy materializowanej każda tabela na której opiera się ta perspektywa musi być odnotowana w dzienniku tabeli. (przykład pomijam!!!) Autor: KatMPB 27
  28. 28. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Wyzwalacze to programy przechowywane w bazie danych, które są wykonywane po zaistnieniu określonego zdarzenia (insert, update lub delete). Mogą być one napisane w języku PL/SQL, Java lub C. CREATE OR REPLACE TRIGGER "KATMPB".„TEST" BEFORE INSERT OR UPDATE OR DELETE ON "KATMPB"."TEST" FOR EACH ROW BEGIN if INSERTING then insert into dziennik (id_dzien, tabela_dzien, dml_dzien, id_klucza_dzien, data_dzien, nazwa_uzyt_dzien) values (kol_id_dzien.nextval,'DZIENNIK','INSERT', :new.numer, sysdate, user); elsif DELETING then insert into dziennik (id_dzien, tabela_dzien, dml_dzien, id_klucza_dzien, data_dzien, nazwa_uzyt_dzien) values (kol_id_dzien.nextval,'DZIENNIK','DELETE', :old.numer, sysdate, user); else … … insert into dziennik (id_dzien, tabela_dzien, dml_dzien, id_klucza_dzien, data_dzien, nazwa_uzyt_dzien) values (kol_id_dzien.nextval,'DZIENNIK','UPDATE', :old.numer, sysdate, user); end if; EXCEPTION WHEN others THEN raise_application_error(-20000,'BLAD trigger_test: ' ||SQLERRM); END trigger_test; Opis: Wyzwalacz ten służy do zapisu obserwacji wszystkich działań na tabeli TEST. Autor: KatMPB 28
  29. 29. SQL widziany z punktu widzenia Oracle (obiekty baz danych) Funkcje i procedury są to obiekty bazy danych, które zawierają kod w języku PL/SQL. Inaczej ma się sprawa w systemie MySQL gdzie pisanie kodu procedur i funkcji odbywa się dzięki dodatkowej składni SQL. Uwaga! - W dalszej części prezentacji poświęconej językowi PL/SQL zostaną zademonstrowane przykłady procedur i funkcji przechowywanych na serwerze. W Oracle występuje jeszcze cała masa różnych obiektów tworzonych przy pomocy zapytań SQL, kilka z nich wymieniłem poniżej: -synonimy; -sekwencje; -role; -libraries (ze składni języka PL/SQL można wywoływać funkcje języków takich jak np. C); -powiązania bazodanowe; -clusers; -pakiety. Autor: KatMPB 29
  30. 30. PL/SQL PL/SQL (Procedural Language Structured Query Language) jest to środowisko programistyczne rezydujące bezpośrednio w bazie danych. Po raz pierwszy pojawił się w wersji 6. systemu Oracle w roku 1996. Obecnie język PL/SQL jest wykorzystywany do odczytywania danych, wypełniania bazy danych, tworzenia przechowywanych obiektów a nawet wyświetlania stron WWW. Baza danych jest więc nie tylko bazą danych. Służy ona bowiem również jako motor dla wielu języków np.: Java czy PL/SQL. Funkcja mechanizmu oznacza, że kod może być przechowywany w bazie danych a następnie uruchamiany. Język PL/SQL jest wykorzystywany w wielu produktach firmy Oracle, takich jak: serwer Oracle, Oracle Forms, Oracle Raports, Oracle Warehouse Builder, Oracle Application Server, czy Oracle Portal. Autor: KatMPB 30
  31. 31. PL/SQL Przechowywany program w języku PL/SQL Rys. Architektura wykorzystująca język PL/SQL Wywołania z programów zewnętrznych Zintegrowany motor języka SQL Mechanizm języka PL/SQL Motor języka SQL Baza danych Autor: KatMPB 31
  32. 32. PL/SQL Uwaga! - Dalsza część omawiana języka PL/SQL będzie oparta na przykładach. Procedury Użycie kursora niejawnego: CREATE OR REPLACE PROCEDURE "KATMPB".„TEST" (wyjscie out number) as [is] begin select count(*) into wyjscie from pracownicy end; Autor: KatMPB 32
  33. 33. PL/SQL Procedury Użycie kursora jawnego: CREATE OR REPLACE PROCEDURE "KATMPB"."TEST" (wyjscie out number) as zmp number; CURSOR pobierz IS select count(*) from test; begin OPEN pobierz; FETCH pobierz INTO zmp; wyjscie := zmp; CLOSE pobierz; end; Uwaga! - W przypadku instrukcji insert, update i delete jesteśmy skazani na używanie kursorów niejawnych, które są o wiele mniej efektywne. Autor: KatMPB 33
  34. 34. PL/SQL Procedury Pętla for kursora: CREATE OR REPLACE PROCEDURE "KATMPB"."TEST" as l_liczba_pracownikow number; i number; CURSOR pobierz_dane_pracownikow IS select nazwisko_pracownika, placa from pracownicy order by nazwisko_pracownika; begin FOR rec IN pobierz_dane_pracownikow LOOP dbms_output.put_line(‘Pracownik: ‘ || rec.nazwisko_pracownika || ‘ Wynagrodzenie: ‘ || rec.placa || ‘ zł’); END LOOP; end; Autor: KatMPB 34
  35. 35. PL/SQL Funkcje CREATE OR REPLACE FUNCTION "KATMPB"."TEST" (liczbaparametr number) return number is liczba number(10); begin select count(*) as koltest into liczba from test where pole3 = liczbaparametr; return (liczba); end; Uwaga! - Funkcje mogą być używane wewnątrz poleceń SQL. Autor: KatMPB 35
  36. 36. PL/SQL Pakiety dostarczone przez firmę Oracle Pakiet utl_file: (Aby korzystać z tego pakietu należy dokonać modyfikacji w pliku INIT.ora. Dla parametru utl_file_dir należy zdefiniować katalogi, do których użytkownicy pakietu będą mieli dostęp. CREATE OR REPLACE PROCEDURE "KATMPB"."TEST" (nazwa_katalogu varchar2, nazwa_pliku varchar2, system_zrod varchar2) is plik UTL_FILE.FILE_TYPE; zmp varchar2(1000); begin plik := UTL_FILE.FOPEN(nazwa_katalogu, nazwa_pliku, 'R'); begin loop UTL_FILE.GET_LINE(plik, zmp); dbms_output.put_line(zmp); end loop; EXCEPTION when NO_DATA_FOUND then null; end; … … UTL_FILE.FCLOSE(plik); EXCEPTION when NO_DATA_FOUND then dbms_output.put_line('no data found'); UTL_FILE.FCLOSE(plik); when UTL_FILE.INVALID_PATH then dbms_output.put_line('UTL_FILE.INVALID_PATH'); UTL_FILE.FCLOSE(plik); when UTL_FILE.READ_ERROR then dbms_output.put_line('UTL_FILE.READ_ERROR'); UTL_FILE.FCLOSE(plik); when OTHERS then dbms_output.put_line('BŁĄD: '||SQLERRM||'.'); UTL_FILE.FCLOSE(plik); end; Autor: KatMPB 36
  37. 37. PL/SQL Dynamiczny SQL Programy w języku SQL służą do wykonywania określonych działań na wybranych kolumnach w tabelach oraz realizowania pewnych zamkniętych zadań. Czasami jednak programy muszą wykonywać zadania, które będą znane dopiero podczas działania danego programu. W takim przypadku należy zastosować dynamiczny SQL. W wersji Oracle9i istnieją dwie opcje korzystania z tego mechanizmu. Pierwszy z nich to pakiet dbms_sql, umożliwiający tworzenie tych dynamicznych poleceń. Drugi to rdzenny dynamiczny SQL (and. dynamic SQL [od ver. 8i]), który pozwala osiągnąć te same cele przy użyciu nieco prostszej składni. Autor: KatMPB 37
  38. 38. PL/SQL Dynamiczny SQL Dynamiczny SQL realizowany za pomocą pakietu dbms_sql: CREATE OR REPLACE PROCEDURE "KATMPB".„TEST" (zmp in number, zmp2 in varchar2) is liczba_wierszy integer; zmpsql varchar2(200); kursor integer; begin zmpsql := 'INSERT INTO test_proc VALUES (:numer_par, :test_par)'; kursor := dbms_sql.open_cursor; dbms_sql.parse(kursor, zmpsql, dbms_sql.native); dbms_sql.bind_variable(kursor, ':numer_par', zmp); dbms_sql.bind_variable(kursor, ':test_par', zmp2); liczba_wierszy := dbms_sql.execute(kursor); dbms_sql.close_cursor(kursor); end; Autor: KatMPB 38
  39. 39. PL/SQL Dynamiczny SQL Rdzenny dynamiczny SQL: CREATE OR REPLACE PROCEDURE "KATMPB".„TEST" (zmp in number, zmp2 in varchar2) is zmpsql varchar2(200); begin zmpsql := 'INSERT INTO test_proc VALUES (:numer_par, :test_par)'; EXECUTE IMMEDIATE kursor USING zmp, zmp2; end; Autor: KatMPB 39
  40. 40. Administrowanie Oracle  Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)  Instalowanie, uruchamianie i zamykanie Oracle  Konfigurowanie i zarządzanie uprawnieniami użytkowników  Tworzenie bazy danych  Pliki konfiguracyjne bazy danych  Kopie zapasowe Autor: KatMPB 40
  41. 41. Administrowanie Oracle Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych) Administrator danych jest to osoba która pełni funkcję nad administrowaniem danych. Administrowanie danymi jest funkcją związaną z zarządzaniem, planowaniem i dokumentowaniem zasobów danych w przedsiębiorstwie. Administrator bazy danych będzie zaangażowany w projektowanie fizyczne systemów baz danych. W zakresie zarządzania danymi administrator bazy danych będzie zajmował się zwłaszcza problematyką kontroli danych; jest on również odpowiedzialny za tworzenie kopii zapasowych baz danych. Autor: KatMPB 41
  42. 42. Administrowanie Oracle Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych) Głównym narzędziem administratora danych i administratora bazy danych jest słownik danych. Słownik danych jest sposobem zapisywania metadanych przedsiębiorstwa, to znaczy danych na temat danych (koncepcyjne słowniki danych, logiczne słowniki danych i fizyczne słowniki danych). Koncepcyjne i logiczne słowniki danych są zazwyczaj domeną administratora danych. Fizyczne słowniki danych są domeną administratora bazy danych. Uwaga! – Administrator bazy danych w wielu przypadkach pełni funkcję administratora danych. Administrator danych będzie uczestniczył w analizie i projektowaniu systemu baz danych. Administrator baz danych będzie zaangażowany w projektowanie fizyczne systemów baz danych. Autor: KatMPB 42
  43. 43. Administrowanie Oracle Instalowanie, uruchamianie i zamykanie Oracle System LINIUX: Pozostawiam użytkownikowi albo zachęcam do odwołania się do bardzo dobrej książki autora: Michael Wesslera pt: „Administrowanie bazami danych Oracle w systemach UNIX i Linux”. System WINDOWS: Instalowanie przebiega według prostego kreatora.  Uruchamianie i zamykanie jest nieodzownie związane z konkretną instancją bazy danych; dla każdej instancji tworzy się w systemie oddzielna usługa. Oprócz tego na system Oracle składa się cała masa innych usług -> patrz następny slajd. Autor: KatMPB 43
  44. 44. Administrowanie Oracle Instalowanie, uruchamianie i zamykanie Oracle Nazwa Oracle OLAP 9.0.1.0.1 Oracle OLAP Agent OracleOraDeveloperAgent OracleOraDeveloperClientCache OracleOraHome90Agent OracleOraHome90ClientCache OracleOraHome90HTTPServer OracleOraHome90ManagementServer OracleOraHome90PagingServer OracleOraHome90SNMPPeerEncapsulator OracleOraHome90SNMPPeerMasterAgent OracleOraHome90TNSListener OracleServiceKATMPBOR Stan Typ uruchomienia Ręczny Ręczny Ręczny Ręczny UruchomionoAutomatyczny Ręczny UruchomionoAutomatyczny Ręczny Ręczny Ręczny Ręczny UruchomionoAutomatyczny UruchomionoAutomatyczny Logowanie jako System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny System lokalny Gdzie KatMPBOR jest to nazwa bazy danych. Autor: KatMPB 44
  45. 45. Administrowanie Oracle Instalowanie, uruchamianie i zamykanie Oracle Zamykanie konkretnej instancji bazy danych może odbywać się na trzy sposoby: 1. shutdown; - czeka aż wszyscy użytkownicy skończą sesje; 2. shutdown immediate; - cofa wszystkie transakcje użytkowników i zamyka instancje bazy danych; 3. shutdown abort; - zamyka wszystkie połączenia użytkowników z bazą danych nie czekając na ich rozłączenie i przerywa wszystkie transakcje. Uwaga! – Aby wyłączyć bazę danych Oracle9i, należy najpierw nawiązać z nią połączenie przy użyciu uprawnień sysdba. SQL> connect / as sysdba Autor: KatMPB 45
  46. 46. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Podczas instalacji Oracle9i tworzona jest w systemie operacyjnym grupa uprawnień o nazwie ORA_DBA i jej członkiem staje się użytkownik który odpowiada za instalacje Oracle9i. Użytkownika ten może się logować do bazy bez używania hasło i loginu, wystarczy wpisać w programie SQL Plus polecenie: SQL> connect / as sysdba Dzięki temu uprawnieniu możemy wykonywać większość działań administracyjnych. Oprócz tego tworzony jest użytkownika sys z hasłem change_on_install i użytkownika system z hasłem manager. Dzięki temu ostatniemu możemy wykonywać export i import bazy danych. Uwaga! – Gdy zalogujemy się do systemu operacyjnego jako inny użytkownik niż ten który instalował system Oracle, to nie możemy logować się do bazy z przywilejem sysdba. Autor: KatMPB 46
  47. 47. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Tworzenie kont użytkowników (SQL) CREATE USER nazwa_użytkownika IDENTIFIED BY hasło PROFILE nazwa_profilu DEFAULT TABLESPACE nazwa_przestrzeni_tabel QUOTA wielkość_przydzielona_na_tablespace ON nazwa_przestrzeni_tabel TEMPORARY TABLESPACE nazwa_przestrzeni_tabel QUOTA UNLIMITED ON nazwa_przestrzeni_tabel ACCOUNT UNLOCK/LOCK; GRANT CONNECT TO nazwa_użytkownika; Rola Autor: KatMPB 47
  48. 48. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Tworzenie kont użytkowników (SQL) Przykład! create user katmpb identified by katmpb profile default default tablespace dane quota 10m on dane temporary tablespace temp quota unlimited on temp account unlock; grant connect to katmpb; Autor: KatMPB 48
  49. 49. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Role są to kontenery do przechowywania uprawnień. Wykorzystując to rozwiązanie administrator tworzy rolę w bazie danych, przydziela uprawnienia do tej roli a następnie przypisuje je wymaganemu użytkownikowi. Polecenie SQL do tworzenia roli: create role nazwa_roli not identified; grant (system_privileges or object_privileges) to nazwa_roli; … grant (system_privileges or object_privileges) to nazwa_roli; … Autor: KatMPB 49
  50. 50. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Object privileges: -ALTER; -DELETE; -EXECUTE; -INDEX; -INSERT; -ON COMMIT REFRESH – nie znalazłem w dokumentacji;  -QUERY REWRITE – nie znalazłem w dokumentacji;  -READ; -REFERENCES - tworzenie ograniczeń na tabeli; -SELECT; -UNDER; -UPDATE; -WRITE. Uwaga! - Różne prawa są dostępne dla różnych obiektów w bazie danych. Np. Obiekt table posiada uprawnienia: alter, delete, index, insert, on commit refresh, query rewrite, references, select i update. Autor: KatMPB 50
  51. 51. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników System privileges (tylko te które znajdują się standardowo w roli connect): -alter session; -create cluster; -create database link; -create sequence; -create session; -create synonym; -create table; -create view. Uwaga! - W przypadku gdy chcemy nadać użytkownikowi tylko prawa do przeglądania tabeli innego użytkownika, to oprócz przywileju select, należy nadać mu prawa alter session i create session. Autor: KatMPB 51
  52. 52. Administrowanie Oracle Konfigurowanie i zarządzanie uprawnieniami użytkowników Usuwanie kont użytkowników (SQL) drop user nazwa_użytkownika; Autor: KatMPB 52
  53. 53. Administrowanie Oracle Tworzenie bazy danych Tworzenie bazy danych można przeprowadzić na dwa sposoby zarówno w Windowsach jak i Linuksach. Pierwsza z metod to skorzystanie z kreatora, nie będę się na ten temat więcej rozwodził.  Druga metoda jest znacznie trudniejsza i polega na utworzeniu całej masy skryptów oraz pliku INIT.ora. Uwaga! - Przykład utworzenia bazy danych (BSzablon) metodą drugą zamieszczam w przykładach dotyczący tej prezentacji. Link: BSzablon.rar Autor: KatMPB 53
  54. 54. Administrowanie Oracle Pliki konfiguracyjne bazy danych Plik INIT.ora jest odczytywany po uruchomieniu instancji bazy danych Oracle9i. Przykład! db_block_size=4096 db_cache_size=33554432 open_cursors=300 background_dump_dest=C:OraHome90adminKatMPBOrbdump core_dump_dest=C:OraHome90adminKatMPBOrcdump timed_statistics=TRUE user_dump_dest=C:OraHome90adminKatMPBOrudump … db_domain="" remote_login_passwordfile=EXCLUSIVE processes=150 instance_name=KatMPBOr java_pool_size=33554432 large_pool_size=1048576 shared_pool_size=33554432 fast_start_mttr_target=300 control_files=("C:OraHome90oradataKatMPBOrCONTROL01.CTL", "C:OraHome90oradataKatMPBOrCONTROL02.CTL", "C:OraHome90oradataKatMPBOrCONTROL03.CTL") dispatchers="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)„ compatible=9.0.0 db_name=KatMPBOr … sort_area_size=524288 undo_management=AUTO undo_tablespace=UNDOTBS utl_file_dir = C:OraHome90@PlikiUzytkownikowDostepneZBazyDanych Log_archive_start=TRUE Autor: KatMPB 54 Log_archive_dest='C:OraHome90oradataKatMPBOrBackup' Log_archive_format=arch_%s.arc
  55. 55. Administrowanie Oracle Pliki konfiguracyjne bazy danych Uwaga! – Niektóre zmiany parametrów pliku INIT.ora wymagają przerestartowania bazy danych inne zaś zaczynają obowiązywać gdy użytkownik rozpocznie sesję z bazą jeszcze inne obowiązują natychmiast po ich wprowadzeniu i zapisaniu do pliku. Autor: KatMPB 55
  56. 56. Administrowanie Oracle Kopie zapasowe Eksport i import Narzędzie eksportu, zwane popularnie exp, odpowiada za wykonywanie binarnych kopii danych użytkownika, które mogą być odczytywane przez jego program siostrzany – imp. Rola mechanizmu eksportu w tworzeniu kopii zapasowych: - Wypełnienie całkowicie nowej bazy danych po pomyślnym wykonaniu polecenia create database; - Przeniesienie danych z jednego serwera na drugi; - Wykonanie kopii danych jednego użytkownika w schemacie innego użytkownika; - Wygenerowanie szeregu instrukcji SQL, które posłużą do tworzenia tabel, indeksów i ograniczeń użytkownika; Autor: KatMPB 56
  57. 57. Administrowanie Oracle Kopie zapasowe Eksport i import - Zapisanie pliku danych wyjściowych, zawierającego wszystkie instrukcje SQL niezbędne do odtworzenia infrastruktury obsługującej bazę danych Oracle9i. Tryby pracy programu eksportu: - tryb interaktywny; - tryb wiersza polecenia; - tryb pliku konfiguracyjnego. Typy eksportu: - pełny (full); - użytkownik; - tabela. Autor: KatMPB 57
  58. 58. Administrowanie Oracle Kopie zapasowe Eksport i import Przykład! C:>exp userid=system/manager grants=Y rows=Y owner=katmpb buffer=1000000 file=C:backup.dmp Autor: KatMPB 58
  59. 59. Administrowanie Oracle Kopie zapasowe Eksport i import Narzędzi importu, wywoływane przy użyciu polecenia imp, odczytuje pliki utworzone przez narzędzie eksportu a następnie na podstawie instrukcji wydanych przez użytkownika umieszcza dane i definicje danych w bazie danych Oracle9i. Rola mechanizmu importu w odtwarzaniu danych: - Przywracanie kopii obiektu z momentu tworzenia pliku eksportu; - Pomoc w odzyskiwaniu wierszy danych tabeli, która mogła zostać usunięta w wyniku błędu w programie; - Przeniesienie danych z bazy danych Oracle9i działającej w jednym systemie operacyjnym do innej platformy sprzętowej. Autor: KatMPB 59
  60. 60. Administrowanie Oracle Kopie zapasowe Eksport i import Tryby pracy programu importu: - tryb interaktywny; - tryb wiersza polecenia; - tryb pliku konfiguracyjnego. Typy importu: - pełny (full); - użytkownik; - tabela. Autor: KatMPB 60
  61. 61. Administrowanie Oracle Kopie zapasowe Eksport i import Przykład! C:>imp userid=system/manager ignore=Y tables=test fromuser=katmpb touser=tester file=C:katmpb_backup.dmp Autor: KatMPB 61
  62. 62. Administrowanie Oracle Kopie zapasowe Funkcje odtwarzania nośników Czynności polegające na odtwarzaniu części lub całości bazy danych Oracle9i po wystąpieniu ogólnie rozumianej awarii są łącznie określane mianem odtwarzania nośników. Awaria jest przeważnie wynikiem zaistnienia jednego z trzech powodów: -błąd operatora; -błąd programowania; -awaria nośnika. Autor: KatMPB 62
  63. 63. Administrowanie Oracle Kopie zapasowe Funkcje odtwarzania nośników Tworzenie kopii zapasowych „na gorąco” i „na zimno” - Tworzenie kopii zapasowych „na gorąco” umożliwia tworzenie kopii plików danych i tylko tych plików przy otwartej bazie danych. - Tworzenie kopii zapasowych „na zimno” umożliwia tworzenie kopii plików danych, plików sterujących i dzienników powtórzeń przy zamkniętej bazie danych. Praca w trybie archiwizacji dzienników powtórzeń Uwaga! - Aby kolejne kopie bazy danych były spójne, baza musi najpierw zostać przeniesiona do trybu archiwizacji dzienników powtórzeń (odpowiednie wpisy w pliku INIT.ora + kilka operacji). Autor: KatMPB 63
  64. 64. Administrowanie Oracle Kopie zapasowe Zagadnienie związane z kopiami zapasowymi jest bardzo obszerne dlatego w celu głębszego jego poznania autor odsyła do literatury . Uwaga! - Oracle Enterprise Manager Wszystko co do tej pory było omówione jak i również to co będzie omawiane, można robić z poziomu graficznego narzędzia o nazwie Oracle Enterprise Manager. Autor: KatMPB 64
  65. 65. Transakcje  Czym są transakcje?  ANSI SQL a transakcje  Obsługa transakcji dla wielu użytkowników (poziomy izolacji ANSI, podstawowa terminologia)  Oracle i transakcje Autor: KatMPB 65
  66. 66. Transakcje i blokowanie Czym są transakcje? Transakcja to niepodzielny logicznie blok instrukcji. Czym jest blok instrukcji? Jest to zbiór modyfikacji w bazie danych, który musi być albo wykonany w całości, albo niewykonany w całości. Zasady ACID (Atomic [atomosość], Consistent [spójność], Isolated [izolacja], Durable [trwałość]) oznaczają własności jakie powinna posiadać transakcja: -Atomowość: transakcja, nawet jeżeli składa się na nią grupa operacji, musi działać jako pojedyncza instrukcja. -Spójność: na końcu transakcji baza danych musi być spójna. -Izolacja: oznacza, że każda transakcja, niezależnie od ilości rozpoczętych transakcji w systemie, musi być niezależna od innych. -Trwałość: po zakończeniu transakcji jej wyniki muszą być wprowadzone do systemu (zwykle realizowane poprzez dzienniki transakcji). Autor: KatMPB 66
  67. 67. Transakcje i blokowanie ANSI SQL a transakcje W standardzie SQL transakcje są kontrolowane za pomocą trzech instrukcji: -BEGIN WORK (instrukcja nadmiarowa) -COMMIT -ROLLBACK Autor: KatMPB 67
  68. 68. Transakcje i blokowanie Obsługa transakcji dla wielu użytkowników Jednym z najtrudniejszych do zrealizowania aspektów relacyjnych baz danych jest izolacja poszczególnych użytkowników w czasie aktualizacji bazy danych. Standard SQL definiuje różne poziomy izolacji, jakie może zapewnić baza danych. Definicja ANSI/ISO poziomu izolacji Niespójność odczytów Niepowtarzalność odczytów Fantomy Dopuszczalne Dopuszczalne Dopuszczalne Read committed Niedopuszczalne Dopuszczalne Dopuszczalne Repeatable read Niedopuszczalne Niedopuszczalne Dopuszczalne Serializable Niedopuszczalne Niedopuszczalne Niedopuszczalne Read uncommitted Uwaga! - instrukcja do zmiany poziomów izolacji definiowana przez ANSI SQL: set transaction isolation level. Autor: KatMPB 68
  69. 69. Transakcje i blokowanie Obsługa transakcji dla wielu użytkowników Instrukcja do zmiany poziomów izolacji w Oracle9i ma następującą składnie: Autor: KatMPB 69
  70. 70. Transakcje i blokowanie Obsługa transakcji dla wielu użytkowników -Niespójność odczytów występuje, gdy jedna transakcja SQL może odczytać dane zmieniane przez drugą transakcje, chociaż transakcja zmieniająca dane nie zatwierdziła zmian. -Niepowtarzalność odczytów powoduje, że transakcja może „widzieć” zmiany zatwierdzone przez inne transakcje, nawet jeżeli sama podczas odczytu nie jest zatwierdzona. -Odczyty fantomowe występują podczas dodawania wierszy do tabeli w czasie, gdy druga tabela aktualizuje ja. Powinien zostać zaktualizowany również nowy wiersz – a nie jest. Autor: KatMPB 70
  71. 71. Transakcje i blokowanie Obsługa transakcji dla wielu użytkowników Nie można zagnieżdżać transakcji. Jedynie kilka baz danych obsługuje mechanizm punktów kontrolnych przez SQL, w których ustawia się znaczniki fragmentów transakcji i wycofanie jest przeprowadzone jedynie do określonego punktu kontrolnego. Oracle daje taką możliwość (patrz przykład w następnych slajdach). Autor: KatMPB 71
  72. 72. Transakcje i blokowanie Oracle i transakcje Transakcja w Oracle9i rozpoczyna się od pierwszej instrukcji SQL, wydanej po poprzedniej transakcji lub pierwszą instrukcją SQL po nawiązaniu połączenia z bazą danych. Transakcja kończy się instrukcją COMMIT [WORK] lub ROLLBACK [WORK]. Przykład! - Procedura PL/SQL z wykorzystaniem transakcji. CREATE OR REPLACE PROCEDURE "KATMPB".„TEST" is begin update konta set saldo = saldo – kwota_transakcji where nr_konta = konto_nadawcy; update konta set saldo = saldo + kwota_transakcji where nr_konta = konto_odbiorcy; COMMIT; end; Autor: KatMPB 72
  73. 73. Transakcje i blokowanie Oracle i transakcje Przykład! - Procedura PL/SQL z wykorzystaniem transakcji i SAVEPOINT. CREATE OR REPLACE PROCEDURE "KATMPB"."TEST" as SAVEPOINT A; begin update konta set saldo = saldo – kwota_transakcji where nr_konta = konto_nadawcy; SAVEPOINT A; update konta set saldo = saldo + kwota_transakcji where nr_konta = konto_odbiorcy; ROLLBACK TO A: COMMIT; end; Autor: KatMPB 73
  74. 74. Transakcje i blokowanie Oracle i transakcje Segmenty wycofywania / przestrzeń tabel cofania. Niezależnie od formatu wybranego do zarządzania funkcjami wycofywania operacji wykonywanych na bazie danych, informacje te odgrywają kluczową rolę we wdrażaniu modelu spójności odczytu. Przy wielu sesjach użytkownika, w których jednocześnie są wykorzystywane te same dane, model ten zapewnia transakcjom każdej sesji uzyskiwanie dostępu do wartości w kolumnach bazy danych przez cały czas trwania tych transakcji. Autor: KatMPB 74
  75. 75. Transakcje i blokowanie Oracle i transakcje Blokady i zatrzaski Blokady w programie Oracle9i gwarantują, że operacje w różnych sesjach nie mogą wchodzić w interakcje z danymi wykorzystywanymi już w innych sesjach. Interakcja oznacza wszystkie działania, inne niż związane z zastosowaniem instrukcji select (odczytem). Mechanizm blokady zapewnia ochronę integralności danych i jest obsługiwany automatycznie przez system Oracle9i. Blokady są uruchamiane w momencie, gdy instrukcje SQL rozpoczynają interakcje z danymi i trwają przez cały czas realizacji transakcji. W systemie Oracle9i obsługiwane są dwa tryby blokad: w trybie wyłączności i w trybie wspólnego użytkowania. System Oracle9i zgłasza żądanie o uruchomienie blokady w możliwie najmniej restrykcyjnym trybie. Uwaga! – System Oracle9i może okresowo konwertować pewne blokady wierszy na blokady tabeli. Autor: KatMPB 75
  76. 76. Transakcje i blokowanie Oracle i transakcje Blokady i zatrzaski Zatrzaski są mechanizmami niskiego poziomu, które pomagają w zarządzaniu wewnętrznymi operacjami systemu Oracle9i, pełnią one kluczową rolę w obsłudze instancji. Zatrzaski i blokady mogą prowadzić do sytuacji, w których oczekiwanie na realizację procesu będzie trwało dość długo. Autor: KatMPB 76
  77. 77. Przetwarzanie rozproszone  Partycjonowanie aplikacji przy wykorzystaniu przetwarzania rozproszonego  Pliki konfiguracyjne Oracle Net  Łącza baz danych i ich rola Autor: KatMPB 77
  78. 78. Przetwarzanie rozproszone Partycjonowanie aplikacji przy wykorzystaniu przetwarzania rozproszonego „Najczęstszym źródłem niezadowolenia użytkowników systemów komputerowych są ich niska wydajność lub słaba dostępność. Przetwarzanie rozproszone pozwala zmniejszyć te niedogodności przez następujące operacje.” - Funkcje wymagające dużych mocy obliczeniowych można rozdzielić pomiędzy kilka serwerów; - Poszczególne funkcje aplikacji można przypisać do różnych serwerów; - Przechowywanie stosunkowo niewielkiej liczby danych na każdym z węzłów systemu oznacza skrócenie czasu wykonywania kopii zapasowych i ewentualnego przywracania danych; - Kiedy jakaś awaria serwera spowoduje niedostępność aplikacji na jednym z węzłów systemu, nie wpływa to na dostępność pozostałych komponentów systemu. Autor: KatMPB 78
  79. 79. Przetwarzanie rozproszone Oracle Net Oracle Net to kręgosłup środowiska przetwarzania rozproszonego Oracle9i. Sercem środowiska Oracle Net są procesy nasłuchujące, prowadzące nasłuch na określonym porcie komputera włączonego do sieci. Podstawowymi plikami konfiguracyjnymi wykorzystywanymi w Oracle Net są: - listener.ora - tnsnames.ora Plik listener.ora opisuje środowisko, w ramach którego są obsługiwane żądania nawiązania połączenia z usługą. Po uruchomieniu na danym węźle procesu nasłuchującego przechwytuje on żądania przesyłane na określony port serwera i przekazuje je do odpowiedniej bazy danych Oracle9i. Autor: KatMPB 79
  80. 80. Przetwarzanie rozproszone Oracle Net Plik listener.ora # LISTENER.ORA Network Configuration File: C:OraHome90networkadminlistener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = katmpb)(PORT = 1521)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:OraHome90) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = KatMPBOr) (ORACLE_HOME = C:OraHome90) (SID_NAME = KatMPBOr) -> odnosi się do logicznego „uchwytu” wykorzystywanego w odwołaniach do baz danych Oracle9i. Jest to rodzaj identyfikatora ułatwiającego kierowanie żądań nawiązania połączenia do odpowiedniej bazy danych. Autor: KatMPB ) ) 80
  81. 81. Przetwarzanie rozproszone Oracle Net Plik tnsnames.ora w przeciwieństwie do pliku konfiguracyjnego listener.ora, przechowywanego na serwerze, na którym uruchomione zostały bazy danych Oracle9i jest plikiem o zasięgu korporacyjnym, który powinien znaleźć się w każdym systemie, w którym działają klienty zdalnych baz danych Oracle9i. Uwaga! – Niezależnie od architektury systemowej (dwu- czy trójwarstwowej), plik tnsnames.ora musi być dostępny dla każdego klienta. Trójwarstwowa architektura klient-serwer Rozmieszczenie w jednym lub niekiedy obu systemach listener.ora tnsnames.ora tnsnames.ora tnsnames.ora Klient działający w środowisku Windows 2000 Serwer aplikacji Autor: KatMPB Serwer bazy danych na platformie Sun Solaris 81
  82. 82. Przetwarzanie rozproszone Oracle Net Plik tnsnames.ora KATMPBOR = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = kattserv.no-ip.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = KatMPBOr) )) INST1_HTTP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = katmpb)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = MODOSE) (PRESENTATION = http://HRService) )) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) )) Autor: KatMPB 82
  83. 83. Przetwarzanie rozproszone Oracle Net Pliki listener.ora i tnsnames.ora można konfigurować ręcznie albo przy pomocy narzędzia dostarczonego wraz z pakietem Oracle9i o nazwie Network Configuration Assistant. Autor: KatMPB 83
  84. 84. Przetwarzanie rozproszone Łącza baz danych i ich rola Aby użytkownik mający konto na jednej bazie danych mógł korzystać z baz danych na innych serwerach w ramach środowiska rozproszonego musi być utworzony obiekt database link dostępny temu użytkownikowi (mający do niego odpowiednie prawa). Oprócz tego musi być utworzona cała masa obiektów tzw. synonimów tabel. Przykład! CREATE PUBLIC DATABASE LINK „NAZWA_LINKU" CONNECT TO „użytkownik" IDENTIFIED BY "password" USING 'KATMPBOR‘ CREATE SYNONYM „użytkownik2".„nazwa_synonimu" FOR „użytkownik".„nazwa_tabeli"@LINK_NAZWA_LINKU.US.ORACLE.COM Autor: KatMPB 84
  85. 85. Oracle a Internet (Java)  Technologia Enterprise Java Engine (EJE)  Rola języka Java w bazach danych Autor: KatMPB 85
  86. 86. Oracle a Internet (Java) Technologia Enterprise Java Engine (EJE) Korzystanie z baz danych Oracle jako kluczowych elementów aplikacji internetowych zapoczątkowane zostało w wersji 8i baz danych Oracle. Wersja ta zawierała oprogramowanie przystosowane do działania w sieci Internet, umożliwiając wyprowadzanie aplikacji z baz danych. Umieszczenie w bazach danych oprogramowania obsługi sieci Internet to rozwiązanie skalowalne. Kiedy korporacja Oracle wprowadziła Javę do baz danych (w wydaniu 8.1.5), wyposażyła pakiet w komponent o nazwie JServer. JServer obsługuje język Java w wnętrza bazy danych, zwiększając bezpieczeństwo serwera i efektywność wykorzystania pamięci. W kolejnych wersjach oprogramowania bazodanowego Oracle (8.1.6) JServer zastąpiono wirtualną maszyną Javy. W Oracle9i środowisko JVM przemianowano na Enterprise Java Engine (EJE). EJE to całościowa architektura obsługująca dużą liczbę metod dostępu, rodzajów oprogramowania klienckiego i warstw dostępu użytkowników. Autor: KatMPB 86
  87. 87. Oracle a Internet (Java) Technologia Enterprise Java Engine (EJE) Schemat architektury EJE Warstwa klienta (JVM) Baza danych Oracle9i (EJE) Warstwa pośrednicząca serwer aplikacji Minimalny sterownik JDBC Gniazda Sterownik OCI JDBC Klient Oracle Net HTTP Warstwa bazy danych Moduł SQL JDBC Server Driver Oracle9i Application Server JVM Oracle Net Tłumacz języka SQLJ po stronie serwera Java Virtual Engine (ORB) Klient EJB Klient Klient RMI/IIOP Moduł PL/SQL IIOP Sterownik JDBC OCI Serwer EJB Biblioteki klas IIOP Moduł serwletów HTTP Autor: KatMPB 87
  88. 88. Oracle a Internet (Java) Technologia Enterprise Java Engine (EJE) Komunikacja z bazą danych Istnieje wiele różnych sposobów komunikowania się z bazą danych. Wielkość metod komunikacji dotyczy tak bezpośredniego dostępu do danych, jak i dostępu za pośrednictwem serwera aplikacji. Możliwe protokoły komunikacyjne stosowane w EJE: - Oracle Net oraz TCP/IP – aby umożliwić komunikowanie się klientów z bazą danych przez ten protokół na każdym kliencie musi być zainstalowane oprogramowanie Oracle Net oraz oprogramowanie implementujące protokół (TCP/IP); - IIOP – warstwa prezentacji – ten protokół jest bezpośrednio związany z technologią CORBA i Enterprise Java Beans (EJB); - gniazda – warstwa transportowa – komunikacja polega na otwarciu gniazda i zapisu do lub odczytu z tego gniazda; - HTTP – warstwa aplikacji – ten protokół umożliwia przesyłanie żądań bezpośrednio do bazy danych lub serwera aplikacji i odbierania z serwera stron WWW konstruowanych na podstawie zawartości Autor: KatMPB 88 bazy danych.
  89. 89. Oracle a Internet (Java) Rola języka Java w bazach danych Jednym z najcenniejszych właściwości baz danych Oracle9i jest włączenie do mechanizmu obsługującego bazę danych interpretera języka Java. Obsługa Javy w bazach danych Oracle9i oznacza możliwość przechowywania w bazie danych programów w języku Java i ich wykonywanie, tak jak zwykłych programów PL/SQL. Środowisko WWW zostało rozszerzone o nowy paradygmat – stanowi swojego rodzaju miniaturowy system operacyjny, podobny do systemów takich jak Windows czy Unix w tym, że aplikacje Javy uruchamiane w przeglądarce WWW są w bardzo małym stopniu zależne od cech systemu operacyjnego. Ich „systemem operacyjnym” jest sama przeglądarka. Niestety, przeciwwskazaniem do stosowanie apletów w „poważnych” zastosowaniach jest długi czas ładowania i powolność działania apletów. Dzięki serwletom – apletom Javy wykonywanym po stronie serwera – aplikacje rozproszone w języku Java zyskują nowe oblicze, znakomicie sprawdzają się w dziedzinie poważnych zastosowań wymagających dużej skalowalności. Autor: KatMPB 89
  90. 90. Oracle a Internet (Java) Rola języka Java w bazach danych Czynności wymagane do realizacji zapytania do bazy danych, inicjowanego za pośrednictwem sterownika JDBC: - Zarejestrowanie sterownika; - Nawiązanie połączenia z bazą; - Utworzenie zapytania SQL; - Wykonanie zapytania; - Wygenerowanie zbioru wynikowego; - Przetworzenie (wiersz po wierszu) zbioru wynikowego; - Przypisanie wyników do zmiennych Javy; - Zwolnienie zasobów (zbioru wynikowego, zapytania, połączenia). Uwaga! – Przykład takiej aplikacji można zobaczyć w mojej prezentacji dotyczącej MySQL-a, składnia poleceń jest taka sama. Autor: KatMPB 90
  91. 91. Oracle a Internet (Java) Rola języka Java w bazach danych Przykład! CREATE OR REPLACE JAVA SOURCE NAMED "KATMPB"."JAVAWITAJ" AS public class Witaj { public static java.lang.String piszWitaj(java.lang.String pvar) { return "Witaj " + pvar; } } Do uruchomienia tego obiektu potrzebny jest jeszcze jeden obiekt składowany np. function. CREATE OR REPLACE FUNCTION "KATMPB"."PISZ_WITAJ" (pstr varchar2) return varchar2 as language Java name 'Witaj.piszWitaj(java.lang.String) return java.lang.String'; Autor: KatMPB 91
  92. 92. Oracle Application Server Serwer aplikacji Oracle9i Serwery aplikacji to programy obsługujące wszelkie operacje związane z komunikowaniem się użytkowników ze stanowiącymi szkielet systemu aplikacjami, korzystającymi z bazy danych Oracle9i. Serwery aplikacji są stosowane zazwyczaj w złożonych, wykorzystujących transakcje aplikacjach. Aby sprostać wysokim wymaganiom, korporacyjny serwer aplikacji musi być wyposażony w wysoko dostępne, wydajne rozproszone usługi i obsługiwać złożone metody dostępu do bazy danych. Ewolucja serwerów aplikacji: Oracle Web Server -> Oracle Application Server -> Internet Application Server. (Spyglass HTTP) (Apache) Oracle9iAS jest obecnie oferowany w czterech odmianach: Minimal, Standard Edition, Enterprise Edition i Wireless Edition. Autor: KatMPB 92
  93. 93. Oracle Application Server Schemat trójwarstwowej architektury, popularnej dla systemów udostępniania danych w Internecie Serwer aplikacji Oracle9i Klient Warstwa I: klient Logika aplikacji Warstwa II: serwer aplikacji Autor: KatMPB Baza Danych Oracle9i Warstwa III: baza danych 93
  94. 94. Oracle Application Server Architektura Oracle9iAS Usługi komunikacyjne Usługi Business Logic Usługi prezentacji Oracle BC4J Server HTTP Oracle (Apache) Apache JServer Maszyna Wirtualna Javy Oracle JSP PL/SQL Oracle PSP Oracle Forms Perl Usługi zarządzania treścią Moduł dla serwera Microsoft IIS Internetowy system plików iFS Usługi Portalowe Usługi buforowania Buforowanie bazy danych Buforowanie stron WWW Usługi wspomagania decyzji Oracle Portal Oracle Raports Portal-to-Go Oracle Discoverer Autor: KatMPB 94
  95. 95. Oracle Application Server Architektura Oracle9iAS – komponenty Communication Services Podstawą modułu usług komunikacyjnych jest serwer HTTP Apache. Zestaw funkcji serwera Apache została rozszerzona za pośrednictwem dodatkowych modułów obsługujących komunikacje z bazą danych. Moduły te (mod_ssl, mod_perl, mod_plsql, mod_jserv oraz mod_ose) umożliwiają tworzenie aplikacji komunikujących się za pośrednictwem serwera HTTP z bazą danych. Moduł mod_plsql umożliwia komunikację pomiędzy serwerem aplikacji a procedurami składowanymi, przechowywanymi w bazie danych. Dzięki takiej możliwości funkcjonalność bazy danych jest udostępniania w Internecie. Moduł mod_jserv przekazuje odwołania do serwletów Javy. Typowy serwlet Javy wywołuje procedury składowane PL/SQL i wyświetla rezultaty ich działania w formie tabeli języka HTML. Autor: KatMPB 95
  96. 96. Oracle Application Server Architektura Oracle9iAS – komponenty Business Logic Services Po zapewnieniu poprawnej komunikacji pomiędzy serwerem pośredniczącym a użytkownikami i bazą danych należy przystąpić do implementacji samej aplikacji. W tym celu można wykorzystaćfunkcje Business Logic Services, zawarte w Oracle9iAS. Funkcje te wspomagają działanie aplikacji; poszczególne komponenty BLS pozwalają aplikacji na korzystanie z XML, Javy czy procedur PL/SQL oraz do dostosowywania formularzy do prezentacji w sieci WWW. -Komponenty BC4J są gotowymi do wykorzystania komponentami, ułatwiającymi konsekwentną implementację reguł biznesowych w aplikacji. -JVM to działająca po stronie serwera platforma wykonawcza Javy obsługująca komponenty EJB, serwery CORBA i procedury składowane bazy danych. JVM zaimplementowana w Oracle9iAS obsługuje usługi Javy w warstwie pośredniczącej i bazie danych. Autor: KatMPB 96
  97. 97. Oracle Application Server Architektura Oracle9iAS – komponenty Business Logic Services -PL/SQL umożliwia użytkownikom komunikowanie się z procedurami składowanymi języka PL/SQL, przechowywanymi w bazie danych. Procedury składowane PL/SQL pobierają dane z bazy danych i zwracają je np. w formacie HTML. -Oracle Forms (usługi Forms Services) dają możliwość wyświetlania formularzy utworzonych przy pomocy pakietu Oracle Developer Suite9i w przeglądarkach internetowych. Dzięki temu można zaniechać tworzenia aplikacji w architekturze klient – serwer. Korporacja Oracle od pewnego czasu przestała wspierać model klient - serwer. Autor: KatMPB 97
  98. 98. Oracle Application Server Architektura Oracle9iAS – komponenty Presentation Services Kolejnym etapem podróży po możliwościach serwera aplikacji będzie zaprezentowanie tych elementów serwera aplikacji, które są najbliższe użytkownikom końcowym systemu. Tę możliwość dają komponenty Presentation Services. -Apache JServ jest platformą wykonawczą serwletów Javy. Na potrzeby Oracle9iAS JServ został tak skonfigurowany, aby współpracował z serwerem Apache i maszyną wirtualną Javy, działającą wewnątrz serwera aplikacji. -Java Server Pages (JSP) jest oparta na technologii serwletów Javy i umożliwia tworzenie i prezentowanie stron w tej technologii. -Perl podobnie jak JSP.  Autor: KatMPB 98
  99. 99. Oracle Application Server Architektura Oracle9iAS – komponenty Presentation Services -PL/SQL Server Pages (PSP) można określić jako przynależną do Oracle wersję Java Server Pages, wykorzystującą zamiast języka Java język PL/SQL. CREATE OR REPLACE PROCEDURE "KATMPB"."TEST_PSP" AS BEGIN NULL; htp.prn(' <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="Author" content"KatMPB"> <title> TestKatMPB (PSP) </title> </head> <body> Witam w bazie danych Oracle9i <p>’); declare zmp boolean; begin zmp := owa_util.tableprint('Test', 'border=1 cellspacing=4 cellpadding=4 width=100%'); end; htp.prn(' </body> </html> '); Autor: KatMPB END; Przykład! Uwaga! - Następnie taki obiekt należy umieścić w bazie danych za pomocą polecenia: loadpsp 99
  100. 100. Oracle Application Server Architektura Oracle9iAS – usługi buforowania Pobierając dane z korporacyjnej bazy danych czy oglądając korporacyjną stronę WWW użytkownicy odwołują się wciąż do tych samych baz danych i plików. Dlatego zarówno w warstwie bazy danych, jak i w warstwie pośredniczącej uaktywniany jest mechanizm buforowania. Dzięki temu system Oracle nie pobiera danych z bazy danych za każdym razem, kiedy użytkownik się do nich odwołuje. Dane są odczytywane z pamięci buforowej. Podobnie jest w przypadku stron WWW: dzięki buforowaniu na poziomie serwera aplikacji każdorazowe odwołanie do dokumentu HTML nie wymaga jego odczytu z dysku. Na czym polega buforowanie bazy danych? Na czym polega buforowanie stron WWW? Autor: KatMPB odpowiedź znajdziecie w książce pt.: „Oracle 9i - Przewodnik dla początkujących” wyd. Oracle Press – BARDZO POLECAM  100
  101. 101. Oracle Application Server Architektura Oracle9iAS – usługi zarządzania treścią System plików iFS służy do przechowywania w bazie danych plików dowolnego typu. Dzięki temu systemowi jest możliwe umieszczenie w bazie danych rysunku, dokumentu tekstowego czy dowolnego innego obiektu. Z punktu widzenia użytkowników pliki te można wykorzystywać tak samo, jak pliki przechowywane na serwerze pocztowym, serwerze plików czy na stronie WWW. Administracja systemem plików iFS nie różni się od zwykłej administracji korporacyjną bazą danych. Mówiąc o systemie plików iFS nie mam na myśli kolumn typu LOB (BLOB, CLOB, NCLOB i BFILE). System plików iFS jest również w pełni obsługiwany przez serwer aplikacji. Autor: KatMPB 101
  102. 102. Oracle Application Server Architektura Oracle9iAS – usługi Oracle Portal Usługi Oracle Portal umożliwiają konstruowanie witryn-portali, integrujących całą zawartość bazy danych na pojedynczej stronie WWW. Za pomocą usług Portal serwera aplikacji Oracle9i można udostępniać zawartość korporacyjnych portali zarówno użytkownikom korzystającym z połączeń stałych, jak i użytkowników mobilnych. Portal korporacyjny jest aplikacją WWW udostępniającą ujednoliconą i zintegrowaną bramę do rozmaitych danych korporacji, skupioną na pojedynczej stronie WWW. Drugim modułem udostępniający usługi Portal jest przeznaczony do obsługi użytkowników korzystających z urządzeń przenośnych (bezprzewodowych) nosi nazwę Portal-to-Go. Autor: KatMPB 102 i
  103. 103. Oracle Application Server Architektura Oracle9iAS – usługi wspomagania decyzji W dziedzinie komputerowego wspomagania podejmowania decyzji stosuje się bowiem modele zakładające gromadzenie danych generowanych przez system, ich analizę i późniejsze formatowanie. W przeszłości narzędzia analityczne wspomagające proces podejmowania decyzji były osobnymi produktami, w serwerze Oracle9iAS zostały one wbudowane do serwera aplikacji. Raporty - dzięki rozszerzeniu serwera Oracle9iAS o moduł Oracle Reports Services i Reports Servlets możliwe jest uruchamianie raportów utworzonych za pomocą narzędzia Oracle Reports Developer w przeglądarkach korzystających z zasobów intranetu, extranetu i Internetu. Oracle Discoverer 3i jest to narzędzi dzięki któremu można w łatwy sposób tworzyć strony internetowe korzystające z połączeń z bazą danych. Autor: KatMPB 103
  104. 104. Oracle Application Server Formularze i raporty Dzięki narzędziu Oracle Developer Suite 9i można tworzyć raporty i formularze które następnie można wykorzystać w aplikacjach bazujących na przeglądarkach. O formularzach i raportach wspomniałem już we wcześniejszych slajdach omawiając Oracle Application Server. Autor: KatMPB 104
  105. 105. Partycjonowanie danych Wstęp Kiedy wiersz jest dodawany do standardowej tabeli, nie istnieje zależność pomiędzy wartościami w tym wierszu a tym, gdzie wiersz jest przechowywany. Oracle umieszcza wiersz tam, gdzie znajdzie wolną przestrzeń w bloku. Nie ma na to zwykle wpływu użytkownik, ponieważ Oracle wie, gdzie wiersz jest przechowywany i czyni dostęp do niego przezroczystym. Jednak podczas pracy ze szczególnie dużymi tabelami często jest zalecane przechowywanie danych w różnych przestrzeniach tabel w zależności od cech charakterystycznych każdego wiersza. Za tym kryje się właśnie mechanizm partycjonowania. Partycjonowanie zezwala na zastąpienie jednego ogromnego segmentu danych wieloma małymi segmentami w innej przestrzeni tabel. Pozwala to na rozproszenie operacji I/O. Autor: KatMPB 105
  106. 106. Partycjonowanie danych Po co partycjonować dane? 1. Tabele partycjonowane wykorzystują mniejsze pliki (np. nie większe niż 2GB). Archiwizacja takich plików jest dużo łatwiejsza niż archiwizacja plików całych tabel; 2. Jeżeli baza danych została podzielona na mniejsze części, awaria sprzętu spowoduje utratę mniejszej części danych; 3. Od czasu do czasu administrator współpracujący z obsługą techniczną Oracle jest proszony o wykonanie analizy tabeli. Analiza ta przebiega znaczeni szybciej, jeżeli tabele o wielu milionach wierszy zostaną podzielone na partycje; 4. Poszczególne części tabeli mogą być poddawane czynnościom konserwacyjnym, podczas gdy pozostałe partycje mogą być normalnie wykorzystywane przez użytkowników. Autor: KatMPB 106
  107. 107. Partycjonowanie danych Partycjonowanie zakresowe Najprostszą i pierwszą stosowaną techniką partycjonowania tabel jest partycjonowanie zakresowe, dostępne od mniej więcej 1997 roku w bazach danych Oracle 8.0. Obojętnie jaką metodę partycjonowania wybierzemy należy najpierw się zastanowić nad wyborem klucza partycjonowania. Na wybór kolumny (kolumn) stanowiącej podstawę klucza partycjonowania mają wpływ trzy główne czynniki: 1. Kolumna klucza partycjonowania musi być częścią predykatu zapytania SQL wybierającego dane z partycjonowanej tabeli; 2. Kolumna ta musi zawierać wystarczającą liczbę różnych wartości, aby możliwy był podział tabeli na odpowiednią liczbę partycji; 3. Po stwierdzeniu odpowiedniej liczby rozróżnialnych wartości kolumny należy zadbać o równomierny rozkład wartości kolumny, ponieważ wpływa on bezpośrednio na rozkład wierszy w partycjach Autor: KatMPB 107
  108. 108. Partycjonowanie danych Partycjonowanie zakresowe Przykład! CREATE TABLE "KATMPB"."TEST" ("ID_DZIEN" NUMBER(10) NOT NULL, "TEXT" VARCHAR2(20 byte) NOT NULL, "DATA_DZIEN" DATE NOT NULL) TABLESPACE "DANE” STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING PARTITION BY RANGE ("DATA_DZIEN") ( PARTITION "PARTYCJONOWANIE_TEST_P1" VALUES LESS THAN (TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE "DANE1" STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING, PARTITION "PARTYCJONOWANIE_TEST_P2" VALUES LESS THAN (TO_DATE(' 2005-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE "DANE2" STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING, PARTITION "PARTYCJONOWANIE_TEST_P3" VALUES LESS THAN (TO_DATE(' 2006-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE "DANE3" STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING, PARTITION "PARTYCJONOWANIE_TEST_PMAX" VALUES LESS THAN (MAXVALUE) TABLESPACE "DANE4" STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING); … Autor: KatMPB 108
  109. 109. Partycjonowanie danych Partycjonowanie zakresowe Przykład! … CREATE INDEX KATMPB.IDX_TEST ON KATMPB.TEST ("DATA_DZIEN") LOCAL ( PARTITION PARTYCJONOWANIE_TEST_IDX_P1 TABLESPACE DANEX1, PARTITION PARTYCJONOWANIE_TEST_IDX_P2 TABLESPACE DANEX2, PARTITION PARTYCJONOWANIE_TEST_IDX_P3 TABLESPACE DANEX3, PARTITION PARTYCJONOWANIE_TEST_IDX_PMAX TABLESPACE DANEX4 ); Autor: KatMPB 109
  110. 110. Partycjonowanie danych Partycjonowanie zakresowe Indeksowanie tabel partycjonowanych Indeksy partycjonowane lokalnie: - liczba partycji indeksu lokalnego jest dokładnie równa liczbie partycji indeksowanej tabeli; - zapytanie tworzące indeks lokalny nie zawiera klauzuli values less than, ponieważ wartości graniczne są określane na podstawie wartości granicznych indeksowanej tabeli. Indeksy partycjonowane globalnie: - liczba partycji indeksu globalnego jest podawana jawnie; - zapytanie tworzące indeks globalny zawiera klauzulę values less than, dzięki czemu możemy jawnie przypisywać wartości graniczne; Autor: KatMPB 110
  111. 111. Partycjonowanie danych Partycjonowanie według listy W przypadku partycjonowania według listy w poleceniu tworzącym tabelę mogą pojawić się konstrukcje podobne do poniższych. CREATE TABLE "KATMPB"."TEST" ("ID_DZIEN" NUMBER(10) NOT NULL, "TEXT" VARCHAR2(20 byte) NOT NULL, „TYP” CHAR(1) NOT NULL) TABLESPACE "DANE” STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING PARTITION BY LIST („TYP") ( PARTITION "PARTYCJONOWANIE_TEST_P1" VALUES (‘A’, ‘B’, ‘C’) TABLESPACE "DANE1" STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING … ); Autor: KatMPB 111
  112. 112. Partycjonowanie danych Partycjonowanie haszowane W przypadku partycjonowania haszowanego wystarczy wskazać jedną do 16 kolumn klucza partycjonowania. Oracle9i automatycznie przydziela wiersze do określonej liczby partycji na podstawie zawartości kolumn klucza partycjonowania. Przykład! CREATE TABLE "KATMPB"."TEST" ("ID_DZIEN" NUMBER(10) NOT NULL, "TEXT" VARCHAR2(20 byte) NOT NULL, ”DZIELNICA” VARCHAR2(20) NOT NULL) TABLESPACE "DANE” STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING PARTITION BY HASH („DZIELNICA") PARTITION 8 STORE IN (adresy_pt1, adresy_pt2, adresy_pt3, adresy_pt4); Autor: KatMPB 112
  113. 113. Partycjonowanie danych Jaki zastosować model partycjonowania? Kwestią kluczową dla każdego modelu partycjonowania jest liczba wierszy tabeli oraz metoda dostępu (w jaki sposób są konstruowane zapytania SQL odwołujące się do obiektów bazy danych). Podejmując decyzję o progowej liczbie wierszy, kwalifikującej tabelę do partycjonowania, można skorzystać z dwóch kryteriów: - liczba wierszy tabeli – do partycjonowania nadają się tabelę o liczbie wierszy przekraczającej 2 miliony (dane według książek wydawnictwa Oracle Press). - liczba kolumn i liczba wierszy tabeli – „gruba” tabela, zawierająca tylko 700 000 wierszy może zajmować dużo więcej miejsca niż analogiczna tabela zawierająca jedynie 12 do 16 kolumn. Autor: KatMPB 113
  114. 114. Partycjonowanie danych Jaki zastosować model partycjonowania? Gdy do partycjonowania wyznaczono tabelę test (z racji jej zbyt dużych rozmiarów), należy przed przystąpieniem do podziału tabeli przeanalizować strukturę zapytań SQL odwołujących się do tej tabeli. Analiza zapytań może np. doprowadzić do podjęcia decyzji o partycjonowaniu według listy. Oto przykład: pewien uniwersytet prowadzi zajęcia w siedmiu kierunkach: biologia, historia, fizyka, informatyka, chemia, astronomia i matematyki. Najintensywniej oblegane są kierunki informatyki i matematyki więc zapytania kierowane do bazy danych odwołują się głównie do nich. W takim przypadku pożądane jest zgrupowanie w jednej partycji dwóch najaktywniejszych kierunków. Przykład! … partition p_rzadko values (‘biologia’, ‘historia’, ‘fizyka’, ‘chemia’) … … partition p_czesto values (‘matematyka’, ‘informatyka’) … Autor: KatMPB 114
  115. 115. Partycjonowanie danych Jaki zastosować model partycjonowania? W przypadku gdy wiadomo, że zastosowanie partycjonowania zakresowego czy partycjonowania według listy nie zaowocuje eliminacją partycji podczas realizacji zapytania, należy spróbować partycjonowania haszowanego. Tabela – Podsumowanie zalet wszystkich trzech typów partycjonowania. Korzyść Eliminacja partycji Partycjonowanie zakresowe Partycjonowanie wg listy X X Równomierny rozkład wierszy Partycjonowanie haszowane X Autor: KatMPB 115
  116. 116. Partycjonowanie danych Jaki zastosować model partycjonowania? Uwaga! – W hurtowniach danych można pokusić się o równoczesne wykorzystanie zalet partycjonowania zakresowego (lub partycjonowania według listy) oraz partycjonowania haszowanego tworząc w ten sposób podział hybrydowy. Autor: KatMPB 116
  117. 117.  Ciastka, kawa i pytania. Pytania można składać mailem: marekbilski@katmpbsoft.pl KatMPB WWW: http://katmpbsoft.blogspot.com Autor: KatMPB 117

×