Az Oracle adatbázis szerkezete

Hasonló dokumentumok
Az Oracle rendszer komponensei

Másolatképzési technikák és azok felhasználási lehetőségei

Tranzakciókezelés PL/SQL-ben

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Operációs rendszerek. UNIX fájlrendszer

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

SQLServer. Particionálás

1. Az Oracle adatbázis-kezelő felépítése, működése, komponensei, példányok, rendszerállományok, memóriakezelése, rendszergazdai feladatok

Operációs rendszerek III.

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Microsoft SQL Server telepítése

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

SQLServer. Probléma megoldás

UNDO naplózás. Naplóbejegyzések. Visszaállítási esetek

INDEXSTRUKTÚRÁK III.

SQLServer. Védelmi struktúra

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

SQL Server High Availability

Az SQL*Plus használata

Hozzunk ki többet abból amink van. Fehér Lajos

Operációs rendszerek. UNIX/Linux fájlrendszerek

HA és DR praktikák, maximális rendelkezésreállás

Cloud computing Dr. Bakonyi Péter.

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Oracle 12c Active Data Guard Sokkal több mint egy DR... Gecseg Gyula Oracle DBA

Ellenőrző kérdések. 5. Kis dolgozat kérdései. (9-10. előadás)

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Rendszerkezelési útmutató

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Üzemeltetési kihívások 2015

Hálózati operációs rendszerek II. Kötetek kezelése

SQLServer. SQLServer konfigurációk

LBRA6i integrált rendszer

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Sárecz Lajos Oracle Hungary kft. Oracle Adatbázisok Optimalizálása

Mosolygó Ferenc értékesítési konzultáns

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Oracle TTS migrációs technológia használata

Oracle E-Business Suite üzemeltetés a Rába Járműipari Holding Nyrt.-nél

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Operációs rendszerek. Elvárások az NTFS-sel szemben

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Adatbányászat és Perszonalizáció architektúra

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Adatbázis, adatbázis-kezelő

BEVEZETÉS Az objektum fogalma

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Adatbázisok elmélete 24. előadás

Kalmár György Adatbázis alapú rendszerek

1 Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

SQLServer. 10. téma Adatok mentése. Adatmentés. A DBA egyik fő feladata az adatok épségének, megőrzésének biztosítása.

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

A könyv tartalomjegyzéke

Operációs rendszerek. Az NT memóriakezelése

Hálózati operációs rendszerek II.

Oracle Active Data Guard

Adatbázisok* tulajdonságai

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

B I T M A N B I v: T M A N

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

webalkalmazások fejlesztése elosztott alapon

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Adatbázis kezelés Delphiben. SQL lekérdezések

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

Az adatbázisrendszerek világa

Adatbázis Rendszerek II. 2. Gyakorló környezet

ANDROID ALKALMAZÁSFEJLESZTÉS

Proxer 7 Manager szoftver felhasználói leírás

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Indexek és SQL hangolás

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatbázis-kezelés ODBC driverrel

Utolsó módosítás:

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

4. Gyakorlat: Csoportházirend beállítások

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

Adatbázis rendszerek. dr. Siki Zoltán

Exadata hibrid oszlopos adattömörítés automatizálása; DB 12c partition merge

EBS fogyókúra György Zoltán Innovent Tanácsadó Kft október 9.

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

SQL Server High Availability. Bevezetés az SQL Server magas rendelkezésre állási megoldásaiba

FORD Edifact IHS Import

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Átírás:

Az Oracle adatbázis szerkezete

Oracle Database Architecture An Oracle server: Is a database management system that provides an open, comprehensive, integrated approach to information management Consists of 1. Oracle instance(példány) 2. Oracle database(adatbázis) D-2 Copyright 2004, Oracle. All rights reserved.

Az Oracle adatbázis architektúra Az Oracle adatbázis két fő részből áll: 1. A példány (instance) vagyis a memória struktúrák és folyamatok rendszere: A memóriában lefoglalt System Global Area (SGA) terület és azok a szerverfolyamatok, amelyek az adatbázis-műveletek végrehajtásáért felelősek. 2. Az adatbázis vagyis a fizikai struktúrák rendszere: A vezérlő fájl (control file), mely az adatbázis konfigurációját tárolja A helyrehozó napló fájlok (redo log files), amikben a helyreállításhoz szükséges információkat tároljuk Az adatfájlok, amelyekben az összes tárolt adat szerepel Paraméterfájl, amelybe olyan paramétereket tárolunk, amelyek befolyásolják egy példány méretét és tulajdonságait Jelszófájl, amelyben a rendszergazdák(sysdba) jelszavát tároljuk D-3 Copyright 2004, Oracle. All rights reserved.

Database Structures Adatbázis szerkezete Memory structures Instance System Global Area (SGA) Process structures Background processes Storage structures Database files D-4 Copyright 2004, Oracle. All rights reserved.

Physical Database Structure. Fizikai adatbázis szerkezete Control files Data files Online redo log files Parameter file Backup files Archive log files Password file Alert and trace log files D-5 Copyright 2004, Oracle. All rights reserved.

Az adatbázis fizikai szerkezete Physical Database Structure The files that constitute an Oracle database are organized into the following: Vezérlőállomány (.CTL) Control files:contain data about the database itself (that is, physical database structure information). These files are critical to the database. Without them, you cannot open data files to access the data within the database. Adatállomány (.DBF) Data files:contain the user or application data of the database Változás napló (.LOG) Online redo log files:allow for instance recovery of the database. If the database crashes and does not lose any data files, then the instance can recover the database with the information in these files. The following additional files are important to the successful running of the database: Parameter file(.ora):is used to define how the instance is configured when it starts up Password file:allows users to connect remotely to the database and perform administrative tasks Mentési állományok (adatfájl mentése) (.BCK) Backup files:are used for database recovery. You typically restore a backup file when a media failure or user error has damaged or deleted the original file. Arhív (redo log files mentése) (.ARC) Archive log files:contain an ongoing history of the data changes (redo) that are generated by the instance. Using these files and a backup of the database, you can recover a lost data file. That is, archive logs enable the recovery of restored data files. D-6 Copyright 2004, Oracle. All rights reserved.

A vezérlő fájlok (Control files) Control files A példány indításakor az adatbázis rákapcsolásához (mount) be kell olvasni a vezérlő fájlokat. Az adatbázist alkotó fizikai fájlokat határozza meg. Ha új fájlt adunk az adatbázishoz, akkor automatikusan módosulnak. A vezérlő fájlok helyét az inicializálási paraméterben adjuk meg. Adatvédelmi szempontból legalább három különböző fizikai eszközön legyen másolata (multiplex the control files). Ez is inicializálási paraméterrel adható meg. Az Oracle szerver elvégzi a többszörös másolatok szinkronizációját. D-7 Copyright 2004, Oracle. All rights reserved.

Napló állományok (Redo Log Files) Az adatbázis változtatásait rögzíti Konzisztens állapot visszaállításhoz szükséges rendszerhiba, áramszünet, lemezhiba, stb. esetén Adatvédelmi okokból különböző lemezeken többszörös másolatokat kell belőle szinkronizáltan kezelni. A REDO napló REDO fájlcsoportokból áll. Egy csoport egy naplófájlból és annak multiplexelt másolataiból áll. Minden csoportnak van egy azonosítószáma. A naplóíró folyamat (log writer process- LGWR)írja ki a REDO rekordokat a pufferből egy REDO csoportba, amíg vagy tele nem lesz a fájl, vagy nem érkezik egy direkt felszólítás, hogy a következő REDO csoportba folytassa a kiírást. A REDO csoportok feltöltése körkörösen történik. Redo log buffer Log Writer LGWR Group 1 Group 2 Group 3 D-8 Copyright 2004, Oracle. All rights reserved.

Az adatbázis logikai szerkezete Minden adatbázis logikailag egy vagy több táblatérre van felosztva. A táblaterek egy vagy több fájlból állnak. Az adatfájlok mindig csak egy táblatérhez tartoznak. A táblatér mérete szerint kétféle lehet: nagy fájlból álló táblatér(bigfile tablespace): ez egyetlen fájl, de 4G blokkot tartalmazhat (Oracle 10g verziótól kezdődően létezik, mérete többezer terabájt lehet) kis fájlokból álló táblatér(small file tablespace): több kisebb fájlból áll 1. Adatfájl 2. Adatfájl USERS táblatér D-9 Copyright 2004, Oracle. All rights reserved.

SYSTEMand SYSAUXTablespaces The SYSTEMand SYSAUXtablespaces are mandatory tablespaces. They are created at the time of database creation. They must be online. The SYSTEMtablespace is used for core functionality (for example, data dictionary tables). The auxiliary SYSAUXtablespace is used for additional database components (such as the Enterprise Manager Repository). ------------------------------------------------------------- Ideiglenes táblaterületek (az Oracle pl. olyan rendezési műveletek támogatására használja, mint index létrehozása, összekapcsolás feldolgozása) D-10 Copyright 2004, Oracle. All rights reserved.

Szegmensek, területek (extents), és blokkok Egy táblatér több szegmensből is állhat. Az adatbázis objektumokat, táblákat, indexeket a szegmensekben tároljuk. A szegmensek területekből (extents) állnak. A területek (extents) folytonos adatblokkok halmazai. Az adatblokkok az adatbázis legkisebb írható/olvasható egységei. Az adatblokkok operációs rendszerbeli blokkokra képezhetők le. Szegmens Területek Adatblokkok OS blokkok Extents Az adatblokk mérete alapértelmezésben 8K. Statikus adatbázis (adattárház) esetén nagyobb méretet érdemes használni, dinamikus adatbázis (tranzakciós adatbázis) esetén kisebbet. D-11 Copyright 2004, Oracle. All rights reserved.

Logical and Physical Database Structures Logical Physical Database Schema Tablespace Data file Segment Extent Oracle data block OS block D-12 Copyright 2004, Oracle. All rights reserved.

How Table Data Is Stored Columns Blocks Table A Table B Rows Segment Segment Tablespace Table Row piece Extent D-13 Copyright 2004, Oracle. All rights reserved.

Anatomy of a Database Block Growth Block header Free space Row data D-14 Copyright 2004, Oracle. All rights reserved.

Tablespaces and Data Files The Oracle database stores data logically in tablespaces and physically in data files. Tablespaces: Can belong to only one database Consist of one or more data files Are further divided into logical units of storage Data files: Can belong to only one tablespace and one database Are a repository for schema object data Database Tablespace Data files D-15 Copyright 2004, Oracle. All rights reserved.

Tablespaces in the Preconfigured Database SYSTEM SYSAUX TEMP UNDOTBS1 USERS EXAMPLE D-16 Copyright 2004, Oracle. All rights reserved.

Data Dictionary Views Who Can Query Contents Subset of Notes DBA_ DBA Everything N/A May have additional columns meant for DBA use only ALL_ Everyone Everything that the user has privileges to see USER_ Everyone Everything that the user owns DBA_ views ALL_ views Includes user s own objects Is usually the same as ALL_ except for the missing OWNER column. Some views have abbreviated names as PUBLIC synonyms. D-17 Copyright 2004, Oracle. All rights reserved.

Data Dictionary: Usage Examples a SELECT table_name, tablespace_name FROM user_tables; b SELECT sequence_name, min_value, max_value, increment_by FROM all_sequences WHERE sequence_owner IN ('MDSYS','XDB'); c SELECT USERNAME, ACCOUNT_STATUS FROM dba_users WHERE ACCOUNT_STATUS = 'OPEN'; d DESCRIBE dba_indexes; D-18 Copyright 2004, Oracle. All rights reserved.

Az Oracle példány (instance) felépítése M E M Ó R I A Shared pool Java pool SGA Streams pool Database buffer cache Large pool Redo log buffer F O L Y A M A T O K System Monitor SMON Check point CKPT Process Monitor PMON Database Writer DBW0 Log Writer LGWR Archiver ARC0

Az Oracle memóriakezelése Server process 1 PGA Server process 2 PGA Background process PGA SGA Shared pool Streams pool Large pool Java pool Database buffer cache Redo log buffer

Egy Oracle példányhoz tartozó Oracle memóriaszerkezet a következő részekből áll: System Global Area (SGA):Az összes szerverfolyamat és háttérfolyamat osztozik rajta Program Global Area (PGA):Minden szerverfolyamatnak és háttérfolyamatnak saját memóriaterülete (PGA-ja) is van. Az SGAa példányhoz tartozó adatokat és vezérlő információkat is tartalmazhat. Az SGA a következő adatszerkezetből áll: 1. Database buffer cache: A beolvasott adatblokkok pufferterülete 2. Redo log buffer:a helyreállításhoz szükséges redo napló pufferterülete, innen íródik ki a napló a lemezen tárolt redo naplófájlokba 3. Shared pool:a felhasználók által használható közös puffer 4. Large pool:a nagyon nagy Input/Output igények kielégítéséhez használható puffer 5. Java pool:a Java VirtuálisGép(JVM)Java kódjaihoz és adataihoz használható puffer 6. Streams pool: Az Oracle Stream-ek pufferterülete

Az SGA dinamikus, azaz a pufferek mérete szükség esetén a példány leállítása nélkül változtatható. A Program Global Area (PGA) a szerverfolyamatok számára van fenntartva. A PGA mérete és tartalma attól függ, hogy a példány osztott módra (shared server mode) konfiguráltuk-e. A PGA általában a következőkből áll: Private SQL area:futási időben szükséges memóriaszerkezeteket, adatokat, hozzárendelési információkat tartalmaz. Minden olyan munkaszakasz (session), amely kiad egy SQL utasítást, lefoglal egy saját SQL területet. Session memory:a munkaszakaszhoz (session) tartozó információk, változók tárolásához szükséges terület.

Az Oracle folyamatok Szerverfolyamatok Server process Server process Server process Server process System Global Area SGA System monitor SMON Process monitor PMON Database writer DBW0 Check point CKPT Log writer LGWR Archiver ARC0 Háttérfolyamatok

Amikor egy alkalmazás vagy Oracle eszköz (mint például az Enterprise Manager) elindul, akkor azoracle szerver elindít egy szerverfolyamatot, amely lehetővé teszi az alkalmazás utasításainak végrehajtását. Az Oracle egy példány indításakor háttérfolyamatokat is elindít, amelyek kommunikálnak egymással és az operációs rendszerrel. A háttérfolyamatok kezelik a memóriát, puffereket, végrehajtják az írási, olvasási műveleteket a lemezen, karbantartásokat végeznek. A legfontosabb háttérfolyamatok a következők: System monitor (SMON):Katasztrófa utáni indításkor elvégzi a helyreállítást Process monitor (PMON): Ha egy felhasználói folyamat megszakad, akkor elvégzi a szükséges takarítást, karbantartást Database writer (DBWn):Az adatpufferből kiírja lemezre, egy fájlba a módosított blokkokat Checkpoint (CKPT): Ellenőrzési pontok esetén elindítja a DBWn folyamatokat és frissíti az adatbázis összes adatállományát és vezérlő állámányát Log writer (LGWR):A REDO napló bejegyzéseit írja ki a lemezre Archiver (ARCn):A REDO napló állomány másolatait a mentésre kijelölt lemezekre írja ki, mikor egy naplófájl betelik vagy a következő online redo naplóba folytatódik az írás (log switch)

Az adatbázishoz nem tartozó fájlok Parameter file Password file Database Archived log files 1. A paraméterfájlaz Oracle példány jellemzőit határozza meg, például az SGA memóriarészeinek méretét. 2. A jelszófájlból derül ki, hogy melyek azok a felhasználók, akik elindíthatnak vagy lekapcsolhatnak egy Oracle példányt. 3. Az archivált REDO naplófájloka naplófájl másolatai, amelyeket lemezhiba után lehet helyreállításhoz használni.

Egy SQL utasítás végrehajtásának folyamata Egy példányhoz kapcsolódáshoz (Connect) szükséges: Felhasználói folyamat Szerverfolyamat Az SQL utasítás típusától függ, hogy az Oracle szerver milyen komponenseire lesz szükség: Alekérdezések olyan folyamatokat indítanak, amelyek ahhoz kellenek, hogy megkapjuk a kívánt sorokat Az adatmódosító (DML)utasítások naplózó folyamatokat is indítanak, hogy elmentsék a változásokat A véglegesítés (Commit) biztosítja a tranzakciók helyreállíthatóságát Az Oracle szerver nem minden komponense vesz részt egy SQL utasítás végrehajtásában.

Kapcsolódás egy példányhoz Felhasználó Szerver Oracle szerver Felhasználó Szerver Kliens Alkalmazásszerver Szerver Felhasználó Szerver Böngésző

Mielőtt egy felhasználó küld egy SQL utasítást az ORACLE szervernek, előtte kapcsolódnia kell egy példányhoz. Amikor a felhasználó az Oracle szerverre kapcsolódik, akkor készül egy folyamat, amit szerverfolyamatnak hívunk. Ez a folyamat kommunikál az Oracle példánnyal a kliensen futó felhasználó folyamat nevében. A szerver folyamat hajtja végre a felhasználó SQL utasításait. A kapcsolat egy kommunkációs útvonala felhasználó folyamat és az Oracle szerver között.

Háromféleképp lehet egy Oracle szerverhez kapcsolódni: 1. OPERÁCIÓS RENDSZEREN KERESZTÜL: A felhasználó belép abba az operációs rendszerbe, ahol az Oracle példány fut és elindít egy alkalmazást, amely eléri az adatbázist ezen a rendszeren. Ekkor a kommunikáció útvonalat az operációs rendszer belső kommunikációs folyamatai hozzák létre. 2. KLIENS-SZERVER KAPCSOLATON KERESZTÜL: A felhasználó a helyi gépén elindít egy alkalmazást, amely a hálózaton keresztül kapcsolódik ahhoz a géphez, amelyen az Oracle példány fut. Ekkor a hálózati szoftvert kommunikál a felhasználó és az Oracle szerver között. 3. HÁROMRÉTEGŰ (three-tiered) KAPCSOLATON KERESZTÜL: A felhasználó gépe a hálózaton keresztül kommunikál egy alkalmazással vagy egy hálózati szerverrel, amely szintén a hálózaton keresztül össze van kötve egy olyan géppel, amelyen az Oracle példány fut. Például a felhasználó egy böngésző segítségével elér egy NT szerveren futó alkalmazást, amely egy távoli UNIX rendszeren futó Oracle adatbázisból gyűjti ki az adatokat.

Kapcsolódáskor egy munkaszakasz(session) kezdődik. A munkaszakasz a felhasználó érvényesítése (validálásakor) esetén kezdődik és a kilépéséig vagy egy abnormális megszakításig tart. Egy felhasználó több munkaszakasztis nyithat. Ehhez szükséges, hogy az Oracle szerver elérhető, használható legyen. (Néhány adminisztrációs eszközhöz még ez sem szükséges). Megjegyzés: Ha fentieknek megfelelően egy-egy értelmű a megfeleltetés a felhasználó és a szerverfolyamat között, akkor dedikált szerverkapcsolatról beszélünk.

Lekérdezések végrehajtása A lekérdezések ellentében más folyamatokkal egy sort, vagy akár több ezer sort is visszaadhatnak eredményképpen. A lekérdezés végrehajtásának 3 lépése során a szerverfolyamat a következőket végzi el: 1. Elemzés (Parse): A közös SQL pufferben (shared pool) megnézi, hogy szerepel-e ez az utasítás Szintaktikus ellenőrzés, léteznek-e az objektumok, rendelkezik-e a megfelelő jogokkal Az elemzés alatt zárolja (lock) az objektumokat Elkészíti és tárolja az optimális végrehajtási tervet 2. Végrehajtás (Execute): Előállítja a keresett sorokat 3. Visszaadás (Fetch): Visszaadja a sorokat a felhasználói folyamatnak

A közös SQL puffer(shared pool) A könyvtár(library)cache azsql utasítás szövegét, elemzett (parsed) kódját, és végrehajtási tervét tartalmazza. Az adatszótár (data dictionary)cachea táblák, oszlopok és egyéb objektumok definícióját, jogosultságait tartalmazza. A méretét ashared_pool_sizeinicializáló paraméter állítja be. Shared pool Library cache SGA Data dictionary cache

A shared pool komponensei Az elemzés (parse) alatt a szerver folyamat az SGA-nak ezen a részén fordítja le (compile) az SQL utasítást. Két fő komponense van: 1. Könyvtár (Library) cache 2. Adatszótár (Data dictionary) cache 1. A könyvtár (Library) Cache Az utoljára kiadott SQL utasításokról tartalmaz információt a közös SQL puffer (shared SQL area) nevű memóriaszerkezetben: Az SQL utasítás szövege Az elemző fa (parse tree): Az utasítás lefordított verziója A végrehajtási terve: Milyen lépésekkel kell végrehajtani az utasítást Az optimalizátor az Oracle szervernek az a része, amely meghatározza az optimális végrehajtási tervet. Ha egy SQL utasítást újra végrehajtunkés a közös SQL terület már tartalmazza a végrehajtási tervet, akkor nem kell újra lefordítania a szerverfolyamatnak az utasítást. Ezzel időt és memóriát lehet spórolni. Ha sokáig nem használják fel az SQL utasítást, akkor kikerül a Cashe-ből.

2. Adatszótár (Data Dictionary) Cache Az adatszótár utoljára használt definícióit tartalmazza. Így tartalmazhat információkat adatbázisfájlokról, táblákról, indexekről, oszlopokról, felhasználókról, jogosultságokról és más objektumokról is. Elemzés (parse) alatt a szerverfolyamat a nevek feloldásához, jogosultságok megállapításához először itt keresi az információt. Ha itt nem találja meg, akkor kezdeményezi a szükséges információk beolvasását az adatfájlokból.

Az adatbázis puffer (Database Buffer Cache) Az utoljára beolvasott blokkokat tárolja. A mérete a DB_BLOCK_SIZE inicializáló paramétertől függ. A pufferek számát a DB_BLOCK_BUFFERS adja meg. Database buffer cache Amikor egy lekérdezést kell végrehajtani, a szerverfolyamat először megnézi, hogy a keresett blokk nincs-e itt. Ha nem találja a pufferben, csak akkor olvassa be a blokk másolatát az adatfájlból. Ha már nincs hely a pufferben, akkor a legrégebben használt adatblokk helyére olvassa be az újat.

Kizárólagos memóriaterületek: Program Global Area (PGA) Nincs megosztva Csak a szerverfolyamat írhatja A következőket tartalmazza: Rendezési terület (sort area) Információ a munkaszakaszról (session): jogosultságok, statisztikák A kurzorok állapota (cursor state) A munkaszakaszhoz tartozó változók (Stack space) Szerverfolyamat A szerver folyamat indulásakor foglalja le ezt a területet, befejezéskor pedig felszabadítja. PGA

Adatmódosító(DML) utasítások végrehajtása UPDATE Felhasználó folyamat employees... Szerver folyamat 1 4 SGA Database buffer cache Data files Redo log buffer 1 2 3 Control files Shared pool Redo log files Adatbázis

DML utasítások végrehajtása Az adatmódosítás végrehajtása kétfázisú: A fordítás (Parse) ugyanolyan mint a lekérdezés esetében. A végrehajtási most további folyamatokat igényel, mert az adatváltoztatást biztonságosan, visszaállíthatóan kell elvégezni. A DML végrehajtási fázisa: 1. Ha az adatblokk és a rollback block nincs a pufferben, akkor a szerverfolyamat beolvassa az adatfájlból a pufferbe. 2. A szerverfolyamat zárakat (locks)helyez azokra a sorokra, amelyeket módosítani készül. 3. A REDO naplóba(redo log buffer) a szerverfolyamat beírja a változásokat, hogy majd vissza lehessen állítani szükség esetén az adatokat. 4. A szerverfolyamat az adatok régi értékétbejegyzi a rollback blokkba. 5. Az új értékeket rögzíti az adatblokkban.

DML utasítások végrehajtása A szerverfolyamat a változás (UPDATE)előtti értékeket (before image)értékeket jegyzi fel és csak utána módosítja az adatblokkot. Ezek a változások a pufferben (database buffer cache)hajtódnak végre. A pufferben minden ki nem írt, változtatott blokk kap egy piszkos blokkra utaló bejegyzést, mivel ezek a blokkok különböznek a lemez megfelelő blokkjaitól. A törlés(delete)vagy beszúrás(insert)hasonló lépésekből áll.a "before image"delete esetén a törölt sor oszlopértékeit tartalmazza, INSERT esetén pedig a sor helyének címét. A késleltetett lemezreírás miatt katasztrófa esetén az SGAval együtt elveszhetnek ezek a változások is.

A REDO napló puffer (Redo Log Buffer) A méretét a LOG_BUFFER paraméter definiálja. Az összes változtatást feljegyzi, ami a példányban történik. A feltöltése folytonos sorrendben történik. Ha betelik, elölről kezdi. Database buffer cache

A REDO napló puffer (Redo Log Buffer) A REDO naplóbejegyzés feljegyzi, hogy melyik blokk változik, a változás helyét, és az új értéket. A REDO bejegyzés nem tesz különbséget a blokkok típusa között, csak azt nézi, hogy mely bájtok változnak meg a blokkban. A REDO napló puffer folytonosan töltődik fel,különböző tranzakciók miatti bejegyzések átlapolódhatnak benne. Ha betelik, akkor az elejéről töröl helyetmagának, de csak akkor, ha a régi REDO bejegyzés már a lemezre íródott.

A visszagörgető (Rollback) szegmens régi érték visszagörgető (rollback) szegmens új érték Tábla DML utasítás

A visszagörgető (Rollback) szegmens Minden változtatás előtt a szerverfolyamat elmenti az adatok régi értékét egy visszagörgető (rollback) szegmensbe. Ennek segítségével: Meg lehet semmisíteni a változtatásokat (UNDO), ha egy tranzakciót visszagörgetünk. Biztosítja az olvasási konzisztenciát (read consistency), ami azt jelenti, hogy más tranzakciók nem látják a DML utasítás hatását, ha az még nincs véglegesítve (commit). Helyre lehet állítani az adatbázis konzisztens állapotát egy katasztrófa után. A visszagörgető (Rollback) szegmensek, ugyanúgy mint a táblák, indexek, adatfájlokban tárolódnak. A visszagörgető (rollback)blokkokat ugyanúgy be kell olvasni az adatbázis pufferbe (database buffer cache), mint a közönséges adatblokkokat, mikor szüksége van rájuk. A visszagörgető szegmenset a DBA készíti el. A szegmens változtatásai a REDO napló pufferben lesznek feljegyezve.

A véglegesítés COMMIT végrehajtása 1 Instance Szerver folyamat 3 4 SGA Database buffer cache Redo log buffer Shared pool LGWR Felhasználó folyamat Data files Control files Redo log files 2 Adatbázis

Gyors véglegesítés (Fast commit) AzOracle szerver gyors véglegesítést (fast commit)használ, ami biztosítja, hogy a példány sérülése esetén a véglegesített változtatásokat vissza lehessen állítani. Változási sorszám (System Change Number) Amikor egy tranzakció véglegesítése következik, az Oracle szerver hozzárendel egy sorszámot (system change number -SCN) a tranzakcióhoz. ASCN olyan mint egy belső időbélyegző, monoton növekedő, és egyedi az adatbázison belül. Az SCN segítségével lehet megoldani az adatok szinkronzációját. Az SCN segítségével lehet biztosítani az olvasási konzisztenciát. Az SCN segítségével az Oracle szerver ellenőrizni tudja a konzisztenciát anélkül, hogy fel kellene használnia az operációs rendszer rendszeridejét.

Gyors véglegesítés (Fast commit) A véglegesítési folyamat (COMMIT) lépései: A szerverfolyamat egy COMMIT bejegyzést és egy SCNszámot ír a REDO napló pufferbe. A naplókiíró folyamat (LGWR)egyszerre kiírja a REDO napló puffer teljes tartalmát beleértve a commit bejegyzéstis a REDO naplófájlokba. Ezután már biztos, hogy a változtatás nem vész el a példány sérülése esetén sem. A felhasználó értesítést kap, hogy a COMMIT végre lett hajtva. A szerverfolyamat feljegyzi, hogy a tranzakció rendben befejeződött, és elengedi a tranzakció által kiadott zárakat(locks). Minden piszkos (dirty) puffert kiíraz adatfájlba. Ez a DBW0 folyamattól független, és mindegy, hogy a COMMIT előtt vagy utána történik.

Gyors véglegesítés (Fast commit) A gyors véglegesítés előnyei: A naplófájl szekvenciális írása gyorsabb, mintha az adatfájl különböző blokkjaiba kellene írni. A napló fájlba csak azt a minimális információt írjuk be, ami ahhoz kell, hogy a változásokat feljegyezhessük, míg ha az adatfájlokba írnánk, akkor teljes adatblokkokat kellene kiírni. Ha több tranzakció akar egyszerre COMMIT-ot kiadni, akkor a példány az összes REDO naplórekordot egy írással végre tudja hajtani. Ha a REDO napló puffer nincs nagyon tele, akkor egy szinkronizált írás elég tranzakciónként.ha ráadásul nagyjából egyszerre akarnak befejeződni a tranzakciók, akkor átlagban egynél kevesebb szinkronizált írás elég tranzakciónként. Mivel a REDO napló puffer tartalmát a COMMIT előtt is ki lehet írni, így nem szükséges várni a COMMIT-ra, ha hosszú lenne a tranzakció futása. Egy tranzakció visszagörgetésekor a naplóíró folyamat (LGWR)nem fog elindulni, így nem kerül ki a lemezre a napló. Az Oracle szerver helyreállításkor a COMMIT-tal be nem fejezett tranzakciók hatását megsemmisíti. Ha visszagörgetés után hiba történik, de a rollback bejegyzés még nem került rá a lemezre, akkor a COMMIT hiánya mutatja, hogy egy tranzakció nem fejeződött be, így vissza lett vonva.

Összefoglalás Megismertük az adatbázis fájlait: adatfájlok, vezérlő fájlok, online REDO naplók Megismertük azsga memóriaszerkezetét: DB buffer cache, shared SQL pool, redo log buffer Megismertük a legfontosabb háttérfolyamatokat: DBW0, LGWR, CKPT, PMON, SMON, ARC0 Megismertük az SQL utasítások végrehajtásának lépéseit: fordítás (parse), végrehajtás (execute), eredmény visszaadása (fetch)