2008. március 6., csütörtök

Architektúra part #6 – Adatszótár

Az adatszótár (data dictionary) az Oracle adatbázis egyik legfontosabb részét képezi. A központi, csak olvasható referencia táblák és nézetek tartoznak hozzá, melyekben az adatbázisról tároljuk a következő lényeges információkat:

  1. séma objektumok definíciója

  2. séma objektumok számára allokált és felhasznált területek

  3. oszlopok alapértelmezett értékei

  4. integritás kényszerekről információk

  5. az adatbázis felhasználóinak nevei

  6. az egyes felhasználókhoz tartozó jogok és szerepek

  7. naplózási információk

  8. egyéb általános adatbázis információk


A SYSTEM tablespaceben tároljuk, ami mindig online, ezért ezek az információk mindig elérhetőek. Szerkezetileg kétféle objektumot tartalmaz:
1. Alap táblák (Base tables): az adatbázisról tartalmaznak információkat. Csak az Oracle adatbázis írhatja és olvashatja őket. Az adatokat titkosított formában tárolják.
2. Felhasználói nézetek (User-Accessible Views): nézetek, melyek összegzik és a felhasználók számára emészthető formában megjelenítik az Alap táblákban tárolt információkat. A legtöbb felhasználó ezekhez a nézetekhez férhet hozzá.

Minden Base table és User-Accessible View a SYS felhasználó sémájában van, így egyetlen felhasználó sem módosíthatja őket, mivel az súlyos veszélyeket jelentene az adatintegritásra. Éppen ezért célszerű nagy biztonságban tartani ezt a központi accountot!

Felhasználás: az adatszótár használatának három fő területe van:

  1. az adatbázis lekérdez információkat felhasználókról, séma objektumokról és tárolási struktúrákról

  2. az adatbázis módosítja az adatszótárt minden DDL utasítás végrehajtása esetén

  3. bármely felhasználó lekérdezhet információkat az adatbázisról


Az adatbázis a legtöbb nézethez létrehoz Publikus Szinonimákat, hogy azok kényelmesen elérhetőek legyenek, de a SYS felhasználóval további publikus szinonimákat is létre lehet hozni manuális. Fontos, hogy a séma objektumok elnevezései lehetőleg ne keveredjenek a publikus szinonimák nevével.
Az adatszótár lehetőleg minél nagyobb részét az SGA (System Global Area) dictionary cache részében tároljuk a gyors hozzáférés érdekében. Nyilván az egész adatszótárt nehéz lenne cacheelni, ezért a least recently used (LRU) algoritmus alapján a legrégebben használt adatokat dobjuk ki először.
Más Oracle adatbázis termékek is hivatkozhatnak, illetve létrehozhatnak objektumokat maguknak az adatszótárban. Célszerű az alkalmazásfejlesztőknek a hivatkozásoknál a publikus szinonimákat használni, mivel azok a legtöbb verzióban azonosak.

Az adatszótár nézetei általában három különböző prefixszel vannak ellátva, melyek jelentése:

  1. USER: felhasználói nézet - a felhasználó sémájában lévő nézet: főként az adott felhasználóhoz tartozó információkat tartalmazzák. Így például a
    SELECT object_name, object_type FROM USER_OBJECTS;
    lekérdezés a sémánkban lévő objektumokat adja vissza.

  2. ALL: kiterjesztett felhasználói nézet - a felhasználó által hozzáférhető nézet: az adott felhasználó által elérhető „információkat” tartalmazzák. Így például a
    SELECT owner, object_name, object_type FROM ALL_OBJECTS;
    lekérdezés az általunk hozzáférhető objektumát adja vissza.

  3. DBA: adatbázis adminisztrátori nézet – minden felhasználó sémájában megtalálható nézet: globális információkat tartalmaznak az adatbázisról. Így például a
    SELECT owner, object_name, object_type FROM SYS.DBA_OBJECTS;
    az adatbázis összes objektumat adja vissza.
    Az „O7_DICTIONARY_ACCESSIBILITY is false” beállítással a felhasználóknak megtilthatjuk a SYS sémán belüli objektumokhoz való hozzáférésüket.


Dinamikus Teljesítmény táblák (Dynamic Performance Tables): virtuális táblák halmaza, melyek az adatbázis tevékenységeket rögzítik. Nem valós táblák, de az adminisztrátor létrehozhat rájuk nézeteket a felhasználók számára. Ezeket a nézeteket fix nézeteknek hívjak, mivel az adminisztrátor nem tudja módosítani vagy törölni őket.
A SYS felhasználóhoz tartoznak, s V_$ karakterekkel kezdődik a nevük. Ezekre a táblákra hozhatunk létre nézetek, majd a nézetekre publikus szinonimákat, melyek neve V$ karakterekkel kezdődik. Pl. V$DATAFILE tartalmaz információkat az adatbázis adatfájljairól, míg V$FIXED_TABLE magukról a dinamikus teljesítmény táblákról.


Kapcsolódó Link
Oracle® Database Concepts – The Data Dictionary

Nincsenek megjegyzések: