A
gyakorlati
foglalkozások az
előadások
anyagára épülnek 1.EA:
Bevezetés, a félév
tematikája, a számonkérés
módja.
> Tudnivalók
az előadásról
(link Kiss Attila AB2EA oldalára)
A félév
tematikája. Számonkérés
módja.
Egy adatbáziskezelő
működése vázlatosan, a legfontosabb
fogalmak az Oracle-ben:
adatbázis,
példány, séma,
adatbázisbeli objektumok abterv_ea1.ppt
Adattárolással kapcsolatos
fogalmak storage.ppt (RAID végéig, 26.o.-ig)
> Pár
szó az
Oracle Junior képzésről
(Oracle
szeminárium az
ELTE-n)
Előadáshoz kapcsolódó
további olvasmányok:
> Oracle
11.2 dokumentáció -> Concepts
és Reference
> Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
Gépes gyakorlathoz:Oracle
adatbázis elérhetősége
A gyakorlatokon az Oracle 11g tomx
adatbázisban az sqldeveloper3-al
dolgozunk,
ahol a SELECT-teket
az Run
Statement
(Ctrl+Enter)
hajtjuk végre és
az eredményt
a Result
ablakban láthatjuk. Később a végrehajtási terveket az Explain
Plan
(F10)
segítségével
készítjük majd el,
annak eredményét pedig az Explain
ablakban találjuk.
G1.
Adatbázis
objektumok
(DBA_OBJECTS)
Segédanyag: Adatbázis
objektumok.txt + 01-DBA
nézetek.pdf
A rendszerkatalógus maga is egy adatbázisnak
tekinthető,
amit lekérdezve egyre többet
tudhatunk meg az ORACLE adatbázisban tárolt
dolgokról és azok
tulajdonságairól.
Elnevezésük: DBA_..., ALL_..., USER_...
1.01. Kinek a tulajdonában van a DBA_TABLES nevű
nézet (illetve a DUAL nevű tábla)?
1.02. Kinek a tulajdonában van a DBA_TABLES nevű
szinonima (illetve a DUAL nevű)?
(Az iménti
két
lekérdezés megmagyarázza, hogy
miért tudjuk elérni őket.)
1.03. Milyen típusú objektumai vannak az orauser
nevű
felhasználónak az adatbázisban?
(a
katalógustáblákban nagy betűvel vannak
az adatok
'orauser' helyett 'ORAUSER')
1.04. Hány különböző
típusú objektum van nyilvántartva az
adatbázisban?
1.05. Melyek ezek a típusok?
1.06. Kik azok a felhasználók, akiknek
több
mint 10 féle objektumuk van?
1.07. Kik azok a felhasználók, akiknek van
triggere
és nézete is?
1.08. Kik azok a felhasználók, akiknek van
nézete, de nincs triggere?
1.09. Kik azok a felhasználók, akiknek
több
mint 40 táblájuk, de maximum 37 indexük
van?
1.10. Melyek azok az objektum típusok, amelyek
tényleges tárolást
igényelnek, vagyis
tartoznak
hozzájuk adatblokkok? (A
többinek csak a definíciója
tárolódik adatszótárban)
1.11. Melyek azok az objektum típusok, amelyek nem
igényelnek tényleges
tárolást, vagyis nem
tartoznak
hozzájuk adatblokkok?
(Ezeknek csak a definíciója
tárolódik adatszótárban)
Az
utóbbi két
lekérdezés metszete nem üres. Vajon
miért? -> lásd majd
partícionálás
2.01. Táblák létrehozása: a
fenti oszloptípusok
(segédlet) alapján hozzunk létre
táblákat,
majd keressük meg milyen
információt találunk a
tábláinkról és a
táblák
oszlopairól
a
DBA_OBJECTS, DBA_TABLES
és
DBA_TAB_COLUMNS katalógustáblákban.
2.02. Hozzunk létre táblákat
megszorításokkal, majd nézzük
meg hogyan
jelennek meg
a
megszorítások a
DBA_CONSTRAINTS katalógustáblában.
2.03. Hozzunk létre
nézettáblákat, majd
nézzük
meg a DBA_VIEWS katalógustáblában.
2.04. Hány oszlopa van a sila.emp
táblának?
2.05. Milyen típusú a sila.emp tábla
6.
oszlopa?
2.06. Adjuk meg azoknak a tábláknak a
tulajdonosát
és nevét, amelyeknek van 'Z' betűvel
kezdődő oszlopa.
2.07. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek legalább 8 darab dátum
tipusú oszlopa
van.
2.08. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek 1. es 4. oszlopa isVARCHAR2 tipusú.
Házi
feladat:
HF01. Írjunk
meg egy plsql procedúrát,
amelyik a
paraméterül kapott karakterlánc
alapján
kiírja azoknak a
tábláknak a
nevét és tulajdonosát, amelyek az
adott
karakterlánccal
kezdődnek. (Ha a
paraméter
kisbetűs, akkor
is működjön a procedúra!)
PROCEDURE tabla_kiiro(p_kar
VARCHAR2)
A fenti
procedúra
segítségével írjuk ki a E
betűvel kezdődő
táblák nevét és
tulajdonosát.
HF02.
Írjunk meg egy plsql procedúrát,
amelyik a
paraméterül kapott táblára
kiírja
az őt
létrehozó
CREATE TABLE
utasítást.
PROCEDURE
cr_tab(p_owner VARCHAR2,
p_tabla
VARCHAR2)
Elég ha az
oszlopok
típusát
és DEFAULT értékeit
kíírja,
és elég ha a következő
típusú
oszlopokra működik.
CHAR, VARCHAR2, NCHAR,
NVARCHAR2, BLOB, CLOB,
NCLOB,
NUMBER, FLOAT,
BINARY_FLOAT, DATE, ROWID
Teszteljétek a
procedúrát az
alábbi
táblával.
CREATE TABLE tipus_proba(c10
CHAR(10) DEFAULT
'bubu',
vc20 VARCHAR2(20),
nc10
NCHAR(10), nvc15 NVARCHAR2(15), blo
BLOB, clo
CLOB, nclo NCLOB,
num NUMBER, num10_2
NUMBER(10,2), num10
NUMBER(10) DEFAULT 100,
flo FLOAT, bin_flo
binary_float DEFAULT
'2e+38', bin_doub binary_double DEFAULT 2e+40,
dat DATE DEFAULT
TO_DATE('2007.01.01',
'yyyy.mm.dd'), rid
ROWID);