Adatbázisok 2 gyakorlat tematika 2024/2025 I. félév Gyakorlatvezető: dr. Vincellér Zoltán A gyakorlat időpontja: ------------------------- Kedd 10.15 - 11.45 (16. csoport, Déli Tömb 2-202 PC3 Labor) Konzultáció: ------------ Csütörtök 15:00-tól (amíg van kérdés) online, MS Teams-en keresztül. A tárgy előfeltétele az Adatbázisok 1. kurzus elvégzése. Az ott tanultakat használni fogjuk a félév folyamán. Ennek segédanyagai itt: https://people.inf.elte.hu/nikovits/AB1/ 1. gyakorlat ------------ Követelmények ismertetése. (ab2_kovetelmeny.txt) Az adatbázisok elérésének technikai kérdései. (http://people.inf.elte.hu/vzoli/adatbazis_eleres.txt) Kliens programok és azok beállítása. Az adatbázisok elérése ELTE-n kívülről -> ssh_tunnel.pdf, ssh_SqlDeveloper.pdf, ssh_help.txt Kapcsolódás SQLPLUS programmal a pandora gépről. (login.sql) Saját Oracle Express Edition telepítése, aki meg tudja oldani. Codd 12 szabálya (elvárása) a relációs adatbáziskezelőkkel szemben. Adatbázisbeli objektumok (tábla, nézet, index, … stb.), séma és nem séma objektumok. A séma és a user fogalmak kapcsolata. Hivatkozás egy adatbázis-objektumra. A rendszerkatalógus elemei. (USER_, ALL_, DBA_) Melyik sémában vannak a katalógus elemei? A SYS és SYSTEM felhasználók. Katalógus táblák megkeresése a katalógusban (DBA_OBJECTS), és a dokumentációban (Oracle Database Reference). Egy tábla oszlopainak lehetséges típusai, DEFAULT értékek. (ab2_feladat1.txt) Átnézendő: 01_Oracle_architecture.pptx, 01_Codd_12_rules.docx PL/SQL ismétlés az Adatbázisok 1 gyakorlat alapján: http://people.inf.elte.hu/vzoli/Adatbazisok_2/PLSQL/ 2. gyakorlat ------------ PL/SQL ismétlés az Adatbázisok 1 gyakorlat alapján: http://people.inf.elte.hu/vzoli/Adatbazisok_2/PLSQL/ Mennyi helyet foglal el egy objektum, ha egyáltalán foglal? (tábla, nézet) DATA_OBJECT_ID oszlop jelentősége a DBA_OBJECTS katalógusban. (ab2_oracle.docx) Szinonimák (publikus és nem publikus), szekvenciák, adatbázis-kapcsolat. Hivatkozás távoli objektumra (adatbázis kapcsolat, elosztott adatbázis). Létrehozásuk, használatuk, és tulajdonságaik megkeresése a katalógusban. Adattárolással kapcsolatos fogalmak: Mező, Rekord, Blokk, Extens, Szegmens, Adatfájl, Táblatér. Ezek egymáshoz való viszonya. (Oracle_concepts.docx, Oracle_storage.pptx, Select_vegrehajtas.pptx) Szegmensek típusai: Tábla, Index, Cluster, LOB, Partíció, Temporális stb. Lekérdezések a katalógusból az adattárolással kapcsolatos fogalmakra vonatkozóan. (adatszotar_nezetek.txt, 02_DB_storage_concepts.xlsx, ab2_feladat2.txt) 3. gyakorlat ------------ Az Oracle által használt, adattárolással kapcsolatos fogalmak áttekintése. (02_DB_storage_concepts.xlsx, Oracle_concepts2.docx, zh_segitseg.txt) Hányszor fordul elő az Ullman-Widom könyvben a 'BCNF' kifejezés? (-> UW_textbook_index.pdf) A sorazonosító (ROWID) adattípus és pszeudo oszlop. A Rowid részei: OOOOOOFFFBBBBBBRRR. (Object_id, File_id, Block_number, Row_number) A DBMS_ROWID package legfontosabb függvényei. DATA_OBJECT_ID, RELATIVE_FNO kinyerése a sorazonosítóból. A tábla számára lefoglalt hely (a tábla szegmensének adatblokkjai) és a táblabeli sorok által ténylegesen elfoglalt blokkok vizsgálata és a kettő közötti különbség. Egy további példa a ROWID használatára. (ab2_oracle.docx) Kiterjeszthető tördelőtáblázat, beszúrás kiterjeszthető tördelőtáblázatba. Lineáris tördelőtáblázat, beszúrás lineáris tördelőtáblázatba (UW_dinamikus_tordeles.docx). (ab2_feladat3.txt) 4. gyakorlat ------------ A tárolással kapcsolatos paraméterek megadása a tábla létrehozásakor, illetve további hely lefoglalása SQL utasítással a tábla számára. (ab2_oracle_docx) Indexek létrehozása és tulajdonságai az Oracle-ben. (cr_index.txt, Oracle_concepts3.docx) B+ fa, beszúrás B+ fába (UW_b_fa.docx, B_fa_B_plus_fa.pptx). Bitmap index, Bitvektorok tömörítése szakaszhossz kódolással. (Bitmap_index.pptx, UW_szakaszhossz_kodolas.doc) (ab2_feladat4.txt) 5. gyakorlat ------------ Speciálisan tárolt táblák az Oracle-ben: index-szervezett tábla, klaszteren levő tábla, partícionált tábla. (ab2_spec_tablak.pptx, cr_part_table.txt, cr_cluster.txt, ab2_oracle.docx) Partícionált index létrehozása. (cr_part_index.txt, Oracle_concepts4.docx) Dinamikus SQL utasítások futtatása PL/SQL-ben. (pl_dinamikusSQL.txt) (ab2_feladat5.txt) 6. gyakorlat ------------ A lekérdezések végrehajtásának áttekintése. (Query_proc.pptx) Táblák, indexek méretének kiszámolása, lekérdezés eredmények méretének becslése, műveleti költségek kiszámolása. (optimization.pptx, output_estimate.pptx, operation_cost_examples.pptx) (ab2_feladat6.txt) 7. gyakorlat (1. zh ) ------------ A zh-n az 1-6 feladatsorokban szereplő feladattípusok lesznek, amelyek megoldását emailben fogom kérni. A "papíros" feladatok megoldását is be kell majd gépelni egy szöveges állományba és emailben kell elküldeni. Kivételesen a B+ fa és dinamikus hasítás feladatot be lehet papíron is adni. Papíros feladatként B+ fába beszúrások, lineáris vagy kiterjeszthető hasító indexbe beszúrások, bitvektorokkal kapcsolatos feladatok, illetve a 6. feladatsorban szereplő számolós feladatok lehetnek. Gépes feladatként a zh-ban PL/SQL (és esetleg SQL) feladatokat fogok adni, hasonlóakat az 1-5 feladatsorokban szereplő feladatokhoz. A gépes feladatok esetében az SQL, illetve PL/SQL forráskódot és a futtatás során kapott eredményt is el kell majd küldeni. A PL/SQL procedúráik és függvényeik helyességét ellenőrizni tudják majd a korábban látott CHECK_PLSQL nevű procedúra futtatásával, de a helyes outputot nem fogják látni. 8. gyakorlat ------------ Lekérdezés végrehajtás és optimalizálás áttekintése. (Query_proc.pptx, Oracle_optimization.docx) Végrehajtási tervek létrehozása és értelmezése az Oracle adatbáziskezelőben. Hintek megadása a tervek megváltoztatására. (expl.txt, tervek1.txt, tervek2.txt, tervek3.txt, tervek4.txt, hintek.txt) Nagyobb méretű tábla lekérdezése: futas_tesztek.txt, futas_tesztek2.txt (ab2_feladat7.txt) 9. gyakorlat --> lásd zh2_kotelezo_feladat.txt ------------ További végrehajtási tervek értelmezése. Az egyes műveletek részletes áttekintése. Nagyobb méretű tábla lekérdezése: futas_tesztek.txt, futas_tesztek2.txt Hintek részletes áttekintése (hintek.txt, hint_peldak.txt). Semijoin és antijoin (példák: tervek4.txt). Statisztikák létrehozása, törlése és lekérdezése a táblákhoz (lásd tervek3.txt). Végrehajtási tervből visszakövetkeztetés a lekérdezésre. (ab2_feladat8.txt) 10. gyakorlat --> lásd zh2_kotelezo_feladat.txt ------------- Adatbázis konzisztencia feltételek, tranzakciók működési modellje (Instancia_abra.pdf) Naplózás, helyreállítás. UNDO naplózás szabályai. REDO naplózás, UNDO/REDO naplózás, ellenőrzőpont képzés. (UW_tranzakcio_alaptevekenysegek.docx, UW_undo_naplo.docx, UW_redo_naplo.docx, UW_undo_redo_naplo.docx) Információk az Oracle adatbázis-kezelő tranzakcióiról, zárolási módjairól. (tranzakciok.pdf) (ab2_feladat9.txt) !!! A második zh-ig kötelezően megoldandó feladat: zh2_kotelezo_feladat.txt !!! 11. gyakorlat ------------- Konkurencia-vezérlés, ütemező, ütemezés, soros, sorbarendezhető ütemezés, konfliktus-sorbarendezhetőség, megelőzési gráf, zárolások, konzisztens tranzakció, jogszerű ütemezés, kétfázisú zárolás. Zárolások, várakozási gráf, különböző zármódok. (UW_utemezesek.docx, UW_sorbarendezhetoseg.docx) Irányított gráf rajzolásához segítség: https://app.diagrams.net/ és graf_rajzolas.svg (ab2_feladat10.txt) 12. gyakorlat (2. zh ) ------------- A zh-n a 7-10 feladatsorokban szereplő feladattípusok lesznek, valamint a zh2_kotelezo_feladat.txt-ben szereplő feladat. Ebben a zh-ban nem lesz külön-külön minimális elvárás a papíros és gépes feladatokból.