Struktura bazy danych Oracle Organizacja przestrzeni danych

Transkrypt

Struktura bazy danych Oracle Organizacja przestrzeni danych
Organizacja przestrzeni danych
Struktura bazy danych Oracle
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Organizacja przestrzeni danych (2)
baza danych
przestrzeń tabel
system
plik 1
plik 2
przestrzeń tabel
dane
• struktury logiczne - przestrzenie tabel (ang.
ang. tablespaces),
tablespaces),
schematy,
schematy, obiekty (relacje,
relacje, indeksy,
indeksy, klastry,
klastry, klastry
haszowe (ang.
ang. hash cluster),
cluster), perspektywy,
perspektywy, sekwencery,
sekwencery,
synonimy,
synonimy, moduły PL/SQL);
• struktury pośrednie - odzworowujące struktury logiczne w
fizyczne;
fizyczne; bloki,
bloki, rozszerzenia (ang.
ang. extents),
extents), segmenty;
segmenty;
• struktury fizyczne - zaleŜne od własności systemu
operacyjnego (systemy plikowe,
plikowe, urządzenia surowe (ang.
ang.
raw devices)),
)),
trzy
kategorie
struktur:
:
pliki
danych,
devices
struktur
danych,
dzienniki (ang.
.
redo
log),
),
pliki
kontrolne;
;
ang
log
kontrolne
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Przestrzenie tabel
• przeznaczenie:
przeznaczenie:
– zarządzanie przestrzenią dyskową,
– określanie limitów zasobów dla uŜytkowników (ang.
ang.
quota),
quota),
– zarządzanie dostępnością danych,
danych, stany:
stany: online i offline,
– wykonywanie częściowej kopii bezpieczeństwa (ang.
ang.
backup)
backup) lub częściowego odtwarzanie (ang.
ang. recovery),
recovery),
• przestrzeń tabel SYSTEM i SYSAUX
• przestrzenie niesystemowe:
niesystemowe:
– temporalne
– wycofania
– trwałe
plik 3
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Trwała przestrzeń
przestrzeń tabel
• wykorzystywane
wykorzystywane składowania trwałych danych: tabel,
indeksów, klastrów tabel, partycji tabel, zmaterializowanych
perspektyw, obiektów LOB
CREATE [PERMANENT] TABLESPACE nazwa
DATAFILE 'plik' SIZE rozmiar
[AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]]
[DEFAULT STORAGE (parametry składowania obiektów)]
[BLOCKSIZE rozmiar [K]]
SIZE rozmiar [K | M | G | T]
[BIGFILE | SMALLFILE]
SMALLFILE]
create tablespace LAB_DANE
datafile ‘c:\
c:\lab\
lab\lab_dane01.dbf’ size 50M,
datafile ‘d:\
‘d:\lab\
lab\lab_dane02.dbf’ size 20M
autoextend on next 10M maxsize 50M
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Manipulowanie przestrzeniami tabel
• dodanie pliku,
pliku, zmiana domyślnego składowania
ALTER TABLESPACE nazwa
ADD DATAFILE 'plik' SIZE rozmiar
[AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]]
[DEFAULT STORAGE (parametry składowania obiektów)]
alter tablespace LAB_DANE
add datafile ‘c:\
c:\lab\
lab\lab_dane03.dbf’ size 50M
autoextend on next 10M maxsize UNLIMITED;
Temporalna przestrzeń tabel
• wykorzystywana do sortowania i składowanie tabel
tymczasowych
• nie moŜe zawierać trwałych danych
CREATE TEMPORARY TABLESPACE nazwa
TEMPFILE 'plik' SIZE rozmiar
[AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]]
[DEFAULT STORAGE (parametry składowania obiektów)]
[BLOCKSIZE rozmiar [K]] [BIGFILE | SMALLFILE]
SMALLFILE]
create temporary tablespace LAB_TEMP
tempfile
tempfile ‘c:\
c:\lab\
lab\lab_temp.dbf’ size 20M;
• zmiana typu TEMPORARYTEMPORARY-PERMANENT
alter tablespace LAB_TEMP permanent;
alter tablespace LAB_TEMP temporary;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Manipulowanie przestrzeniami tabel (2)
• włączanie i wyłączanie przestrzeni tabel
ALTER TABLESPACE nazwa
ONLINE |
OFFLINE [NORMAL | IMMEDIATE | TEMPORARY]
• zmiana nazwy i lokalizacji pliku
• przestrzeń table musi być wyłączona
• plik docelowy musi istnieć
ALTER TABLESPACE nazwa
RENAME DATAFILE 'plik_
'plik_Ŝródłowy'
ródłowy' TO 'plik_docelowy'
alter tablespace LAB_DANE
rename datafile ‘c:\
c:\lab\
lab\lab_dane03.dbf’
to ‘d:\
‘d:\baza\
baza\lab\
lab\lab_dane03.dbf’;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Manipulowanie przestrzeniami tabel (3)
Struktury pośrednie
• zmiana typu READ WRITE -> READ ONLY
– przestrzeń tabel włączona (ONLINE)
– brak transakcji w przestrzeni tabel
– brak aktywnych segmentów wycofania w przestrzeni
tabel
– przestrzeń nie podlega archiwizacji online
segment
80 KB
alter tablespace LAB_DANE read only;
alter tablespace LAB_DANE read write;
• usunięcie przestrzeni tabel
DROP TABLESPACE nazwa
[INCLUDING CONTENTS [AND DATAFILES]
[CASCADE CONSTRAINTS]]
rozszerzenie
16 KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
rozszerzenie
2KB64KB2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
bloki bazy danych
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Segment
• zbiór rozszerzeń przydzielonych pojedynczemu obiektowi
• typy segmentów
– danych
• tabeli,
tabeli, tabeli indeksowej,
indeksowej, tabeli zagnieŜdŜonej,
onej,
partycji tabeli,
tabeli, indeksu,
indeksu, partycji indeksu,
indeksu, klastra,
klastra,
LOB, indeksu LOB
– temporalny
– wycofania
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Zarządzanie rozszerzeniami segmentów
Lokalne automatyczne
Przez słownik bd ręczne
UET$
FET$
Rozszerzenie
• składa się z ciągłego obszaru bloków
• obszar ten musi się znajdować w jednym pliku
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Lokalne zarządzanie jest
sterowane bitmapami
w plikach danych (domyślne
od 9.2)
Zarządzanie przez słownik danych
Jest sterowane tabelami UET$
i FET$ (domyślne dla przestrzeni
Tabel SYSTEM)
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Automatyczne zarządzanie rozszerzeniami
segmentów
Ręczne zarządzanie rozszerzeniami segmentów
•
• Wygodne w uŜyciu
• Lepsze wykorzystanie przestrzeni dyskowej, w
szczególności gdy rozmiary wierszy w poszczególnych
tabelach istotnie się róŜnią
• Lepsza wydajność przy współbieŜnym dostępie
CREATE TABLESPACE nazwa
...
EXTENT MANAGEMENT LOCAL [AUTOALLOCATE
[AUTOALLOCATE | UNIFORM rozmiar]
• Umieszczenie segmentu w przestrzeni tabel
•
CREATE TABLE tabela
...
TABLESPACE nazwa;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Ręczne zarządzanie rozszerzeniami
segmentów - przykład
CREATE TABLE nazwa
...
TABLESPACE przestrzeń_tabel_zarządzana_przez_słownik
STORAGE (MINEXTENTS
(MINEXTENTS 1 INITIAL 100K NEXT 10KB PCTINCREASE 20
MAXEXTENTS 10)
pierwsze
rozszerzenie
drugie
rozszerzenie
trzeci
rozszerzenie
100KB
10KB
12KB
Za pomocą parametrów składowania:
– INITIAL
• min. = 2*DB_BLOCK_SIZE
• domyślna = 5*DB_BLOCK_SIZE
– NEXT
• min. = 1*DB_BLOCK_SIZE
• domyślna = 5*DB_BLOCK_SIZE
– MINEXTENTS
• domyślna = 1
– PCTINCREASE
• min. = 0
• domyślna = 50
– MAXEXTENTS
• min. = 1
• max. = UNLIMITED = 2.147.483.645
W przestrzeniach tabel zarządzanych przez słownik
CREATE TABLESPACE nazwa
...
EXTENT
MANAGEMENT DICTIONARY
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Domyślne parametry składowania
dla wszystkich obiektów w przestrzeni tabel
[CREATE | ALTER] TABLESPACE nazwa
...
DEFAULT STORAGE (parametry składowania obiektów)
MINEXTENT rozmiar
ALTER TABLESPACE dane
...
DEFAULT STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0)
MINEXTENT 1M
segment
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Blok bazy danych
•
•
•
•
Zarządzanie wolnymi blokami w obiekcie
najmniejsza jednostka alokacji przestrzeni dyskowej
odpowiada określonej liczbie bajtów
jest wielokrotnością rozmiaru bloku SO
rozmiar określony parametrem konfiguracyjnym DB_BLOCK_SIZE,
DB_BLOCK_SIZE,
lub podczas tworzenia przestrzeni tabel
Ręczne
Automatyczne (zalecane)
Struktura bloku
nagłówek
• nagłówek zawiera m.in. informacje na
temat:
temat:
– segmentu,
segmentu, w skład którego wchodzi
blok
– transakcji operujących na danych
bloku
– katalog tabel
– adresy rekordów
wolna
przestrzeń
dane
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
0
0
1
1
0
0
Bloki danych w automatycznie
zarządzanym obiekcie
Wypełnione bloki
Ręczne zarządzanie wolnymi blokami
nagłówek
0
1
0
1
1
0
wolna
przestrzeń
dane
nagłówek
30%
25% 50% 75% 100%
CREATE TABLESPACE ....
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
AUTO;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
nagłówek
wolna
przestrzeń
30%
wolna
przestrzeń
30%
70%
70%
dane
30%
70%
dane
PCTFREE = 30
PCTUSED = 50
nagłówek
DELETE
wolna
przestrzeń
INSERT, UPDATE
70%
Poziom wypełnienia
0%
Blok nagłówkowy (zawiera
wskaźniki do pierwszych bloków
list wolnych bloków)
Bloki danych w kaŜdym zbiorze
wolnych bloków
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Automatyczne zarządzanie wolnymi blokami
Mapa bitowa
Bloki bitmapowe (sterują
dostępem do wolnych bloków)
50%
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
dane
50%
Ręczne zarządzanie wolnymi blokami(2)
blokami(2)
PCTUSED=40%
Blok poza listą
wolnych bloków
Blok na liście
wolnych bloków
0%
Perspektywy słownika danych udostępniające
informacje nt. rozszerzeń i segmentów
•
PCTFREE=10%
•
100100-PCTFREE=90%
PCTUSED=40%
100%
CREATE TABLE nazwa_tabeli.
nazwa_tabeli. . .
PCTFREE integer PCTUSED integer
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Perspektywy słownika danych udostępniające
informacje nt. rozszerzeń i segmentów (2)
• wyświetlenie wolnej przestrzeni we wszystkich
przestrzeniach tabel
select tablespace_name,
tablespace_name, sum(bytes)/1024 “free kB”
kB”
from dba_free_space
group by tablespace_name;
tablespace_name;
• wyświetlenie zajętej przestrzeni we wszystkich
przestrzeniach tabel
select tablespace_name,
tablespace_name, sum(bytes)/1024 “used kB”
kB”
from dba_extents
group by tablespace_name;
tablespace_name;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
DBA_EXTENTS
– SEGMENT_NAME
– TABLESPACE_NAME
– FILE_ID
• DBA_FREE_SPACE
– BLOCKS
– TABLESPACE_NAME
DBA_SEGMENTS
– BLOCKS
– SEGMENT_NAME
– SEGMENT_TYPE
– TABLESPACE_NAME
– EXTENTS
– BLOCKS
– INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS,
MAX_EXTENTS, PCT_INCREASE
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Perspektywy słownika danych udostępniające
informacje nt. przestrzeni tabel i ich plików
• DBA_TABLESPACES
– TABLESPACE_NAME
– NEXT_EXTENT
– MAX_EXTENTS
– PCT_INCREASE
– STATUS (ONLINE, OFFLINE READ ONLY)
– CONTENT (PERMANENT, TEMPORARY)
• DBA_DATA_FILES
– FILE_NAME
– TABLESPACE_NAME
– BYTES
– AUTOEXTENSIBLE
– MAXBYTES
– INCREMENT_BY
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Pliki bazy danych
Dziennik powtórzeń
• pliki danych
– obiekty bazy danych i dane
– opisy uŜytkowników
– opisy przestrzeni tabel
• pliki dziennika powtórzeń
– rejestracja zatwierdzonych i niezatwierdzonych zmian
w bazie danych
• pliki kontrolne
– opis fizycznej struktury bazy danych
– informacje wykorzystywane do odtwarzania
• plik parametrów
– parametry definiujące własności i sposób pracy bd
• plik haseł
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
1
b)
2
1
LGWR
2
log2.ora
log2.ora
log1.ora
log1.ora
3
3
4
5
ARCH
arch01.arc arch02.arc arch03.arc
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Dziennik powtórzeń (3)
• LGWR zapisuje informacje do bieŜącego pliku dziennika
gdy:
gdy:
• następuje zatwierdzenie transakcji
• tryby pracy dziennika
– bez archiwizacji (NOARCHIVELOG)
– z archiwizacją (ARCHIVELOG)
LGWR
rejestruje zmiany w bazie danych
zawartość zapisywana w plikach
rodzaje dziennika
– włączony (online)
– zarchiwizowany (offline, archived)
• zapisywanie plików dziennika - proces LGWR
– cyklicznie
• archiwizowanie plików dziennika - proces ARCH
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Dziennik powtórzeń (2)
a)
•
•
•
• bufor ten jest w jednej trzeciej zapełniony
• upłyną trzy sekundy od ostatniego zapisu
• zostaje zgłoszony punkt kontrolny
• zanim DBWR dokona jakiegokolwiek zapisu na dysk
zawartości bufora danych
• przełączenie pliku dziennika
– po zapełnieniu się bieŜącego pliku dziennika automatycznie
– manualnie
alter system switch logfile;
logfile;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Grupy plików dziennika powtórzeń
• zwiększenie niezawodności
• równoległe zapisywanie do wszystkich plików grupy
dysk C
grupa 1
log1.ora
grupa 2
log2.ora
dysk D
1
1
2
LGWR
3
grupa 3
2
log1.ora
log2.ora
create database LAB
datafile 'C:\
'C:\lab\
lab\system01.dbf' size 20M
logfile
group 1 ('C:\
('C:\lab\
lab\log1.ora', 'D:\
'D:\lab\
lab\log1.ora') size 100K,
group 2 ('C:\
\
lab\
\
log2.ora',
'D:\
\
lab\
('C: lab
'D: lab\log2.ora') size 100K,
group 3 ('C:\
('C:\lab\
lab\log3.ora', 'D:\
'D:\lab\
lab\log3.ora') size 100K
character set EE8MSWIN1250;
log3.ora
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Modyfikowanie grup plików dziennika
powtórzeń
alter database add logfile group nr_grupy
('log1.ora', 'log2.ora', ..., 'logn.ora
') size rozmiar;
'logn.ora')
rozmiar;
alter database add logfile group 4
('c:\
('c:\oracle\
oracle\log4.ora',
'd:\
'd:\oracle\
oracle\log4.ora') size 100k;
alter database add logfile member
'logn.ora'
logn.ora' to group nr_grupy;
nr_grupy;
alter database drop logfile member 'logn.ora
';
'logn.ora';
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
• tworzenie - w czasie tworzenia bazy danych
3
log3.ora
alter database drop logfile group nr_grupy;
nr_grupy;
Grupy plików dziennika powtórzeń (2)
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Plik kontrolny
• zawiera:
zawiera:
• nazwę bazy danych
• datę utworzenia bazy danych
• informacje o wszystkich grupach dziennika
powtórzeń wraz ze wskazaniem bieŜącej grupy
• nazwę, lokalizację i rozmiar kaŜdego pliku dziennika
powtórzeń
• numer sekwencyjny bieŜącego pliku dziennika
powtórzeń
• nazwę, lokalizację, rozmiar i status (tylko
(tylko do odczytu,
odczytu,
do odczytu i zapisu,
zapisu, włączony, wyłączony,
wymagający odtworzenia)
odtworzenia) kaŜdego pliku danych
• informacje dotyczące punktu kontrolnego
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Plik kontrolny (2)
• niezbędny do zamontowania i otwarcia bazy danych
• stosować wiele aktywnych kopii plików kontrolnych dla
jednej bazy danych, umieszczonych na róŜnych dyskach
• informacje o nazwach i połoŜeniu plików kontrolnych ->
wartość parametru konfiguracyjnego CONTROL_FILES
– np. CONTROL_FILES = (C:\
(C:\lab\
lab\ctl1LAB.ora, D:\
D:\lab\
lab\ctl2LAB.ora)
• wszystkie pliki kontrolne są jednocześnie na bieŜąco
zapisywane w trakcie pracy bazy danych
• zawartość plików kontrolnych jest uaktualniana m.in. gdy:
• administrator dodaje, zmienia nazwę lub usuwa plik
przestrzeni tabel lub plik dziennika powtórzeń;
• wystąpił punkt kontrolny;
• nastąpiło przełączenie plików dziennika powtórzeń.
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Zarządzanie plikiem spfile
• Tworzenie spfile z init
CREATE SPFILE [=plik_spfile
[=plik_spfile]] FROM PFILE [=plik_init
[=plik_init]]
• Tworzenie init z spfile
CREATE PFILE [=plik_init
[=plik_init]] FROM SPFILE [plik_spfile
[plik_spfile]]
Plik konfiguracyjny
• zawiera parametry
konfiguracyjne instancji bazy
danych
– tekstowy - po stronie klienta
sqlplus,
sqlplus, nazwa:
nazwa:
init<SID>.ora
init<SID>.ora
– binarny - po stronie serwera
spfile<SID>.ora
• połoŜenie
– $ORACLE_HOME/dbs
$ORACLE_HOME/dbs
– %ORACLE_HOME\
%ORACLE_HOME\database
db_name = LAB
db_files = 20
control_files = (C:
(C:\\lab\
lab\ctl1LAB.ora,
D:\
D:\lab\
lab\ctl2LAB.ora )
compatible = 8.0.5
db_block_size = 2048
db_file_multiblock_read_count = 8
db_block_buffers = 200
shared_pool_size = 3500000
log_checkpoint_interval = 10000
processes = 50
open_cursors = 100
dml_locks = 100
log_buffer = 8192
max_dump_file_size = 10240
remote_login_passwordfile = NONE
background_dump_dest = D:\
D:\bdump
user_dump_dest = D:\
D:\udump
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Plik haseł
• umoŜliwia autoryzację dostępu do bazy danych dla
uŜytkowników z uprawnieniami administratora
• zawiera hasło uŜytkownika SYS w roli SYSDBA -> jeśli
parametr kofiguracyjny
REMOTE_LOGIN_PASSWORDFILE=SHARED
• zawiera hasło uŜytkownika SYS i innych uŜytkowników
posiadających rolę SYSDBA i/lub SYSOPER -> jeśli
parametr kofiguracyjny
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
• Tworzenie - program orapwd,
orapwd, oradim
• Zmiana wartości parametrów w spfile
ALTER SYSTEM SET parametr = wartość
[SCOPE = {SPFILE | MEMORY | BOTH}
BOTH}
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ