2.01. Az Oracle
SQL Language Reference segítségével (az itt
felsorolt típusokkal)
hozzunk létre
táblákat, majd keressük meg az
adatszótár
nézetekben, hogy
milyen
információt találhatunk itt a
táblákról és a
táblák
oszlopairól:
DBA_OBJECTS, DBA_TABLES
és
DBA_TAB_COLUMNS
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.
(folyt)
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ú.
PL/SQL feladatok: Segédlet: Oracle
PL/SQL Language Reference
2.09. Írjunk
meg egy plsql blokkot,
amelyik egy karakterlánc
beolvasása alapján
kiírja
azoknak a
tábláknak a
nevét és tulajdonosát, amelyek az
adott
karakterlánccal
kezdődnek. (Ha
kisbetűkkel adjuk meg a karakterláncot, akkor
is működjön!)
Szorgalmi feladat (beküldhető)
2.10. Í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
create_table_ut(p_owner VARCHAR2,
p_tabla
VARCHAR2)
Elég
ha az
oszlopok
típusát
és DEFAULT értékeit
kiírja,
és elég ha a következő
típusú
oszlopokra
működik: CHAR, VARCHAR2, NCHAR,
NVARCHAR2,
NUMBER, FLOAT,
BINARY_FLOAT, DATE, ROWID
Teszteljétek a
procedúrát az
alábbi
táblával.
CREATE TABLE
tipus1_proba
(c10
CHAR(10) DEFAULT
'bubu',
vc20 VARCHAR2(20),
nc10
NCHAR(10), nvc15 NVARCHAR2(15),
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); G3.
Adattárolással
kapcsolatos fogalmak DBA_TABLES,
DBA_DATA_FILES, DBA_TEMP_FILES,
DBA_TABLESPACES, DBA_SEGMENTS,
DBA_EXTENTS,
DBA_FREE_SPACE
3.01. Melyik táblatéren van az ORAUSER
felhasználó dolgozo
táblája? (DBA_TABLES)
3.02. Adjuk meg az adatbázishoz tartozó
adatfile-ok
(és temporális fájlok)
nevét és méretét
méret szerint csökkenő sorrendben. (DBA_DATA_FILES, DBA_TEMP_FILES)
3.03. Adjuk meg, hogy milyen táblaterek vannak
létrehozva az adatbázisban,
az egyes
táblaterek hány
adatfájlból
állnak, és mekkora az
összméretük.
(tablater_nev,
fajlok_szama, osszmeret) Vigyázat, van
temporális
táblatér is!
3.04. Mekkora a blokkok mérete a USERS
táblatéren? (DBA_TABLESPACES)
3.05. Melyik a legnagyobb méretű tábla szegmens
az
adatbázisban (a tulajdonost is adjuk meg)
és
hány extensből áll? (A
particionált táblakat ne vegyük
figyelembe) (DBA_SEGMENTS)
3.06. Melyik a legnagyobb méretű index szegmens az
adatbázisban és hány
blokkból áll?
(A
particionált indexeket most ne vegyük
figyelembe.)
3.07. Adjuk meg adatfájlonként, hogy az egyes
adatfajlokban mennyi a foglalt hely
összesen
(írassuk ki a fájlok
méretét is). (DBA_EXTENTS)
3.08. Melyik két felhasználó
objektumai
foglalnak összesen a legtöbb helyet az
adatbázisban?
3.09. Van-e valamelyik felhasználónak olyan
táblája, amelyik több
adatfájlban is foglal
helyet?
3.10. Válasszunk ki a fenti
táblákból egyet
(pl. nikovits.tabla_123) és adjuk meg, hogy
ez a
tábla mely
adatfájlokban foglal helyet.
3.11. Írjunk
meg egy PL/SQL
procedúrát,
amelyik
kiírja, hogy a paraméterül
kapott
tábla
melyik fájlban mennyi helyet
(hány
adatblokkot) foglal el
(Fájlnév,
Méret) -->
proc(tulajdonos,
táblanév).
Hívjuk
meg az
eljárást
(’SH’,
’CUSTOMERS’) paraméterekkel.