Documente Academic
Documente Profesional
Documente Cultură
Instanţa ORACLE
Organizarea spaţiului de stocare într-o BD
Oracle
(a) Structuri de memorie internă:
Instanţa Oracle
Procesare SQL DML
Segmentul ROLLBACK
Tabela
Vechea Noua
imagine imagine
Comanda DML
Segmentul ROLLBACK
Etapele pornirii unei instante
STARTUP
Modul de oprire A I T N
Permite noi conexiuni X X X X
X – Nu, - DA
A – Abord, I Immediate, T - Transactional, N - Normal
Sistemul de view-uri dinamice cu
informaţii despre starea BD
Citite din memorie, după Citite după etapa
etapa NOMOUNT: MOUNT:
• V$PARAMETER • V$THREAD
• V$SGA • V$CONTROLFILE
• V$SESSION • V$DATABASE
• V$INSTANCE • V$DATAFILE
• V$BUFFER_POOL • V$LOGFILE
(b) Nivelele de organizare a
spaţiului în Oracle
Baza de date
Segment
Extent
• Tabele
• Partiţii de tabele
• Clustere
• Indecşi
• Rollback
• Temporare
Structuri externe BD
• Fişierul de parametri
• Fişierul de parole
• Arhivele fişirelor de jurnalizare (redo log)
3. Crearea bazei de date
(manual)
1. Planificarea bazei de date
2. Crearea instanţei bazei de date
3. Pornirea instanţei bazei de date
4. Comanda CREATE DATABASE – crearea
structurilor fizice
5. Crearea dicţionarului bazei de date şi a mediului
PL/SQL (scripturile catalog.sql şi catproc.sql)
6. Crearea segmentelor rollback necesare
7. Creare celorlalte structuri fizice necesare
Crearea unei baze de date ORACLE
CREATE DATABASE [[database]
[CONTROLFILE REUSE]]
LOGFILE [GROUP group_integer] filespec
[, [GROUP group_integer] filespec] ...
[MAXLOGFILES number]
[MAXLOGMEMBERS number]
[MAXLOGHISTORY number]
[MAXDATAFILES number]
[MAXINSTANCES number]
[ARCHIVELOG or NOARCHIVELOG]
[EXCLUSIVE]
[CHARACTER SET charset]
[NATIONAL CHARACTER SET charset]
DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause] ... ]
filespc :== ‘filename’ [SIZE INTEGER] [K|M] [REUSE]
autoextend_cluase :==
[AUTOEXTEND
{OFF | ON
[NEXT integer [K|M]]
[MAXSIZE {UNLIMITED|integer [K|M]}]
}]
Oracle Managed Files
• Gestiunea automată a fişierelor de date şi de
jurnalizare
• Parametri implicaţi
– DB_CREATE_FILE_DEST
– DB_CREATE_ONLINE_LOG_DEST_n
Structura view-urilor dicţionarului BD
DBA_xxx
Obiecte din întreaga bază de date
ALL_xxx
Toate obiectele accesebile utilizatorului
USER_xxx
Obiectele deţinute de utilizator
Fişierele de control
DATA
structuri de directoare destul de flexibilă
RBS
TEMP
CREATE TABLESPACE
CREATE TABLESPACE
DATAFILE file_specification
[, file_specification
[AUTOEXTEND OFF]
or [AUTOEXTEND ON [NEXT number K or M]
[MAXSIZE UNLIMITED or MAXSIZE number K or M]]
[MINIMUM EXTENT number K or M]
[EXTENT MANAGEMENT LOCAL | [DICTIONARY
[DEFAULT STORAGE ( [INTIAL integer K|M] [NEXT integer K|M]
[MINEXTENTS integer] [MAXEXTENTS integer|UNLIMITED] [PCTINCREASE
integer] )] ]
[ONLINE or OFFLINE]
[PERMANENT or TEMPORARY]
Baza de date
Segment
Extent
Parametrii de
utilizare:
Header
INITRANS
Spaţiu disponibil
MAXTRANS
PCTFREE
DATE
PCTUSED
Utilizare spatiului in blocurile Oracle
PCTFREE = 20 PCUSED = 40
3) Volumul de 4) Dacă
spaţiu liber volumul de
poate creşte spaţiu liber
80 %
prin ştergerea cade sub 40%
unor va fi permisă
înregistrări 40 % din nou
inserarea de
înregistrări
Gestiunea spaţiului liber din
segmente – nivelul
CREATE TABLESPACE
Tipuri de date
Antetul liniei
Lungimea coloanei
Valoarea coloanei
Crearea unei tabele – comanda CREATE TABLE
PCTFREE
(Dim. Medie a înregistrărilor – Dim. iniţială a înregistrărilor) * 100
PCTUSED
Dim. medie a înregistra rilor 100
100 PCTFREE
Spatiul liber disponibil
Inlanţuirea si migrarea inregistarilor
1 2 3 4 5
OWNER OWNER
TABLE_NAME OBJECT_NAME
PCT_FREE OBJECT_ID
PCT_USED DATA_OBJECT_ID
INITIAL_EXTENT CREATED
NEXT_EXTENT
MIN_EXTENTS DBA_EXTENTS
MAX_EXTENTS
DBA_SEGMENTS
PCT_INCREASE
CACHE OWNER
BLOCKS OWNER SEGMENT_NAME
EMPTY_BLOCKS SEGMENT_NAME EXTENT_ID
TABLESPACE_NAME FILE_ID
CHAIN_CNT
HEADER_FILE BLOCK_ID
HEADER_BLOCK BLOCKS
(3) Gestiunea indecşilor
• Tipuri indecşi
• Dimensionarea indecşilor
• Gestiunea spaţiului pentru segmente de tip
index
• Informaţii despre indecşi
(a) Tipuri de INDECŞI
• Dpdv al structurii logice:
– După nr. de coloane:
• Indecşi formaţi după o singură coloană
• Indecşi formaţi după mai multe coloane
– După unicitate:
• Indecşi unici
• Indecşi neunici
• Dpdv fizic sau al implementării
– Indecşi partiţionaţi nepartiţionaţi
– Indecşi B-Tree şi bitmap
Structura indexului B-tree
Bl. rădăcina
100
30 130
Bl. ramuri
70 170
Bl. Frunze
A V R G
CHEIA Primul Ultimul Bitmap-ul
ROWID ROWID
Albastru 12.0.5 14.8.5 01000010100000010000010000
Verde 12.0.5 14.8.5 10011000000010100001000001
Roşu 12.0.5 14.8.5 00000001010100001000000100
Galben 12.0.5 14.8.5 00100100001001000110101010
(b) Necesarul de spatiu pentru
indecsi
Spatiul disponibil pentru inreg/bloc =
(DB_BLOCK_SIZE – Header) (1- PCTFREEE/100)
PCTFREE
(Nr. maxim de înregistra ri - Nr. initial de înregistra ri)
100
Nr. maxim de înregistrã ri
(d) Gestiunea indecşilor
Comanda CREATE INDEX
DBA_INDEXES DBA_IND_COLUMNS
OWNER INDEX_OWNER
INDEX_NAME INDEX_NAME
INDEX_TYPE TABLE_OWNER
TABBLE_OWNER TABLE_NAME
TABLE_NAME COLUMN_NAME
UNIQUENESS COLUMN_POSITION
TABLESPACE_NAME COLUMN_LENGHT
LOGGING
STATUS
Caracteristicile CLUSTERelor
• posedă o cheie utilizată pentru a identifica liniile
care trebuie stocate împreună
• cheia cluster-ului poate consta dintr-una sau mai
multe coloane
• în structura tabelelor din cluster se găsesc
coloanele care formează cheia cluster-ului
• mecanismul prin care tabelele sunt stocate
împreună în acelaşi cluster nu influenţează în nici
un fel logica aplicaţiilor
• actualizarea coloanelor din cheia cluster-ului poate
a avea ca efect relocalizarea înregistrărilor
respective
Tipuri de clustere
• cluster-e de tip index – utilizează un index
pentru a organiza şi localiza datele
• Cluster-e de tip hash – care folosesc un
algoritm (o funcţie) de calcul al locaţiei
înregistrărilor, algoritm care care se bazează
pe cheia cluster-ului
Crearea unui cluster de tip index
CREATE CLUSTER cluster
( column datatype [ column datatype ] …)
[PCTFREE integer]
[PCTUSED integer]
[INITRANS integer]
[MAXTRANS integer]
[SIZE integer [ K|M ]
[STORAGE storage-clause]
[LOGGING | NOLOGGING]
[NOSORT]
[TABLESPACE tablespace]
[INDEX]
Crearea unui cluster de tip index
1. CREATE CLUSTER com_clu
(nrcom NUMBER(4))
SIZE 200 TABLESPACE DATA01
STORAGE (INITIAL 5M NEXT 5M PCTINCREASE 0);
SIZE =
(Nr. de linii per cheia clusterului din Table1 *
Lungimea medie a liniilor în Table1)
+ (Nr. de linii per cheia clusterului din Table2 *
Lungimea medie a liniilor în Table2)
+ spaţiul rezervat antetului cheii cluster-ului
+ lungimea coloanelor cheii cluster-ului
+ 2 * (Nr. de linii per cheia clusterului din Table1 +
Nr. de linii per cheia clusterului din Table2)
Determinarea clauzei HASHKEYS
HASHKEYS
CEIL
TRUNC ( S patiu disponibil in bloc/SIZE)
DBA_CLUSTERS DBA_TAB_COLUMNS
OWNER OWNER
CLUSTER_NAME TABLE_NAME
TABLESPACE_NAME COLUMN_NAME
KEY_SIZE DATA_TYPE
CLUSTER_TYPE DATA_LENGTH
FUNCTION DATA_PRECISION
HASHKEYS DATA_SCALE
DBA_CLU_COLUMNS
DBA_CLUSTER_
HASH_EXPRESSIONS
OWNER
CLUSTER_NAME
CLU_COLUMN_NAME OWNER
TABLE_NAME CLUSTER_NAME
TAB_COLUMN_NAME HASH_EXPRESSION
Crearea tabelelor organizate ca indecsi (IOT)
DBA_TABLES DBA_INDEXES
OWNER OWNER
TABLE_NAME TABLE_NAME
TABLESPACE_NAME INDEX_NAME
IOT_TYPE INDEX_TYPE
IOT_NAME PCT_THRESHOLD
INCLUDE_COLUMN