Adatbázisok 2 gyakorlat tematika 2023/2024 II. félév Gyakorlatvezető: dr. Nikovits Tibor A gyakorlatok időpontjai: ------------------------- Hétfő 12.15 - 13.45 (1. csoport, Déli Tömb 00-807) Péntek 12.15 - 13.45 (2. csoport, Északi Tömb 7.16) Konzultáció: ------------ Csütörtökön 13.00-tól (amíg van kérdés, de maximum 14.30-ig) 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 a honlapomon: 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/nikovits/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 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. (01_Codd_12_rules.docx) Átnézendő: 01_Oracle_architecture.pptx 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 katalógus (adatszótár) elemei. (USER_, ALL_, DBA_) Melyik sémában vannak a katalógus elemei? A SYS és SYSTEM felhasználók. Adatszótár (katalógus) nézetek megkeresése a katalógusban (DBA_OBJECTS), és a dokumentációban (Reference). Egy tábla oszlopainak lehetséges típusai, oszlopok DEFAULT értékei (DBA_TAB_COLUMNS). PL/SQL ismétlés az Adatbázisok 1 gyakorlat alapján: http://people.inf.elte.hu/nikovits/AB2/PLSQL/ Feladatok: ab2_feladat1.txt 2. gyakorlat ------------ PL/SQL ismétlés az Adatbázisok 1 gyakorlat alapján: http://people.inf.elte.hu/nikovits/AB2/PLSQL/ Mennyi helyet (bájtot, adatblokkot) foglal el egy objektum a fájlokban, 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). A fenti objektumok létrehozása, használata, és tulajdonságainak megkeresése az adatszótárban. Adattárolással kapcsolatos fogalmak: Mező (oszlop), Sor, 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 az adatszótárból az adattárolással kapcsolatos fogalmakra vonatkozóan. (adatszotar_nezetek.txt, 02_DB_storage_concepts.xlsx) Feladatok: 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? (Így könnyebb -> 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 fájlokban. A tábla szegmensének adatblokkjai, a táblabeli sorok által ténylegesen elfoglalt blokkok, és a kettő közötti különbség. Hézagos blokkok hátrányai -> felesleges I/O. Egy további példa a ROWID használatára. (lásd 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). Feladatok: 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) Feladatok: 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) Feladatok: 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) Feladatok: ab2_feladat6.txt 7. gyakorlat (1. zh --> március 25. hétfő, illetve április 5. péntek) ------------ 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 Feladatok: 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). A rendelkezésre álló statisztikai információk jelentősége, lásd output_estimate.pptx végén. 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. Feladatok: 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) Feladatok: 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 Feladatok: ab2_feladat10.txt 12. gyakorlat (2. zh --> a pontos dátum: május 13. hétfő, illetve május 17. péntek) ------------- 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.