Adatbázisok 2. gyakorlat tematika Gyakorlatvezető: dr. Vincellér Zoltán Konzultáció: ------------ Hétfőn 15.30-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 anyagai elérhetőek itt: https://people.inf.elte.hu/vzoli/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 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/vzoli/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/vzoli/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. (ab2_spec_tablak.pptx, ab2_oracle.docx, Oracle_concepts4.docx) index-szervezett tábla (cr_iot.txt), klaszteren levő tábla (cr_cluster.txt), partícionált tábla (cr_part_table.txt), partícionált index (cr_part_index.txt) 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-én a gyakorlat alatt ------------ A zh-n az 1-6 feladatsorokban szereplő feladattípusok lesznek, amelyek megoldását emailben, illetve papíron fogom kérni. 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) !!! A második zh-ig kötelezően megoldandó feladat: zh2_kotelezo_feladat.txt !!! ===> Feladatok: ab2_feladat9.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 ------------- 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.