9.gyak. Bevezetés a költség alapú tervválasztásba III.
Végrehajtási tervek az Oracle demo táblái alapján
    
>> 14.témakör: Végrehajtási tervek az Oracle demo táblái alapján
     A mai gyakorlaton csak gépes feladatok lesznek (hasonló, mint a II.ZH gépes része)
     A köv.10.gyak. és 11.gyak. csak papíros példák lesznek (mint a II.ZH papíros része)
   

9.EA: Semijoin, Antijoin. A rendszerhibák kezelése, semmisségi (undo) naplózás
Oracle lekérdezések átírása hatékonyabb félig-összekapcsolással: semijoins.ppt (KA)
A semijoin felhasználása elosztott adatbázisok lekérdezésénél: QueryProcessing.ppt (KA)
A rendszerhibák kezelése, konzisztens adatbázis, tranzakciók, hibafajták, semmisségi (undo)
naplózás és helyreállítás, ellenőrzőpont működés közben: naplo.ppt (KA) 1-72 oldal
   
Az előadás anyagához kapcsolódó példák és feladatok: 
- Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
  8.fejezet: A rendszerhibák kezelése, naplózás és helyreállítás, lásd feladatok: gy08Tk 
  Ehhez kapcsolódó papíros feladatokat a köv.héten a 10.gyakorlaton nézzük meg!
   
14.témakör: Végrehajtási tervek az Oracle demo táblái alapján
   
Segédanyagok:
>> Oracle Sample Schemas Dokuból (SH -Sales History) - sh_sema.pdf  
>> Oracle 10g Doc. Performance Tuning Guide 13-19.fejezetek
>> Oracle 11g Doc. Performance Tuning Guide 11-21.fejezetek. 
>> Nikovits Tibor: (Oracle demo táblái alapján) tervek4.txt és hint_peldak.txt
   
Oracle database
Documentation
download.oracle.com            
Oracle 10gR2 |  11gR2
medusa.inf.elte.hu                   
Oracle 10gR2 | 11gR2
Samples Schemas HTML   PDF HTML   PDF HTML   PDF HTML   PDF
Perf. Tuning Guide HTML   PDF HTML   PDF HTML   PDF HTML   PDF
   
Feladatok:
- A lekérdezésekhez az Oracle demo tábláit, a HR és SH sémához tartozó táblákat
   használjuk, vagyis most ne hozzunk létre saját példányokat, hanem egy adott séma
   tábláit használjuk a lekérdezéseknél, a táblák elérése: HR.<táblanév>, SH.<táblanév>
- A táblákhoz különböző indexek is vannak létrehozva, ezek tulajdonságait a
   katalógusokból (dba_ind_columns) nézhetjük meg, amikor szükségünk van rá.
   
Emlékeztető: Oracle 11g Doc. Hintekről: 19. Using Optimizer Hints >> hintek.txt  
A zh és beküldendő feladatoknál egy szöveges állományba bemásolva beküldendő: 
   1.) SELECT  /*+ tipp lista */ ...  vagyis a lekérdezés (hintekkel együtt),
   2.) lekérdezés outputja ("SCIPT OUTPUT"-ból az eredménytábla első 5 sorát), 
   3.) végrehajtási tervek szöveges megjelenítése  ("EXPLAIN PLAN OUTPUT"-ból)
        -- Ehhez az 1.lépés: Készítsük el az utasítások végrehajtási tervét:
              EXPLAIN PLAN FOR SELECT ... 
        -- 2.lépés: A végrehajtási tervek megjelenítése a dbms_xplan package segítségével: 
            SELECT plan_table_output FROM table(dbms_xplan.display);
    
4.1.feladat:
   - Adjuk meg azoknak a vevőknek a nevét (SH.CUSTOMERS), akik
      nőneműek (cust_gender = 'F') és szinglik (cust_marital_status = 'single'),
      vagy 1917 és 1920 között születtek.
     a) Vegyük rá az Oracle-t, hogy a meglévő bitmap indexek alapján érje el a tábla sorait.
     b) Vegyük rá, hogy ne használja ezeket az indexeket.
 
4.2.feladat:
   - Adjuk meg egy féléves időszakra (illetve egy másik féléves időszakra) vonatkozóan az
     eladások (SH.SALES) összmennyiségét, úgy, hogy az Oracle ne használjon indexet és
     a) pontosan 2 partíciót olvasson a táblából, illetve  
     b) pontosan 3 partíciót olvasson a táblából.
     Lásd partition_start és partition_stop oszlopokat a PLAN_TABLE-ben!
   
- Lásd még a tervek4.txt és a hint_peldak.txt példáit!
 
SQL utasítás rekonstruálása a végrehajtási terv alapján
 
4.3.feladat:
   - Adjunk meg egy olyan lekérdezést az sh tábláira (hintekkel együtt ha szükséges), aminek
     az alábbi lesz a végrehajtási terve:

  TERV (OPERATION + OPTIONS + OBJECT_NAME)
  -------------------------------------------------------------
  SELECT STATEMENT +  +
    HASH + GROUP BY +
      HASH JOIN +  +
        INLIST ITERATOR +  +
          TABLE ACCESS + BY INDEX ROWID + CUSTOMERS
            BITMAP CONVERSION + TO ROWIDS +
              BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
        PARTITION RANGE + ALL +
          TABLE ACCESS + FULL + SALES


4.4.feladat:
   - Adjunk meg egy olyan lekérdezést az sh tábláira (hintekkel együtt ha szükséges),
      aminek az alábbi lesz a végrehajtási terve:

   TERV (OPERATION + OPTIONS + OBJECT_NAME)
   --------------------------------------------------------------
   SELECT STATEMENT +  +
     SORT + ORDER BY +
       TABLE ACCESS + BY INDEX ROWID + CUSTOMERS
         BITMAP CONVERSION + TO ROWIDS +
           BITMAP AND +  +
             BITMAP INDEX + SINGLE VALUE + CUSTOMERS_MARITAL_BIX
             BITMAP OR +  +
               BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
               BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
               BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX


4.5.feladat:
   - Adjunk meg egy olyan lekérdezést az sh tábláira (hintekkel együtt ha szükséges), aminek
     az alábbi lesz a végrehajtási terve:

  TERV (OPERATION + OPTIONS + OBJECT_NAME)
  ------------------------------------------------------------
  SELECT STATEMENT +  +
    SORT + AGGREGATE +
      HASH JOIN +  +
        TABLE ACCESS + FULL + PRODUCTS
        HASH JOIN +  +
          TABLE ACCESS + BY INDEX ROWID + CUSTOMERS
            BITMAP CONVERSION + TO ROWIDS +
              BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
          PARTITION RANGE + ALL +
            TABLE ACCESS + FULL + SALES
 
4.6.feladat:
   - Adjunk meg egy olyan lekérdezést az sh tábláira (hintekkel együtt ha szükséges), aminek
     az alábbi lesz a végrehajtási terve:

  TERV (OPERATION + OPTIONS + OBJECT_NAME)
  -------------------------------------------------------------
  SELECT STATEMENT +  +
    SORT + ORDER BY +
      HASH + GROUP BY +
        HASH JOIN + ANTI +
          PARTITION RANGE + SINGLE +
            TABLE ACCESS + BY LOCAL INDEX ROWID + SALES
              BITMAP CONVERSION + TO ROWIDS +
                BITMAP INDEX + SINGLE VALUE + SALES_TIME_BIX
          TABLE ACCESS + FULL + CHANNELS

 

Beadandó feladat - 9gyak.
Kérem, hogy a gyakorlatok lekérdezéseit és azok végrehajtási terveit mentsék el
egy "<ehakod>_9gy.txt" nevű szöveges fájlba, ahol az <ehakod> helyére a saját
ETR azonosítóját .ELTE nélkül írja be. Ezt a fájlt az óra végén küldjék el emailben!
     
 Vissza az AB2 gyakorlat oldalára             Vissza a Kezdőlapra