Ugrás a fő tartalomra

Oracle shema tartalom összehasonlítás SqlDeveloperrel

Két oracle séma tábla, mező név, mező típus, mező hossz, nézet, tárolt eljárás, trigger, ...
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:



Ki kell választani az összehasonlítandó adatbázis kapcsolatokat:





 Az összehasonlítandó objektumokat ki kell jelölni:




Fel lehet olvastatni az egyes objektumokat és közvetlen kijelöléssel finomíthatunk a listán.








Ellenőrizhetjük az összehasonlítás feltételeit:




Végül az eredmény listában kiválasztott objektumok osztott képernyőjén láthatók az azonos és eltérő definíciós objektumok.



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