Deffiniciók azonosságának legegyszerűbb módja az SqlDeveloper funkció igénybevétele.
C:\Documents and Settings\klajosw\Application Data\SQL Developer\UserSnippets.xml
Funkció elindítása a főmenüből történik:
Fel lehet olvastatni az egyes objektumokat és közvetlen kijelöléssel finomíthatunk a listán.
Az Oracle adatbázis szerkezete
Az adatbázis fizikai
szerkezete:
állományok
-
adatállományok (táblák, indexek, objektumok,…)
csak egy táblatérhez
tartozhat
normál
és vezérlő, metaadatok
-
napló állomány
elvégzett tevékenységek
listája
-
vezérlő adatok
(leíró adatok
az adatbázis elemiről ,eléréséről)
-
paraméter állományok
(működési,
futási paraméterek,…)
-
jelszó állomány
(user név,
jelszó)
-
mentési állományok
Az adatbázis logikai
szerkezete:
egy
adatbázis több táblatérből állhat (tablespace)
legnagyobb
tárolási egység (azonosító neve van)
logikailag
összetartozó adatelemeket tartalmaz
egy vagy több állományból
állhat, de egy állomány csak egy tablespace része
Állapota lehet: on-line vagy
off-line (kivéve a SYSTEM tablespace)
illetve: read-write vagy
read-only
egy
táblatér több szegmensből állhat
azonos
tárolási szerkezetű adatok tárolása
különböző
típusai vannak (a tárolt objektum jellegétől függően)
szegmenstípusok:
-
tábla (nem clusterezett)
-
cluster tábla
-
tábla partíció (a particionált tábla esetén minden partíció egy önálló
szegmens saját tárolási paraméterekkel)
-
beágyazott tábla (az N1NF táblák esetén egy mező lehet egy tábla,
minden ilyen beágyazott tábla külön szegmens)
-
LOB (nagy objektum), a LOB értékek külön szegmensben helyezkednek el, a
tábla csak egy pointert tartalmaz
-
LOB index, a LOB adatok gyors eléréséhez
-
index (normál)
-
index partíció (particionált index esetén)
-
index szervezett tábla (IOT), az adatok az index struktúrában, a kulcs
mellett foglalnak helyet, nincs szükség alaptáblára.
-
index szervezett tábla túlcsordulási szegmens, az alapterületen
túlcsorduló, hosszú rekordok tárolása
-
rollback szegmens
-
temporary szegmens
a részeredmények tárolása
(rendezés):
ORDER BY
CREATE INDEX
GROUP BY
UNION, INTERSECT, MINUS
-
cache szegmens (adatszótárak, paraméterek)
egy szegmens több
kiterjesztésből áll (extent)
több, egymásután folyamatosan elhelyezkedő blokk
együttese
folytonos tárterület
allokációs egység
túl sok extent fregmentációt jelent
megadható a maximális darabszáma
a megkapott extent nem kerül vissza automatikusan a
rendszerhez
szegmensek
és objektum típusok:
table adatszegmens
constraint adatszótár
index index szegmens
index
cluster adatszegmens
hash
cluster adatszegmens
view adatszótár
sequence adatszótár
synonym adatszótár
database
link adatszótár
procedure adatszótár
function adatszótár
trigger adatszótár
snapshot adatszegmens
snapshot
log adatszegmens
egy szegmens több blokkból
állhat
egy
blokk az adatok IO, olvasási, írási egysége
rendszerint
nagyobb, mint a lemez blokk
több
objektum adatait is tárolhatja egy blokk
blokk
szerkezete:
-
header (szegmens típusa)
-
table directory
-
row directory
-
free space
-
row data
egy blokk több rekordot is
tartalmazhat
egy rekord szerkezete:
-
row header (oszlopok száma, láncolás)
-
row data:
-
mező hossza majd
-
a mező értéke
ROWID : rekord helyének
azonosítója, közvetett pointere
kiterjesztett ROWID alakja:
objektumkód:állománykód:blokk-kód:rekord-azonosító
18 karakter hosszú (5:3:5:3)
működési
paraméterek:
-
AUDIT_TRAIL esemény
naplózás engedélye
-
CONTROL_FILES vezérlő
állományok megadása
-
DB_BLOCK;BUFFERS data
buffer méret
-
DB_BLOCK_SIZE data block méret
-
DB_FILES megnyitható
file-ok max. száma
-
DML_LOCKS DML
zárolások max. száma
-
DB_NAME adatbázis
neve
-
LICENSE_MAX_USERS max.
létrehozható user szám
-
LICENSE_MAX_SESSIONS max. élő
session darabszám
-
LOG_BUFFER log
buffer méret
-
LOG_CHECKPOINT_INTERVAL log
mentés időintervallum
-
MAX_ROLLBACK_SEGMENT rollback
szegmens méret
-
LOG_FILES napló
állományok
-
NLS_LANGUAGE nyelv
megadása
-
NLS_DATE_FORMAT dátum
formátum
-
OPTIMIZER_MODE optimalizálási
mód
-
OS_ROLES engedély
az OS autentikációra
-
PROCESSES processzek
száma
-
OPEN_CURSORS feldolgozás
alatt álló SQL-ek száma
-
SQL_TRACE nyomkövetési
mód
Profile
erőforrás
használati limitek együttese
elemei:
-
SESSION_PER_USER max
session szám
-
CPU_PER_SESSION egy
kapcsolat max. CPU
-
CPU_PER_CALL egy
parancs max CPU
-
CONNECT_TIME kapcsolat
max ideje
-
IDLE_TIME max.
üresjárati idő
-
LOGICAL_READ_PER_SESSION max IO
blokk kapcsolatra
-
LOGICAL_READ_PER_CALL max IO blokk
parancsra
-
COMPOSIT_LIMIT max műveleti összköltség
létrehozása:
CREATE
PROFILE pnev LIMIT paraméterek
módosítása:
ALTER
PROFILE pnev LIMIT paraméterek
Felhasználók tevékenységeinek nyomon követése
AUDIT
funkció, célja:
-
gyanús események figyelése
-
statisztikák készítése
típusai:
-
utasítás szintű: SQL parancsok figyelése
-
privilégium: privilégiumok figyelése
-
objektum: objektumok használatának figyelése
lehetőségek:
-
sikeres hozzáférések naplózása
-
sikertelen hozzáférések naplózása
-
session szintű naplózás
-
parancs szintű naplózás
le lehet szűkíteni a figyelt
objektumok és figyelt felhasználó körét
parancsa:
AUDIT sql ON obj BY SESSION
| ACCESS WHENEVER NOT SUCCESFUL
AUDIT privilégium BY SESSION | ACCESS WHENEVER NOT SUCCESFUL
NOAUDIT ….
Speciális SQLPlus elemek
DEFINE
var = szöveg
VARIABLE
var NUMBER | CHAR(n)
ACCEPT
var PROMPT szöveg HIDE
&var
&1
SPOOL filenév
SPOOL
OFF
COLUMN oszlop FORMAT fff
HEADING szöveg WRAPPED | TRUNCATED PRINT
| NOPRINT NEW_VALUE valt
BREAK
ON exp SKIP n | PAGE
COMPUTE
AVG | COU… OF mező ON exp
TITLE
LEFT|CENTRE… szöveg
SET
PAGESIZE nn
SET
HEADING ON | OFF
SET
VERIFY ON | OFF
SET
FEEDBACK ON | OFF
Több tucat gyári package létezik
A legfontosabb package-ek:
-
DBMS_ALERT események,
riasztások kezelése
-
DBMS_DDL DDL
funkciók meghívását teszi lehetővé
-
DBMS_DEBUG debug
kezelő
-
DBMS_DEFER replicated
transactional deferred remote procedure
call
-
DBMS_IOT segédtábla
létrehozása a láncolt rekordok
lekérdezéséhez
-
DBMS_JOB munkaköteg
kezelő rutinok
-
DBMS_LOB LOB
kezelő rutinok
-
DBMS_LOCK zárolás
kezelés
-
DBMS_LOGMNR napló
kelezés
-
DBMS_OLAP OLAP
funkció kezelés
-
DBMS_OUTPUT üzenet
bufferelés, kiírás
-
DBMS_PIPE pipe
kezelő
-
DBMS_RANDOM véletlen
szám generátor
-
DBMS_RESOURCE_MANAGER erőforrás,
QEP kezelő
-
DBMS_ROWID ROWID
kezelő
-
DBMS_SESSION bejelentkezések
kezelése
-
DBMS_SNAPSHOT snapshot
kezelő
-
DBMS_SPACE segment
kezelő
-
DBMS_SQL dinamikus
SQL
-
DBMS_TRACE PL/SQL
trace kezelő
-
DBMS_UTILITY segéd
rutinok
-
UTL_FILE állomány
kezelő rutinok
-
UTL_HTTP http
hívások kezelése
-
UTL_SMTP levél
küldés kezelése
-
UTL_TCP alap
TCP szolgáltatások köre
UTL_FILE
FOPEN Function file
megnyitása
IS_OPEN Function nyitott-e
a file?
FCLOSE Procedure file
lezására
FCLOSE_ALL Procedure minden
file zására
GET_LINE Procedure ez
sor olvasása
PUT Procedure egy
sor kiírása
NEW_LINE Procedure sorvégjel
kiírása
PUT_LINE Procedure sor
kiírás sorvéggel
FFLUSH Procedure buffer
ürítése kiírással
FOPEN Function
A megnyitandó állománynak csak előre megadott
könyvtárban szabad elhelyezkednie védelmi okok miatt, máshol lévő állományok
nem elérhetők
Az elérhető könyvtár megadása az
INIT.ORA állományban:
UTL_FILE_DIR = <directory
name>
Particionált táblák / indexek
Particionálás: a tábla / index rekordjainak szétbontása
csoportokra
Típusai:
Tartomány alapú (range) : a rekordokat a kulcs
alapján ossza szét. Az egyes kulcs érték tartományok külön partícióba kerülnek
Hash alapú: egy egyenletesebb elosztást biztosító
hash függvény alapján rendel a különböző kulcs értékekhez egy partíciót a rendszer
Vegyes módszer (composite partitioning) : előbb
tartomány alapú szétválogatás, majd egy hash alapú finomabb szétbontás
Az egyes partíciók azonos logikai paraméterűek (pl.
azonos kulcs mező, azonos indexmező), de különböző fizikai tárolási
paraméterrel rendelkezhetnek.
A különböző partíciók különböző szegmensekben
helyezkednek el
A különböző partíciókat igény szerint különböző
tablespace egységekbe is el lehet helyezni. Ennek előnyei:
-
nagyobb védelem az adatvesztés ellen
-
külön lementhetők az egyes partíciók
-
különböző lemez egységekhez rendelhetők, hatékonyság növelést hozva
Particionálás előnyei:
-
az egyes partíciók bizonyos esetekben kihagyhatók a feldolgozásból
pl. SELECT .. FROM T WHERE m > 4 AND m < 8
ha a particiók az m értéka alapján készültek és
tartomány alapú, egyes partíciók kihagyhatók a kereséséből, mert az ott lévő
elemekre biztos nem teljesül a feltétel.
Speciális esete a szelekció gyorsításnak az, amikor
egy VLDB-ben historical (történeti) adatokat kell tárolni
Az egy nagy normál tábla helyett a partícionált
táblákban a különböző időszakokhoz tartozó adatokat külön lehet választani.
Ez hatékonyabb tábla kezelést jelent főleg ha csak
bizonyos időszak adatait kell érinteni.
-
meggyorsíthatja a join végrehajtását
ha mindkét tábla azonos módon partícionált, akkor
egy equi-join esetében az összehasonlítást nem kell minden rekord párra
elvégezni, hanem csak az azonos partícióban elhelyezkedő párokra
-
karbantartási munkák gyorsítása:
ha az egyes tábla karbantartó feladatok (load,
indexelés, mentés) nem a teljes táblára, ha külön az egyes partíciókra is értelmezhetők,
akkor elegendő csak bizonyos partíciók kezelése esetleg párhuzamos végrehajtása
(partíciók függetlenségének elve)
Disk
striping és partioning:
Hatékonyság
és rendelkezésre állás egyensúlya kell
Ha minden partíció ugyanazon diszkekre szétosztott
(striping) : gyors de sérülékeny
Partitioning
View:
Kézi megoldás, több önálló tábla létrehozása (mintha
ezek lennének a partíciók, majd egy view ezen táblák UNION-jával adja az eredő
táblát)
A hash partícionálás akkor jó, ha
-
nem ismert előre a kulcs eloszlás
-
fontos a particonált join hatékony végrehajtása
Megjegyzések
Megjegyzés küldése