Lesson15

background image

ARCHITEKTURA

SYSTEMU

ZARZĄDZANIA BAZĄ

DANYCH ORACLE

Przygotował Lech Banachowski na podstawie:
1.

Lech Banachowski, Bazy danych – tworzenie aplikacji, PLJ, 1998.

2.

Dokumentacja Oracle.

background image

2

Serwer bazy danych

Baza danych

- zbiór plików na dysku zawierających

tabele z danymi i inne obiekty bazy danych oraz
pomocnicze struktury danych.

Instancja

(jedna lub więcej) - oprogramowanie

operujące na bazie danych: zbiór procesów i wspólna
pamięć
umożliwiająca użytkownikom korzystanie z
bazy danych.

• Najpierw uruchamia się instancję a następnie
podłącza się do niej bazę danych. Instancja może
otworzyć i używać dokładnie jednej bazy danych w
jednej chwili.

background image

3

Rodzaje plików bazy danych i
instancji

Plik inicjalizacyjny

instancji (np. initorcl.ora) – z

parametrami.

Plik kontrolny –

z podstawowymi informacjami o

bazie danych jak: nazwa, data utworzenia, nazwy
fizycznych plików
.

Pliki bazy danych

(z danymi) - każdy z nich

przydzielony do jednej przestrzeni tabel.

background image

4

Rodzaje plików bazy danych c.d.

Pliki kopii zabezpieczającej bazy danych

-

uzyskane najprościej przez skopiowanie plików bazy
danych pod systemem operacyjnym.

Pliki dziennika powtórzeń i zarchiwizowanego
dziennika powtórzeń

Pliki śladu

– pliki do których jest wpisywana

historia działań procesów instancji bazy danych.

background image

5

Przestrzenie tabel

Przestrzeń tabel

to struktura pośrednia między

strukturą logiczną (tabelami, indeksami) a fizyczną
(plikami danych).
• Jednej przestrzeni tabel odpowiada z jednej strony
jeden lub więcej obiektów w bazie danych (np. tabela,
indeks) a z drugiej strony jeden lub więcej plików
systemu operacyjnego.
• Baza danych Oracle zawiera co najmniej jedną
przestrzeń tabel o nazwie

SYSTEM

. Ta przestrzeń tabel

zawiera słownik danych (tabele i perspektywy),
definicje wszystkich przechowywanych procedur i
pakietów, a także wyzwalaczy bazodanowych. Jest
zalecane

aby

nie

zawierała

żadnych

danych

przechowywanych przez użytkowników.

background image

6

Przykłady - użycie przestrzeni
tabel

CREATE TABLESPACE human_resources
DATAFILE 'd:\orant\logbase\tabspace_f1.dat' SIZE 20M;

CREATE TABLE Salgrade
(Grade NUMBER

CONSTRAINT PK_salgrade PRIMARY KEY

USING INDEX TABLESPACE Ind_ts,
Losal NUMBER, Hisal NUMBER)
TABLESPACE Human_resources;

CREATE USER Bolek -- lub ALTER USER
IDENTIFIED BY xyz
DEFAULT TABLESPACE Human_resources -- domyślnie SYSTEM
TEMPORARY TABLESPACE Temp -- domyślnie SYSTEM
QUOTA 10M ON Cases_ts -- UNLIMITED - bez ograniczeń
QUOTA 5M ON Temp;

background image

7

Organizacja zapisu bazy danych na
dysku

Strona (blok)

danych - rozmiar jest ustalany przy

tworzeniu bazy danych i musi być wielokrotnością
rozmiaru bloku systemu operacyjnego.

Ekstent

jest określoną liczbą położonych obok

siebie na dysku bloków danych – uzyskiwanych do
zapisu danych w wyniku jednej alokacji i
przeznaczonych do zapisu określonego typu informacji.

Segment

jest zbiorem ekstentów alokowanych dla

jednego obiektu bazy danych. Każda tabela i każdy
indeks mają swój segment, w którym są zapisywane
ich dane.

•Oracle

:

• dynamicznie przydziela miejsce na dysku, gdy
bieżące ekstenty w segmencie zostaną wypełnione,

• automatycznie dodaje nowy ekstent do
istniejącego segmentu.

background image

8

Ustawienia dotyczące alokacji
ekstentów

 

STORAGE (

INITIAL l.całkowita
NEXT l.całkowita
MINEXTENTS l.całkowita
MAXEXTENTS l.całkowita
PCTINCREASE l.całkowita)

 
1.  

INITIAL

- rozmiar w bajtach pierwszego alokowanego

ekstentu (domyślnie 5 bloków).
2.  

NEXT

- rozmiar w bajtach następnego alokowanego ekstentu

(domyślnie 5 bloków).
3.  

PCTINCREASE

to procent o jaki wzrasta rozmiar kolejno

alokowanego ekstentu po drugim (domyślnie 50%).
4. 

MINEXTENTS

to całkowita liczba ekstentów alokowanych przy

tworzeniu segmentu (domyślnie 1, dla segmentów wycofań 2).
5.  

MAXEXTENTS

to maksymalna liczba ekstentów, jakie może

przydzielić Oracle dla obiektu.

background image

9

Przykład –alokacja ekstentów w
segmencie

CREATE TABLE Dept(

Deptno NUMBER(2) PRIMARY
KEY,
Dname VARCHAR2(14),
Loc VARCHAR2(13) )
STORAGE ( INITIAL 100K NEXT
50K
MINEXTENTS 1 MAXEXTENTS 50
PCTINCREASE 5 );

 
1. 

MINEXTENTS=1

<-> dla tabeli Dept jest tworzony segment

złożony z dokładnie jednego ekstentu.
2.  

INITIAL=100K

<-> rozmiar pierwszego ekstentu wynosi 100

kilobajtów.
3.  

NEXT=50K

<-> gdy przepełni się pierwszy ekstent, następny

alokowany ekstent będzie miał rozmiar 50 kilobajtów.
4. 

PCTINCREASE=5

<-> każdy kolejno alokowany ekstent będzie

miał rozmiar większy o 5%. Zakładając, że rozmiar bloku danych
wynosi 2 kilobajty, trzeci alokowany ekstent będzie mieć rozmiar
52 kilobajty co stanowi zaokrąglenie wartości 50kB powiększonej
o 5%.
5.   

MAXEXTENTS=50

<-> maksymalnie można alokować do

segmentu tabeli Dept łącznie 50 ekstentów.

background image

10

CREATE TABLE z parametrami

 

CREATE TABLE nazwa_tabeli(
nazwa_kolumny

typ_danych

[DEFAULT

wyrażenie]

[więzy_kolumny] ...
więzy_tabelowe ...)

PCTFREE l_całkowita

/* opcjonalne od tego

miejsca */

PCTUSED l_całkowita
INITRANS l_całkowita
MAXTRANS l_całkowita
TABLESPACE przestrzeń_tabel
STORAGE klauzula_STORAGE
CLUSTER klaster (kolumna, ...)
DISABLE nazwa_więzów ....
CACHE
AS podzapytanie;

 

background image

11

Ustawienia stopnia zajętości miejsca
w blokach

Dla każdego segmentu (tabeli, klastra, indeksu, migawki)
Oracle utrzymuje jedną lub więcej list wolnych bloków, w
których jest miejsce do zapisu wierszy wpisywanych przez
kolejne instrukcje INSERT. Oprócz tego w każdym bloku
pozostawia się trochę wolnego miejsca na zwiększające się
rozmiary zapisanych w nim wierszy (jako rezultat UPDATE).

PCTFREE

– parametr określający procent miejsca w bloku

pozostawiany dla wierszy zwiększających swoje rozmiary przez
przyszłe operacje UPDATE.

Np.

PCTFREE = 20

określa, że 20% miejsca musi pozostać wolne

w bloku do użycia przez przyszłe operacje UPDATE. W rezultacie
blok zostaje usunięty z listy wolnych bloków, do których
instrukcje INSERT mogą wstawiać kolejne wiersze. PCTFREE
musi być liczbą całkowitą z przedziału od 0 do 99. Wartość 0
umożliwia zapełnianie każdego bloku w całości przy
wykonywaniu INSERT. Wartością domyślną jest 10.

background image

12

Ustawienia stopnia zajętości miejsca
w blokach – c.d.

PCTUSED

– parametr określający procent zajętego miejsca w bloku,

po przekroczeniu którego (w dół) blok zostaje wstawiony na listę
wolnych bloków.

Np.

PCTUSED = 60

oznacza, że gdy procent zajętego w bloku

miejsca spadnie poniżej 60% (z powodu DELETE i UPDATE), blok
zostaje z powrotem wstawiony na listę wolnych bloków - aby mogły
w nim umieszczać wiersze kolejno wykonywane instrukcje INSERT.

Wartością domyślną jest 40.

background image

13

Podział wiersza między różne
bloki

•Gdy UPDATE zwiększa rozmiar wiersza, tak że nie mieści się

już w bloku, Oracle szuka innego bloku wystarczająco dużego do
pomieszczenia tego wiersza.

•Jeśli znajdzie taki blok przenosi do niego wiersz - nazywa się

to

migracją wiersza

– zostawiając w starym bloku wskaźnik do

nowego położenia wiersza.

•Jeśli nie znajdzie, dzieli wiersz na kawałki i zapisuje je w

różnych blokach - nazywa się to

łańcuchowaniem wierszy

.

Powoduje to pogorszenie czasu działania. Może tu pomóc dobranie
odpowiednich parametrów PCTUSED i PCTFREE a także zwiększenie
wielkości bloku lub usunięcie i wstawienie od nowa podzielonych
na łańcuchy wierszy.

•Do sprawdzenia jak dużo jest podzielonych między blokami

wierszy używa się instrukcji ANALYZE z klauzulą LIST CHAINED
ROWS:

 

ANALYZE TABLE Nasza_tabela
LIST CHAINED ROWS INTO Chained_rows;

background image

14

Opcja CACHE

Dla małych tabel słownikowych często używanych w
aplikacji przy ich tworzeniu można określić opcję

CACHE

umożliwiającą przechowywanie ich całych w

buforach danych pamięci wewnętrznej np.
 

CREATE TABLE Dzien(Numer INTEGER, Nazwa
VARCHAR2(11))
CACHE;

background image

15

Instancja bazy danych

SGA

Procesy systemu:
serwera i
drugoplanowe

Globalny Obszar Systemu (SGA)

background image

16

Globalny Obszar Systemu
(SGA)

Bufory bazy danych

- zawierają używane ostatnio bloki

danych z bazy danych.

Bufor dziennika powtórzeń

- zawiera dziennik zmian

wykonanych ostatnio na bazie danych. Pozycje dziennika
zapisane w buforze dziennika powtórzeń są przepisywane
do plików dziennika powtórzeń.

Pula dzielona

- obszary pamięci wspólnie używane

przez procesy:

Dzielony obszar SQL

- przetwarzanie instrukcji SQL;

zawiera informacje takie jak drzewo analizy
składniowej i plan wykonania odpowiedniej instrukcji;
jest współużywany przez wiele aplikacji, które
przekazują do wykonania tę samą instrukcję.

Bufor słownika danych.

Kolejki zleceń

do bazy danych i

kolejki odpowiedzi

z

bazy danych.

background image

17

Procesy

Proces

użytkownika

(klienta)

tworzony

do

wykonania kodu programu aplikacyjnego

Procesy systemu

– wywoływane przez inne procesy

w celu wykonania funkcji na rzecz wywołujących je
procesów.

Procesy serwera

– tworzone przez system do

obsługi zleceń od zgłaszających się przez sieć
procesów użytkowników.
• 

Procesy drugoplanowe

są to stałe procesy

tworzone przez Oracle dla każdej instancji
przeznaczone do wykonywania rutynowych zadań
systemu zarządzania bazą danych.

background image

18

Procesy drugoplanowe

Dyspozytor

(D)

przekazywanie

zleceń

od

połączonych procesów użytkowników do kolejki zleceń,
z której są one pobierane przez dostępne procesy
dzielone

serwera

oraz

za

zwracanie

wyników/odpowiedzi z powrotem do odpowiednich
procesów użytkowników.

Pisarz

bazy

danych

(DBWR)

-

przepisuje

zmodyfikowane bloki danych z buforów bazy danych w
SGA do plików na dysku. DBWR nie zapisuje bloków w
chwili, gdy transakcja kończy się zatwierdzeniem, co
pozwala minimalizować liczbę zapisów na dysk. DBWR
zapisuje zmienione bloki na dysk tylko wtedy, kiedy
inne dane muszą zostać sprowadzone do SGA i za mało
jest wolnych buforów danych, aby je pomieścić.

background image

19

Procesy drugoplanowe c.d.

Pisarz dziennika (LGWR)

- przepisuje pozycje bufora

dziennika powtórzeń do pliku dziennika powtórzeń. W
chwili gdy transakcja zostaje zatwierdzona lub gdy
bufor dziennika powtórzeń się zapełni, LGWR zapisuje
zawartość tego bufora do pliku dziennika powtórzeń
razem z informacją COMMIT. Dopiero w chwili
przesłania zawartości buforów dziennika powtórzeń do
plików dziennika powtórzeń uważa się transakcję za
zatwierdzoną (z możliwością odtworzenia stanu bazy
danych w przypadku awarii dysku).

Działania procesów drugoplanowych DBWR i LGWR są
niezależne od siebie.

background image

20

Procesy drugoplanowe
c.d.

Monitor systemu (SMON)

– ogólne operacje jak odtwarzanie

instancji przy uruchamianiu instancji, kompaktyfikacja wolnych
obszarów na dysku (ekstentów) w celu uspójnienia wolnych
obszarów i ułatwienia kolejnych alokacji miejsca na dysku.

Monitor procesów (PMON)

– ogólne operacje jak odtwarzanie

procesu użytkownika po awarii, zwalnianie zasobów, których
używał ten proces, kontrola działania dyspozytorów i procesów
serwera i wznawianie ich, jeśli się zawiesiły.

Archiwizator (ARCH)

- w chwili zapełnienia plików dziennika

powtórzeń, kopiuje ich zawartość na nośnik archiwizacji.

Procesy kolejek zadań (SNPn, n=0,..,9,A,...,Z)

- stałe zadania

zaplanowane do wykonywania przez system jak odświeżanie
migawek czy zadania tworzone za pomocą pakietu DBMS_JOB.

Odtwarzacz (RECO)

– odtwarzanie transakcji rozproszonych przy

awarii sieci lub systemu.

background image

21

Ilustracja jak działa serwer Oracle

1.    Aplikacja kliencka ustanawia połączenie z serwerem za pomocą
sterownika Oracle Net.
2.   Serwer wykrywa żądanie przychodzące z aplikacji i tworzy
dedykowany proces działający na serwerze w imieniu procesu
użytkownika.
3.   Użytkownik chce wykonać instrukcję SQL i ją zatwierdzić, np. zmienić
adres osoby.
4.    Proces serwera otrzymuje instrukcję i sprawdza czy w którymś z
dzielonych obszarów SQL nie jest zapisana identyczna instrukcja SQL. Jeśli
jest, proces serwera sprawdza uprawnienia użytkownika do żądanych
danych i poprzednio używany obszar SQL zostaje jeszcze raz użyty do
przetworzenia instrukcji; jeśli nie ma identycznej instrukcji, zadaniu
zostaje przydzielony obszar pamięci w ramach dzielonego obszaru SQL,
w którym instrukcja SQL zostaje poddana analizie składniowej i
przetworzona.
5.    Proces serwera znajduje wszystkie potrzebne wartości danych
lokalizując je od razu w SGA albo sprowadzając je z plików z danymi na
dysku.
6.   Proces serwera modyfikuje dane w SGA. Proces DBWR zapisze
zmodyfikowane bloki na stałe na dysk, dopiero wtedy kiedy będzie to
konieczne. Ponieważ transakcja zostaje zatwierdzona, proces LGWR
natychmiast zapisuje zmiany dokonane przez transakcję do pliku
dziennika powtórzeń.
7.  Gdy transakcja kończy się pomyślnie, proces serwera wysyła
odpowiedni komunikat poprzez sieć do aplikacji. Gdy nie kończy się
pomyślnie, przesyła odpowiedni komunikat o błędzie.
8.  W czasie całej tej procedury, procesy drugoplanowe działają w tle,
obserwując czy czasem nie zaszły warunki wymagające ich interwencji.

background image

22

Oglądanie planu wykonania instrukcji
SQL

Istnieje możliwość obejrzenia planu wykonania instrukcji SQL,
który wybiera system. Analizując plan, administrator lub
programista aplikacji może znaleźć przyczynę zbyt wolnego
działania aplikacji.
 

EXPLAIN PLAN
[SET Statement_Id = tekst]
[INTO tabela]
FOR instrukcja;

 

Po przeanalizowaniu planu projektant systemu

może wybrać inną

metodę wykonania danej instrukcji np. aby użyć indeksu:

SELECT --+INDEX(Klienci Kraj)

FROM Klienci

WHERE Kraj = 'Polska';

background image

23

Kontrolowanie użycia bazy danych

Instrukcja
 

AUDIT rodzaj_operacji, ... ;

 
powoduje włączenie śledzenia operacji wykonywanych

przez użytkowników bazy danych. Dla każdej operacji
ORACLE tworzy rekord kontrolny zawierający:

       użytkownika wykonującego operację,

       typ operacji,

       obiekt, którego dotyczy operacja,

       datę i godzinę operacji,

Np.

AUDIT UPDATE TABLE, DELETE TABLE;

AUDIT SELECT ON Scott.Emp;

background image

24

Poprawienie parametrów działania bazy
danych

1. Poprawny schemat bazy danych - ewentualnie ze
świadomie

przeprowadzoną

denormalizacją

lub

dekompozycją horyzontalną;
2. Poprawna organizacja poziomu fizycznego: klastry,
indeksy, rozłożenie plików do różnych stacji
dyskowych,

zastosowanie

architektury

wieloprocesorowej;
3. Odpowiednie parametry zapisu w przestrzeniach
tabel
(pomocą może być instrukcja ANALYZE):
       rekordów w blokach (np. PCTFREE i PCTUSED),
       alokacji ekstentów do segmentów (np.
parametry STORAGE);

background image

25

Poprawienie parametrów działania bazy
danych

4.

Odpowiednie wartości parametrów inicjalizacyjnych

instancji np. liczba buforów danych, maksymalna liczba
kursorów.
5.  Odpowiednie instrukcje SQL poprzez:
  analizę planu wykonywania przez system instrukcji
SQL (jest możliwe zamieszczanie wskazówek dla
optymalizatora),
      analizę czasu wykonywania instrukcji SQL
dostępną w plikach śladu,
     oglądanie zawartości Dzielonego Obszaru SQL i
standaryzację zapisu instrukcji;
6. Kontrola (audyt) sposobu korzystania z bazy danych
przez użytkowników i przyjęcie odpowiedniego systemu
ról, uprawnień, perspektyw, profili i kwot;
7. Realizacja

transakcji:

SERIALIZABLE/READ

COMMITED.


Document Outline


Wyszukiwarka

Podobne podstrony:
lesson4
face painting lesson 3 id 16748 Nieznany
2 3 Unit 1 Lesson 2 – Master of Your Domain
konspekty gimnazjum Lesson Plan 3
grammar lesson mk
konspekty gimnazjum Lesson Plan Ib
konspekty gimnazjum lesson plan 5
GE Georgian Language Lessons
lesson 9
Lessons in Electric Circuits Vol 5 Reference
lesson3
Lesson 14 MY, MINE esp
Lesson 24
Comparatives and Superlatives LESSON
ho ho ho lesson 1 v.2 student's worksheet for 2 students, ho ho ho
grammar lesson zaliczenie MI
Inspiration 3 Unit 7 Lesson 1 (2)
Unit 5 Lesson 2

więcej podobnych podstron