SlideShare une entreprise Scribd logo
1  sur  117
Oracle jako przykład
komercyjnego systemu
bazodanowego
Autor: KatMPB
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Wprowadzenie do Oracle
Architektura Oracle

Rys. Pamięć
dzielona, procesy
pomocnicze i
interakcje między
plikami.

Autor: KatMPB

17
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Administrowanie Oracle
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Usuwanie kont użytkowników (SQL)
drop user nazwa_użytkownika;

Autor: KatMPB

52
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Przetwarzanie rozproszone
 Partycjonowanie aplikacji przy wykorzystaniu

przetwarzania rozproszonego
 Pliki konfiguracyjne Oracle Net
 Łącza baz danych i ich rola

Autor: KatMPB

77
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
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
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
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
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
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
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
Oracle a Internet (Java)
 Technologia Enterprise Java Engine (EJE)
 Rola języka Java w bazach danych

Autor: KatMPB

85
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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


Ciastka, kawa i pytania.
Pytania można składać mailem: marekbilski@katmpbsoft.pl

KatMPB
WWW: http://katmpbsoft.blogspot.com

Autor: KatMPB

117

Contenu connexe

En vedette

Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolakówPrzygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
wiosenka
 
Zdrowy styl życia
Zdrowy styl życiaZdrowy styl życia
Zdrowy styl życia
szkolagim3
 
Wskazniki i rezultaty
Wskazniki i rezultatyWskazniki i rezultaty
Wskazniki i rezultaty
UM Łódzkie
 
budowa komputera
budowa komputerabudowa komputera
budowa komputera
Bogdan Miś
 
Elementarz fizyki budowli
Elementarz fizyki budowliElementarz fizyki budowli
Elementarz fizyki budowli
Jakub Milczarek
 
Szkolenie okresowe kierowników
Szkolenie okresowe kierownikówSzkolenie okresowe kierowników
Szkolenie okresowe kierowników
dezipl
 
Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)
ainizbahari97
 

En vedette (16)

Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolakówPrzygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
Przygoda ze sportem- rozwujanie aktywności ruchowej przedszkolaków
 
Zdrowy styl życia
Zdrowy styl życiaZdrowy styl życia
Zdrowy styl życia
 
Understanding and Managing Electronic Word of Mouth (EWOM)
Understanding and Managing Electronic Word of Mouth (EWOM)Understanding and Managing Electronic Word of Mouth (EWOM)
Understanding and Managing Electronic Word of Mouth (EWOM)
 
10 przykazań Bożych
10 przykazań Bożych10 przykazań Bożych
10 przykazań Bożych
 
Wskazniki i rezultaty
Wskazniki i rezultatyWskazniki i rezultaty
Wskazniki i rezultaty
 
budowa komputera
budowa komputerabudowa komputera
budowa komputera
 
JavaStart - kurs Java Podstawy
JavaStart - kurs Java PodstawyJavaStart - kurs Java Podstawy
JavaStart - kurs Java Podstawy
 
Computer Virus
Computer VirusComputer Virus
Computer Virus
 
Elementarz fizyki budowli
Elementarz fizyki budowliElementarz fizyki budowli
Elementarz fizyki budowli
 
Szkolenie okresowe kierowników
Szkolenie okresowe kierownikówSzkolenie okresowe kierowników
Szkolenie okresowe kierowników
 
Moon
MoonMoon
Moon
 
Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)
 
ANTIVIRUS AND VIRUS Powerpoint presentation
ANTIVIRUS AND VIRUS Powerpoint presentationANTIVIRUS AND VIRUS Powerpoint presentation
ANTIVIRUS AND VIRUS Powerpoint presentation
 
Apple: The Next King of Search By Ian Sefferman
Apple: The Next King of Search By Ian SeffermanApple: The Next King of Search By Ian Sefferman
Apple: The Next King of Search By Ian Sefferman
 
Developing an Intranet Strategy
Developing an Intranet StrategyDeveloping an Intranet Strategy
Developing an Intranet Strategy
 

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

  • 1. Oracle jako przykład komercyjnego systemu bazodanowego Autor: KatMPB
  • 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
  • 17. Wprowadzenie do Oracle Architektura Oracle Rys. Pamięć dzielona, procesy pomocnicze i interakcje między plikami. Autor: KatMPB 17
  • 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
  • 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. 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
  • 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. 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
  • 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. 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