Az ORACLE relációs adatbáziskezelő rendszer

A VIK Wikiből

1. Miért éppen az Oracle?

A magyar adatbázis-kezelő piacon nagymértékben domináló termék az Oracle. A gyakorlatokon 2002-től kezdődően az Oracle 9i verziójú szerverével valamint Windows NT alatti kliens eszközeivel fogunk dolgozni.

2. Az Oracle története

3. Az Oracle felépítése

Az Oracle ralációs (objektum-relációs) adatbáziskezelő-rendszer (RDBMS). Karbantartására és használatára az SQL (SQL-99) nyelv használatos.
Az Oracle fontosabb tulajdonságai:

  • Alapvetően kliens-szerver felépítésű
  • Lehetőség a többtaszkos, több felhasználós működésre, az adatok egyidejű használatára
  • Térben elosztott rendszerként is képes működni
  • A fontosabb hálózati protokollokkal és operációs rendszerekkel együtt tud működni
  • Támogatja a szoftver- és alkalmazásfejlesztés minden egyes szakaszát
  • Képes együttműködni a lényegesebb fordítókkal és fejlesztői környezetekkel
  • Gyakorlatilag tetszőlegesen nagy adatmennyiséget is képes kezelni
  • Napi 24 órás rendelkezésre állást, biztonságos működést tud garantálni
  • Magas szinten képes biztosítani az adatok védelmét, integritását, konzisztenciáját.
  • Alkalmas összetett struktúrák (objektumok, multimédia adatok, eljárások) tárolására is
  • Fejlett rendszerfelügyelet biztosítható
  • Az Oracle, mint cég megbízható terméktámogatási rendszert nyújt a felhasználóinak

Egy szerver egy adatbázisból és szerverpéldányból áll.
Az adatbázisban tárolódnak a felhasználói adatok és a rendszeradatok, míg a szerverpéldány a szolgáltatás futtatásához szükséges folyamatok (szálak) összessége.
%X% Egy szerverszámítógépen több adatbázis is létezhet.
Az adatbázis szébontható egy logikai és egy fizikai egységre. Ezek külön-külön is karbantarthatóak.

3.1. Logikai felépítés

Az adatbázisokat táblahelyekre (tablespace) oszthatjuk fel, ez a legnagyobb logikai tárolási egység. A hasonló működésű és karbantartást igénylő adatok kerülnek célszerűen egy táblahelybe.
Minden esetben van legalább egy táblahely, amelyet systemnek nevezünk.
Egy jellegzetes rendszer általában a következőket foglalja magában:

  • *system*: a rendszerről tárolt információkat tartalmazó táblahely
  • *undo*: az adatbázison végzett műveletek eredményeit, naplóit tartalmazó táblahely (a régebbi verziókban *rbs*)
  • *temp*: mindenféle átmenetileg tárolandó adat számára fenntartott táblahely (pl. egyes lekérdezések részeredményei, rendezések eredményei)
  • *tools*: alkalmazások ill. általános eszközök által használt minta-táblahely
  • *users*: általános felhasználói minta-táblahely

%X% A system, undo és a temp táblahely létezése kötelező.

A táblahelyek rendszer(system) vagy felhasználói(user) objektumokat, egységeket tartalmaznak.
A legfontosabb felhasználói objektumok a következők:

  • Tábla (table)
  • Nézet (view)
  • Számláló (sequence)
  • Szinonima (synonym)
  • Indexek (index)
  • Csoportok (group)
  • Kapcsolódási pont (database link)
  • Klaszter (cluster)
  • stb.
  • Ezekből képzett összetett struktúrák
    • Adatszótár (data dictionary)
    • (Oracle) Séma (schema)
    • Futtatható (tárolt) objektumok (stored procedures)
    • stb.

Az objektumok elemi adattípusokból épülnek fel:

  • CHAR (n)
    • Állandó méretű karakterfüzér-típus
    • Mindig az előre megadott méretű helyet foglalja le számára a rendszer. Amennyiben a beillesztett szöveg nem tölti ki a teljes méretet, úgy az adatbázis-kezelő kiegészíti a végén a megfelelő számú szóközzel. %X% Ezt lekérdezéskor is figyelembe kell venni!
    • A típus maximális mérete az Oracle8-as sorozattól kezdve 2 kilobájt.
    • Az alapértelmezett méret 1.
  • VARCHAR2 (n)
    • Változó hosszúságú karakterfüzér-típus.
    • Mindig csak a ténylegesen felhasznált méretet foglalja le az Oracle, így használata sokszor indokolt, jobb hatásfokú.
    • Maximális mérete az Oracle8-tól 4 kilobájt lehet.
    • Az alapértelmezett méret 1.
  • CLOB (LONG) (Character type Long OBject)
    • Nagyméretű szövegek tárolására alkalmas típus.
    • Maximális mérete 4 gibibájt %T% (= 1024 mebibájt = 1048576 kibibájt = 1073741824 bájt).
    • Egy sémaobjektum korlátlan sok CLOB típust tartalmazhat.
    • Soros és véletlen hozzáférésű is lehet.
    • LONG
      • Maximális mérete 2 gibibájt.
      • Egy sémaobjektum csak egy LONG típust tartalmazhat.
      • Csak soros elérésű lehet.
  • NUMBER (s, p)
    • Tetszőleges szám ábrázolására alkalmas adattípus.
    • Egyaránt használható fix- és lebegőpontos számábrázolásra.
    • Ábrázolási tartománya ±1*10^(-130) és ±9,9…99*10^125 között van.
    • Az első a szám tízes számrendszerbeli helyi értékeinek a számát (s), míg a második a pontosságot (p), azaz a tizedes vessző után álló helyiértékek számát jelenti.
  • DATE
    • Dátumok megjelenítésére és tárolására alkalmas típus.
    • Tartomány: i.e. 4713. január 1. - i.sz. 9999. december 31.
    • Hét darab mezőből áll: század, év, hónap, nap, óra, perc, másodperc.
    • Számos további származtatott egysége is hozzáférhető, úgymint a hét melyik napja, az év hányadik hete stb.
    • Más időszámítási rendszerek (pl. a pravoszláv, a héber, a kínai, a Julián stb.) is elérhetőek az Oracle-ben, sőt az egyes értékek át is válthatóak egymásra.

3.2. Fizikai felépítés

  • Adatállomány (Data file)
    • A hozzá tartozó táblahely adatait (adatainak egy részét) tartalmazza.
  • Redo-log állomány (Redo-log file)
    • Elsődleges feladata, hogy az adatbázison elvégzett műveleteket tárolja egészen az adatkivitel sikeres befejezéséig.
    • Legalább kettő szükséges, így amíg az egyik a háttértárra kerül elmentésre, addig a másik(ak) rögzíti(k) a változásokat.
  • Vezérlési állomány (Control file)
    • Az adatbázis fizikai struktúrájáról tartalmaz információkat.

3.3. Kapcsolat a logikai és fizikai felépítés között

  • Adatblokk (data block)
    • A legkisebb logikai egység.
  • Extent (extent)
    • Adatblokkok összefüggő halmaza.
  • Szegmens (segment)
    • Több logikailag összetartozó extent.
    • Egy szegmens több állományon is átnyúlhat.
    • A szegmenseket a táblahelyek fizikai megvalósításának tekintjük.
    • Fajtái:
      • Adatszegmens (data segment) : Minden, táblában megtalálható adat egy ilyenben foglal helyet.
      • Indexszegmens (index segment) : Különféle indexek hatékony tárolására alkalmas szegmens.
      • Ideiglenes szegmens (temporary segment) : Ideiglenes munkaterület egy művelet végrahajtásához, befejezés után eldobódik.
      • Rollback szegmens (rollback segment) : Minden megváltoztatott, de még nme commitált érték, elem adatát tárolhatjuk itt.

3.4. A rendszer működése

Indításkor a rendszer lefoglal egy memóriaterületet (*SGA*, Shared Global Area) és elindít számos folyamatot (szálat). Ezek együttese egy Oracle példány.

Az SGA tartalma:

  • Információk, melyek az Oracle vezérléséhez szükségesek
  • Utolsó használt blokkok
  • Redo-log puffer
  • Utoljára használt könyvtárak, állományok adatai
  • Utoljára végrehajtott utasítások és eredményei (database buffer cache)
  • Adatszótár egy részlete

Az indított folyamatok fajtái:

  • Rendszerfolyamatok (server process) : Ezek a felhasználót kiszolgáló műveletek
    • SQL értelmező és végrehajtó folyamat
    • Adatkiviteli és -behozatali folyamat a háttértár és az SGA között
    • A felhasználó számára az eredményeket visszaadó folyamat
  • Háttérfolyamatok (background process) : Jóval nagyobb számban vannak jelen, karbantartási feladatokért, a rendszer hatékonyságának megtartásáért felelősek
    • Rendszerfelügyelő folyamat (system monitor, SMON)
    • Folyamat-felügyelő folyamat (process monitor, PMON)
    • Adatbázis-folyamatok (database writers, DBW_n_)
    • Naplókészítő folyamat (log writer, LGWR)
    • Archívumot készítő folyamat (archiver, ARCH)
    • Zárfolyamatok (lock processes, LCK_n_)
    • Párhuzamosító folyamat (dispatcher, D_nnn_)
    • stb.

3.5 Az Oracle biztonsága

Az Oracle rendszerhez az Oracle-ben definiált felhasználók csatlakozhatnak.
Az Oracle jogosultsági rendszere kétlépcsős.:

  • Rendszerjogosultságok (system privileges)
  • *Felhasználói objektumokra vonatkozó jogosultságok (object privileges)*

Ezekből összeállítható egy szerep (role). Például előre definiált szerep: DBA (rendszergazda, Database Administrator).

4. Az Oracle üzemeltetése

Az Oracle a távoli adminisztrációt (is) támogatja különféle eszközök segítségével.
Az adatbázis (távoli) karbantartásának központi eleme az Enterprise Manager.
További jelentősebb alkalmazások: Net8 Configurator, SQL*Plus, SQL Worksheet.

4.1 Az Enterprise Manager indítása

4.2. A szerverpéldány beállításai ("Instance Manager")

Elérhetők és megváltoztathatók a rendszer működését alapvetően befolyásoló beállítások.

4.2.1 Konfiguráció

Az Oracle szerver beállításait tekinthetjük meg, illetve változtathatjuk meg (amennyiben erre jogosultságunk van).
A párbeszédpanel fontosabb oldalai (tab):

  • General : Az adott adatbázis példány állapotát jelzi (fut/korlátozottan elérhet/nincs csatlakoztatva/áll).
  • Memory : A memóriaterületek (SGA) paraméterei változtathatók meg.
  • Recovery : Hiba utáni helyreállítással kapcsolatos beállítások.

4.2.2 Folyamatok

Az adatbázissal aktuálisan kapcsolatban lévő, szerveroldalon futó folyamatok megtekintésére és szabályozására nyílik mód (pl. egy megakadt, vagy káros folyamat „kilövésére”).

4.2.3 Zárak

Megtekinthetjük a rendszerben jelenleg aktív zárakat. Ez a szoftverhibák megekeresését segítheti elő.

4.3. Az adatbázis tartalmának kezelése ("Schema Manager")

Az adatbázisban lévő objektumok hierarchiája válik láthatóvá.

4.4. Alapvető biztonsági beállítások ("Security Manager")

Itt szabályozhatjuk az adatbázishoz és annak adataihoz való hozzáférést.

4.5. Fizikai tárolási paraméterek (korábbi Storage Manager)

Az adatbázis fizikai megvalósításának elemeit lehet vele karbantartani.

5. Néhány további Oracle termék

  • Pro*nyelvek
  • PL/SQL
  • Form Builder
  • Designer
  • Internet File System
  • Intermedia
  • JDeveloper
  • Reports
  • Warehouse Builder
  • Data Mining Suite (Oracle Darwin)

6. Constraint-ek Oracle-ben

A Constraint-ek, vagyis kényszerek egyszerű előírások, szabályok az adatbázisban található adatokra nézve, melyek elősegítik a konzisztencia fenntartását már az adatbázis-szerver szintjén. A kényszerek ismeretében az Oracle képes a lekérdezéseket még jobban optimalizálni.
%T% Egy táblához több kényszer is megadható.
Constraint-ek magadására alapvetően két lehetőségünk van: vagy a megfelelő SQL parancsot gépeljük be, vagy valamilyen grafikus eszközt használunk.

Constraint-ek megadásakor a felső táblázatban az alábbi oszlopok szerepelnek:

  • Name : a kényszerhez itt egy nevet adhatunk meg, ha szeretnénk. Amennyiben nem adunk meg nevet, a rendszer automatikusan generál nagyjából véletlenszerű karakterláncot. %T% Noha a név megadása nem kötelező mégis célszerű azt használni.
  • Type : A kényszer típusa, mely Oracle-ben az alábbi lehet: UNIQUE, PRIMARY, FOREIGN, CHECK. (A kényszer típusa alapvetően megszabja, hogy mely egyéb oszlopokat enged a rendszer kitölteni.)
  • Disable : Igen/nem típusú mező, melyet ha bejelölünk a kényszert ideiglenesen letiltjuk.
  • Referenced Schema : FOREIGN típusú kényszernél használatos.
  • Referenced Table : FOREIGN típusú kényszernél használatos.
  • Cascade On Delete : FOREIGN típusú kényszernél használatos.
  • Check Condition : CHECK típusú kényszernél használatos.
  • Deferrable : Igen/nem típusú mező. Amennyiben igenre állítjuk, úgy a felhasználó (vagy a kapcsolódó alkalmazás) kérheti a kényszer késleltetését a tranzakció végéig. Aktiválni kell a tranzakció elején!
  • Initially Deferred : Igen/nem típusú mező. Csak akkor van hatása, ha a Deferrable mezőt igenre állítottuk. Amennyiben ez a mező is igaz értékű, akkor a rendszer automatikusan késlelteti a kényszer ellenőrzését, vagyis a felhasználónak nem kell külön kérnie ezt a viselkedést.
  • No validate : Igen/nem típusú mező. Amennyiben értéke igaz, akkor a rendszer csak az új és módosított rekordokat ellenőrzi.
  • RELY (Do Not Enforce) : Igen/nem típusú mező. Ha ezt bejelöljük úgynevezett „belief” vagy „REPLY” kényszert hozhatunk létre. Ez azt jelenti, hogy a rendszer nem ellenőrzi, nem tartatja be a kényszert. Ilyen esetben a kényszer szerepe csak a lekérdezések optimalizálásához adott „tippekben” rejlik, cserébe a feldolgozás felgyorsul.

A kényszerek típusai:

  • CHECK kényszer

A Check Condition mezőt kell kitölteni.
Egy logikai kifejezést adhatunk meg, hasonlóan mint a lekérdezések WHERE clause-ában.
A rendszer rekordok felvételénél és módosításánál ellenőrzi, hogy ez a feltétel igaz-e, és ha nem, a kényszer sérül, a végrehajtást a rendszer megtagadja.

  • UNIQUE kényszer

Egy kulcsot definiálunk a táblához. Hatása kettős: a kulcsban szereplő mezők értekei által képzett kombinációnak egyedinek kell lennie a táblában, továbbá a rendszer automatikusan létrehoz egy indexet a megadott mezők alapján ezzel gyorsítva a kereséseket.

  • PRIMARY kényszer

Az elsődleges kulcsot jelöli. Létrehozása ugyanúgy történik mint a UNIQUE kényszernél, és ez is indexet hoz létre a háttérben. A UNIQUE típusú kényszerhez képest valamivel több megkötés van:

    • Egy táblára több UNIQUE, de csak egyetlen PRIMARY kényszer létezhet.
    • Míg a UNIQUE megengedi a NULL értékeket, a PRIMARY kényszer egyúttal azt is biztosítja, hogy a megadott mezőkben ne lehessen NULL érték.
    • Általában az elsődleges kulcs azonosítja egyértelműen a rekordot a táblában, ezért külső kulcsokkal erre hivatkozunk más táblából.
  • FOREIGN kényszer

Külső kulcsot jelöl. Ez azt jelenti, hogy az adott táblában bizonyos mezők egy másik tábla bizonyos mezői alapján hivatkoznak a másik tábla rekordjaira. A hivatkozott tábla a szülő, a hivatkozó tábla a gyermek.
A külső kulcshoz tartozó kényszert a gyermek táblában definiáljuk.
A szülő táblát a Referenced Schema és Referenced Table oszlopokban kell megadni.
Amennyiben a kényszerhez a Cascade On Delete paramétert bejelöljük, törlési láncot hozunk létre.



-- LatoBalazs - 2006.02.20. (részben a segédanyagokból kiollózva)



vissza SzgLab5