A
gyakorlati
foglalkozás és az
előadások
anyagára épül. 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)
Lekérdezések
optimalizálása algebrai
opt.ppt
(KA) (91-105.o.)
Oracle
adatbázis
felépítése Abterv_ea1.ppt (NT)
Pár
szó az
Oracle Junior képzésről (Oracle
szeminárium az
ELTE-n)
-- Előadáshoz kapcsolódó
további olvasmány:
Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
1.fej. Bevezetés az adatbázis-kezelő rendszerek
implementálásába.
Gépes gyakorlathoz:Oracle
adatbázis elérhetősége
- A gyakorlatokon a tomx
adatbázisban az sqldeveloper-rel
dolgozunk, ahol
a SELECT-teket
az Execute
Statement
(F9)
hajtjuk végre és
az eredményt
a Result
ablakban látjuk, a
végrehajtási terveket az Execute
Explain
Plan
(F6)
segítségével
készítjük el,
annak eredményét pedig az Explain
ablakban találjuk.
1.témakör:
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?
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
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.
2.témakör:
Táblák
oszlopai és megszorítások
(DBA_TABLES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS)
2.01. Táblák létrehozása: a
fento 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. Hány oszlopa van a sila.emp
táblának?
2.04. Milyen típusú a sila.emp tábla
6.
oszlopa?
2.05. Adjuk meg azoknak a tábláknak a
tulajdonosát
és nevét, amelyeknek van 'Z' betűvel
kezdődő oszlopa.
2.06. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek legalább 8 darab dátum
tipusú oszlopa
van.
2.07. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek 1. es 4. oszlopa isVARCHAR2 tipusú.
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);