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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Przetwarzanie rozproszone
Partycjonowanie aplikacji przy wykorzystaniu
przetwarzania rozproszonego
Pliki konfiguracyjne Oracle Net
Łącza baz danych i ich rola
Autor: KatMPB
77
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. 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. 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. 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
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. 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. Oracle a Internet (Java)
Technologia Enterprise Java Engine (EJE)
Rola języka Java w bazach danych
Autor: KatMPB
85
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
Ciastka, kawa i pytania.
Pytania można składać mailem: marekbilski@katmpbsoft.pl
KatMPB
WWW: http://katmpbsoft.blogspot.com
Autor: KatMPB
117