RĪGAS TEHNISKĀ UNIVERSITĀTE
Automātikas
un Skaitļošanas tehnikas fakultāte
Sistēmu
teorijas un projektēšanas katedra
Lielas
datu bāzes
1.
Praktiskais darbs
Iepazīšanās
ar ORACLE datubāzu vadības sistēmas sastāvdaļām un šo sastāvdaļu realizējošām funkcijām
Izstrādāja: Raivis Sudārs
Paraksts
Pieņēma: doc. Eiduks
Paraksts
Datums 13.10.99
Saturs
Oracle
datu bāzes atvēršanas un aizvēršanas sistēmas sastāvdaļa.............................................. 3
SQL valodas atbalsta sistēma..................................................................................................... 6
Lietotāju tiesību vadības sistēmas............................................................................................... 8
Datu bāzes
vadības sistēma (DB Management Systems)........................................................... 9
Datubāzes izveidošana.............................................................................................................. 15
Tabultelpas izveidošana............................................................................................................ 17
Tabulas izveidošana.................................................................................................................. 18
Manas definētās tabulas............................................................................................................ 21
Skatu izveidošana (View)......................................................................................................... 22
Skatījuma izveidošanas sintakse........................................................................................... 22
Datu bāzes
trigeri...................................................................................................................... 23
Komandu skaidrojumi:............................................................................................................. 23
Saišu veidošana......................................................................................................................... 24
Secinājumi................................................................................................................................. 25
Oracle datu bāzes atvēršanas un aizvēršanas sistēmas sastāvdaļa
Oracle Datu bāzes atvēršanai ir
trīs etapi:
1.
Datu bāzes
(DB) vadības sistēmas eksemplārs (Start an Instance).
2.
Datu bāzes
salikšana (montēšana) (MountDB).
3.
Datu bāzes
atvēršana.
Sākot
izveidot DB vadības sistēmu tiek iedalīta, sistēmas globālā platība (atmiņa, ko
aizņem Oracle (datu bloki, sistēmas žurnāls uc. atmiņas struktūras)) un
izveidoti fona procesi (piemēram, LogWriter, Arhivator uc. sistēmas).
Pēc
šī procesa Oracle sistēma sāk nākošo soli – datu bāzes montēšanu, kurā tiek
piesaistītas datu bāzes struktūras. Montēšanas laikā tiek lasīti dažādi
parametru faili, kurus nosaka DB īpašības, piemēram, SGA lielumu atmiņā. Šie
faili nokonfigurē DB atbilstoši prasībām. Īpašos gadījumos, kad kāds process
tiek neatļauti pārtraukts, datu bāzes piesaistīšanas process ziņo par kļūdu.
Lai šo kļūdu labotu, datubāzes administratoram jāiznīcina visi iepriekšējās
vadības sistēmas procesi un jāsāk darbs ar jauniem vadības sistēmas procesiem.
Datu bāzes montēšana piesaista to iepriekšējai
izveidotajai vadības sistēmai. Pēc datu bāzes salikšanas, tā tiek aizvērta un
ir pieejama tikai datu bāzes administratoram. Administrators drīkst ielādēt
vadības sistēmu un tikai piemontēt datu bāzi, nodrošinot specifiskās
uzturēšanas operācijas, kā, piemēram, datu bāzes atjaunošanu.
Kad
vadības sistēma saliek datubāzi, tiek meklēti kontroles faili un tos atver. Kad
datubāzes kontrolfaili tiek atvērti, Oracle programma nolasa informāciju par
datu failu vārdiem un *.log failu parametriem.
Ja
Oracle programma atļauj vairākām vadības sistēmām montēt konkurējoši to pašu
datubāzi, tad administrators var noteikt, kurš lietotājs strādās ekskluzīvajā
vai paralēlajā režīmā.
Ekskluzīvajā
režīmā tikai viens lietotājs var uzmontēt datubāzi. Sistēmas, kuras neatbalsta
paralēlā servera metodi, ļauj salikt datubāzi tikai ekskluzīvajā režīmā.
Savukārt
paralēlais režīms pieļauj iespēju vairākiem lietotājiem uzmontēt savu datubāzi.
Šādu lietotāju skaits, kuri var salikt datubāzi, ir licenzē iepriekšnoteikts maksimums.
Trešais solis ir datubāzes atvēršana,
kura samontēto datubāzi atļauj rediģēt ar parastām datubāzes komandām. Tikai
pārbaudīts lietotājs var pieslēgties pie datubāzes un izmantot tās informāciju.
Parasti datubāzes administrators veic datubāzes atvēršanu, padarot to pieejamu
vispārējai lietošanai.
Kad tiek atvērta tabula, Oracle atver
piesaistītos datu failus un turpina rakstīt informācijas izmaiņas
piesaistītajos log failos. Tiek atvērtas arī tabultelpas un to raksturojošie
komandu faili tieši tāda pat stāvoklī, kādā tās tika aizvērtas. Ja kāda no datu
failu komponentēm ir bojāta vai neeksistē, kad tiek atvērta datu bāze, tad tiek
ziņots par kļūdu. Šajā gadījumā ir jāveic atjaunošanas process, pirms var
atvērt datubāzi. Kļūdas var rasties arī tad, ja datubāze tiek aizvērta. Šādi
gadījumi rodas, ja lietotājam izdevies aizvērt datubāzi, vai sistēmā ir
ieviesusies nopietna kļūda, kamēr ar datubāzi tika strādāts. Kļūdas var labot,
veicot sistēmas vadības pārlādi, kas veic atjaunošanu.
Datu bāzes aizvēršanai tāpat, kā
ielādei, ir trīs etapi – datu bāzes aizvēršana, demontēšana un vadības sistēmas
aizvēršana. Aizverot Oracle programmu, visi uzskaitītie soļi automātiski
izpildās.
Pirmais solis ir datubāzes aizvēršana.
Šajā gadījumā visa informācija no SGA(sistēmas globālā apgabala) tiek
ierakstīta datu failos. Pēc šīs operācijas, DBVS aizver datubāzi, un atbrīvo
atmiņā vietu, ko aizņem tabulu telpa. Oracle programma arī aizver uz šo brīdi
nepiesaistītās tabulas un tabulu telpas. Kad tiek atvērta atkal datubāze, tad
nepiesaistītas tabulu telpas un datu faili tiek atvērti no jauna. Retos
neparedzētos gadījumos var pārtraukt datu bāzes ielādēšanu, lai nekavējoties to
aizvērtu. Šis process salīdzinoši ir ātrs, jo dati netiek ierakstīti sistēmas
globālajā apgabalā (turpmāk SGA), taču sekojošajā datubāzes atvēršanā programma
automātiski veiks datubāzes atjaunošanu. Atjaunošana tiek veikta arī tad, ja,
strādājot ar datubāzi, atgadās nopietnas kļūdas, kuru dēļ datu bāze ir
jāaizver.
Nākošais solis ir datu bāzes
demontēšana vai norobežošana no vadības sistēmas. Pēc demontēšanas procesa
atmiņu datorā aizņem tikai Oracle programmas vadības sistēma.
Trešais aizvēršanas solis Oracle
vadības sistēmas apturēšana. Kopā ar vadības sistēmu tiek pārtraukti arī visi
fona procesi un likvidēta SGA sistēma. Rezultātā atmiņa tiek pilnībā atbrīvota.
Gadījumos, kad vadības sistēma kļūdas
rezultātā ir aizvērta, tad fona procesi netiek pārtraukti un atmiņa netiek
pilnībā atbrīvota. Šajā gadījumā, veidojot, pateicoties iepriekšējās sistēmas
atliekām, jaunu vadības sistēmu nevarēs izveidot. Šo problēmu risina
administrators, kurš aizvāc pirmās vadības sistēmas atliekas un startē jaunu
vadības sistēmu.
SQL valodas atbalsta sistēma
SQL
(Structured Query Languange) ir vienkārša, jaudīga datubāzu pieejas valoda,
kura ir standarta valoda attieksmju datubāzu vadības sistēmās. Oracle iekļautā
SQL valoda ir pilnīgi savietojama ar ANSI/ISO standarta SQL datu valoda.
SQL komanda
ir SQL teksta rinda. Komandai jābūt ir pareizi uzrakstītai, citādi tā netiks
izpildīta. SQL komandas dala piecās kategorijās:
1.
Datu definēšanas komandas (DDL) definē un uztur un
nodzēš objektu, kad tas vairs nav vajadzīgs. Šī tipa komandas iekļauj arī
privilēģiju vadības komandas.
2.
Datu manipulēšanas komandas (DML) manipulē ar datiem,
veicot tabulas vaicāšanu, ievietošanu, papildināšanu un dzēšanu. Pie šīm
komandām arī var pieskaitīt tabulas vai skata aizslēgšanu vai SQL vaicājuma
apskatīšanu.
3.
Transakciju kontroles komandas vada datu manipulēšanas
komandu veiktās izmaiņas. Šīs komandas atļauj lietotājam vai lietojumprogrammu
izstrādātājam grupēt izmaiņas loģiskās transakcijās.
4.
Sesijas kontroles komandas atļauj lietotājam kontrolēt
tekošās sesijas īpašības, iekļaujot likumu atļaušanu un aizliegšanu un valodas
parametru izmaiņas.
5.
Sistēmas kontroles komandu sistēma atļauj kontroles
komandām izmainīt Oracle Server vadības sistēmu parametrus. Vienīgā šāda
sistēmas komanda ir ALTER SYSTEM, kura atļauj jums izmainīt minimālo dalīto
serveru skaitu, pārtraukt sesiju un veikt
citus uzdevumus.
6.
Iebūvētās SQL komandas, kuras atļauj datu definēšanas,
datu manipulēšanas un transakciju kontroles komandas procedurālajā valodas
programmā. Piemēram - OPEN, CLOSE, FETCH and EXECUTE.
PL/SQL ir Oracle programmas SQL procedurālās valodas
paplašinājums. PL/SQL kombinē SQL vieglumu un pielāgojamību, ar strukturētās
programmēšanas valodas procedurālo funkcionalitāti, kā IF … THEN, WHILE un
LOOP. Kad projektē datubāzes lietojumprogrammu, izstrādātājam vajag apdomāt
PL/SQL priekšrocības:
·
Tā kā PL/SQL kods var būt glabāts kopā ar datubāzi,
tīkla sadarbība starp lietojumprogrammām un datubāzi ir samazināts, tādējādi
palielinot lietojumprogrammu un sistēmas veiktspēju.
·
Datu pieeju var kontrolēt ar PL/SQL kodu. Šajā gadījumā
PL/SQL lietotājs var piekļūt datiem tikai kā paredzētais aplikācijas
izstrādātājs.
·
PL/SQL blokus var sūtīt ar lietojumprogrammu uz
datubāzi, izpildot operāciju kompleksu, bez intensīvas tīkla izmantošanas.
Katrreiz, kad PL/SQL netiek glabāts datubāzē,
lietojumprogrammas var sūtīt PL/SQL blokus uz datubāzi labāk nekā individuālās
SQL komandas, atkal samazinot tīkla noslodzi.
Tālāk
tiks aprakstītas atšķirīgu programmu vienību funkcijas.
Procedūras
un funkcijas sastāv no SQL un PL/SQL komandu kopas, kuras ir grupētas tā, lai vienība
atrisinātu specifisku problēmu vai lai veiktu saistītus uzdevumus. Procedūra ir
veidota un glabāta kompilētā veidā datubāzē un var būt izpildāma ar lietotāja
vai datubāzes lietojumprogrammas atbalstu. Procedūras un funkcijas ir
identiskas, izņemot, ka funkcijas
vienmēr atgriež vienu vērtību izsaucējam, kamēr procedūras to nedara.
Pakotne
nodrošina iekapsulēšanas un glabāšanas saistītas procedūras, funkcijas,
mainīgos un citas pakotnes konstrukcijas kopā ar vienību datubāzē. Kamēr
pakotnes atļauj administratoram vai lietojumprogrammas izstrādātājam prasmi
organizēt rutīnu, tās arī izrāda paaugstinātu funkcionalitāti un veiktspēju.
Oracle
programma atļauj jums rakstīt procedūras, kuras tiek automātiski izpildītas kā
insert in, update to vai delete from table rezultāti. Šīs procedūras sauc par
datubāzu trigeriem. Datubāzu trigerus var lietot dažādos ceļos jūsu datubāzes
informācijas vadībai. Piemēram, tos var lietot, automatizējot datu ģenerēšanu,
auditējot datu modifikāciju un mainot sarežģītas drošības autorizācijas.
Lietotāju tiesību vadības sistēmas.
Daudzlietotāju datubāzu sistēmas, kā Oracle, iekļauj
drošības pazīmes, kuras kontrolē, kā datubāze ir pieejama un lietoti. Piemēram,
drošības mehānismi veic sekojošo:
·
Novērš neautorizētu pieeju datubāzei;
·
Novērš neautorizētu pieeju šēmas objektiem;
·
Kontrolē diska lietošanu;
·
Kontrolē sistēmas resursu lietošanu;
·
Auditēšanu lietotāju akciju;
Datubāzes drošību var iedalīt divās atšķirīgās
kategorijās – sistēmas un datu drošībā. Sistēmas drošība iekļauj mehānismus,
kuri datubāzē kontrolē pieeju un lietošanu sistēmas līmenī. Sistēmas drošība
iekļauj:
·
pareizu lietotāja/paroles kombināciju;
·
Kurš no lietotājiem atļauti pievienojies datubāzei;
·
Brīvo diska vietas ietilpību lietotāja objektiem;
·
Lietotāja resursu robežas;
·
Kura datubāze tiek auditēta;
·
Kuru sistēmas operāciju lietotājs var veikt;
Datu drošība iekļauj mehānismu, kurš kontrolē pieeju un
datubāzes lietojumu objektu līmenī. . Datu drošība iekļauj:
·
Lietotāju pieejas specifiskiem šēmas objektiem un darbību
specifiskiem tipiem.
·
Darbības, kuras ir auditētas katram šēmas objektam.
Oracle serveris nodrošina patstāvīgu pieejas kontroli, kura ir daļa no
ierobežotas pieejas uz informācijas bāzētām privilēģijām. Piešķirtās
privilēģijas vajag piesaistīt lietotājam kārtībā, kādā lietotājs piekļūst
objektam. Atbilstoši priviliģēts lietotājs var ierobežot citus lietotāju
privilēģijas. Oracle vada datubāzes drošību, lietojot dažus atšķirīgas
līdzekļus:
·
Datubāzu lietotājus un šēmas;
·
Privilēģijas;
·
Likumus;
·
Parametru un kvotu glabāšanu;
·
Resursu ierobežojumu;
·
Auditēšanu.
Datu drošību nosaka administrators, izveidojot jaunu
datubāzi. Administrators var izmainīt datubāzes drošības parametrus arī tad,
kad datubāze ir jau izveidota.
Datu bāzes vadības sistēma (DB Management Systems)
Oracle
datu bāzu vadības sistēmai uz šo brīdi visbiežāk sastopamais ir attieksmju modelis. Ir arī iespējamas citas,
kā, piemēram, hierarhiskās un tīkla sistēmas. Attieksmju modelim ir trīs
galvenās perspektīvas:
1.
Struktūras ir
labi definēti objekti, kuri glabā datus datubāzēs. Ar struktūrām un tām
piesaistītajiem datiem var manipulēt ar dažāda tipa komandām un iegūt vēlamos
rezultātus.
2.
Operācijas ir
skaidri definētas darbības, kuras atļauj lietotājam manipulēt ar datiem un
datubāzu struktūrām. Datubāzu operācijām jāievēro iepriekšnoteiktie
integritātes likumi.
3.
Integritātes
likumi ir likumi, kuri nosaka, kura operācija ir atļauta pie noteiktām datubāzu
struktūrām un datiem. Integritātes likumi aizsargā datus un datubāzu
struktūras.
Attieksmju
datubāzu vadības sistēmas piedāvā šādas vērtīgas iespējas, kā
1.
neatkarību no
fiziskām datu glabātuvēm un loģiskām datubāzu struktūrām;
2.
mainīgos un
vieglu pieeju visiem datiem;
3.
neierobežotu
pielāgojamību datubāzu izstrādē;
4.
samazinātu
vietu datu glabāšanai un dublēšanos.
Oracle
datubāze ir datu kolekcija, kuras ir aplūkotas kā vienības. Galvenais datubāzes
nolūks ir glabāt un atjaunot piesaistīto informāciju. Datubāzei ir fiziskās un
loģiskās struktūras.

1.
attēls
1. attēls ilustrē sekojošo:
·
Katra datubāze ir loģiski sadalīta vienā vai vairākās tabulutelpās
·
Viena vai vairāki datu faili ir izveidoti no katras tabultelpas, fizikāli
glabājot datus no visām tabultelpas loģiskajām struktūrām.
·
Tabultelpas datu failu kopējais lielums ir tabultelpas noliktavu galvenā
ietilpība.
·
Tabultelpu kopējā ietilpība ir datubāzes galvenā ietilpība.
Tabultelpas var būt piesaistītas vai nepiesaistītas.
Tabultelpas ir parasti piesaistītas, un lietotājs var piekļūt esošai
informācijai. Taču dažreiz tabultelpas var būt nepieslēgtas un nepieejamas
lietotājiem. Tas ir svarīgi, jo administratoram šajā režīmā ir vieglāk veikt
dažādus uzdevumus (atjaunošanu, tiesību uzstādīšanu utt.).
Loģiska struktūra ir arī šēma, kura ir objektu
kolekcija. Šie objekti ir tabulas, skati, secības, glabāšanas procedūras,
programmu vienības, sinonīmi, indeksi, klasteri un datubāzes saites. Objekti,
kuri glabājās dažādās tabultelpās var būt vienā šēmas objektā un otrādi.
Tabulas, skati, indeksi un datubāzes saites ir svarīgas komponentes un tās tiks
apskatītas detalizētāk:
·
Tabula ir datu glabāšanas pamata vienība Oracle
datubāzē. Datubāzes tabulas glabā visu lietotāja pieejamo informāciju. Tabulu
dati tiek glabāti rindās un kolonnās. Katra tabula ir definēta ar tabulas vārdu
un kolonnu skaitu. Katrai kolonnai ir savs vārds, datu tips un platums (nosaka
datu tips) vai precizitāte. Kad tabula ir izveidota, tajā tiek ievietotas
pārbaudītās datu rindas. Tabulas rindas var būt vaicājamas, papildinātas vai
dzēstas.
·
Skati ir datu prezentācija vienā vai vairākās tabulās.
Skati nevar īstenībā saturēt vai glabāt datus, tie iegūst datus no tabulām uz
kuriem tie ir bāzēti, attiecoties uz skata bāzes tabulām. Līdzīgi tabulām
skatus vai vaicāt, papildināt, ielikt un dzēst ar ierobežojumiem. Visas
operācijas, kuras izpildītas ar skatiem patiesībā attiecas uz skatu bāzes
tabulām. Skatus lieto, lai:
1. nodrošinātu
tabulas papildu līmeņa drošību ierobežojot pieeju rindu kopai un tabulu
kolonnām. Izveidojot skatu lietotājs var padomāt, kādus datus var iekļaut;
2. izmantotu
šos skatus formu un atskaišu veidošanā. Tas ļoti atvieglo vajadzīgās
informācijas izvadīšanu;
3. slēptu
datu sarežģītību. Lietotājs var nenojaust, ka dati skatā var būt izlasīti no
vairākām tabulām;
4. vienkāršo
komandas lietotājam. Skati var saturēt informāciju, kas iegūtas no dažādām
tabulām prasot lielas zināšanas no veidotāja;
5. glabātu
kompleksus vaicājumus. Vaicājums var veikt intensīvas kalkulācijas ar tabulas
informāciju. Saglabājot vaicājumu skatā, kalkulācijas tiek veiktas tad, kad
skats tiek pieprasīts.
·
Virknes ģenerē unikālo numuru sarakstu datubāzu tabulu
kolonnām. Virknes vienkāršo lietojumprogrammatūru programēšanu ar automātisku
unikālo numuru vērtību ģenerēšanu vienai vai vairākām tabulu rindām. Virkņu
numuri ir neatkarīgi no tabulām, un tās var lietot vienai vai vairākām tabulām.
Pēc izveidošanas virkne ir pieejama atšķirīgiem lietotājiem ģenerējot aktuālos
virkņu numurus.
·
Indeksu būtība – palielināt datu ieguves veiktspēju.
Indeksi arī cilvēcīgi palīdz atrast specifisku informāciju ātrāk, ja indeksi
nav izveidoti. Oracle programmā indeksi nodrošina ātrāku pieeju tabulas datiem.
Kad apstrādā vaicājumu, Oracle var lietot dažus vai visus indeksa laukus, lai
efektīvi atrastu pieprasītās rindas. Indeksus izveido vienā vai vairākās
tabulas kolonnā. Ja tie ir izveidoti, tad indeksi tiek automātiski uzturēti un
lietoti šajā DBVS. Izmaiņas datu tabulā, kā, piemēram, pievienojot, papildinot
vai dzēšot rindas, ir automātiski attiecinātas uz visiem esošajiem indeksiem.
Indeksi ir loģiski un fiziski neatkarīgi no datiem. Tos var atdalīt un izveidot
jebkurā laikā bez iespaida uz citiem datiem un citiem indeksiem. Ja indekss ir
atdalīts, tad visas darbības būs lēnākas.
·
Datubāzu saites ir nosaukts objekts, kurš apraksta ceļu
uz citu datubāzi. Šo objektu var netieši lietot, kad tiek mainīta atsauksme uz
globālo objekta vārdu sadalītajā datubāzē.
·
Oracle DBVS dati tiek glabāti blokos. Viens datu bloks
atbilst specifiskam fizikās datubāzu diska vietas baitu skaitam. Datu bloka
lielums ir specificēts katrai Oracle datubāzei, kad datubāze ir izveidota.
Datubāze lieto un piešķir brīvu datubāzes vietu Oracle datu blokos.
·
Nākošā loģiskās datubāzes vieta ir nosaukta par ekstentu
(apjomu). Ekstents ir specifisks blakusesošā bloka numurs, kuru lieto
informācijas specifisko tipu glabāšanai.
Loģiskās
datubāzes glabāšanas līmenis, kurš iekļauj ekstentus, tiek saukts par segmentu.
Segments ir ekstentu kopa, kura piešķirta noteiktai loģiskajai struktūrai. Ir
vairāki segmenta atšķirīgie tipi:
1.
Datu segmenti. Katra ne tabula ir datu segments. Visi
tabulas dati tiek glabāti datu segmenta ekstentos. Katrs klasters ir datu
segments. Katras tabulas klasteru dati tiek glabāti klasteru datu segmentā.
2.
Indeksu segments – katrs indekss ir indeksa segments.
3.
Atrites segments. Vienu vai vairākus atrites segmentus
izveido administrators, lai nodrošinātu undo komandas izpildi. Undo komandu
izmanto datubāzes atjaunošanai, lai nodrošinātu datubāzes informācijas
lasīšanas nepretrunīgumu, un atsauktu lietotāja izpildītās komandas.
4.
Īslaicīgie segmenti tiek izveidoti, kad SQL komandai
vajag pagaidu darba atmiņu, lai pabeigtu darbu. Pēc darba baigām īslaicīgais
segments tiek likvidēts.
Katrai Oracle datubāzei ir viena vai vairākas fiziskās datubāzes. Datubāzes
datu faili satur visus datubāzes datus. Loģiskās datubāzes struktūras, kā
tabulas un indeksi, tiek fiziski glabāti datu failos, kuri piesaistīti
datubāzei. Datu failiem ir sekojošas īpašības:
·
Datu fails var būt piesaistīts tikai vienai datubāzei;
·
Viena vai vairāki datu faili veido datubāzes glabāšanas
loģisko vienību, kuru sauc par tabulas telpu.
Dati datu failā tiek nolasīti, kā vajadzīgi ar normālām
datubāzes operācijām un glabāti Oracle atmiņas apgabalā. Ja informācija nav
dotajā atmiņas apgabalā, tad tā tiek lasīta no datu faila.
Modificētie vai jaunie dati netiek uzreiz ierakstīti datu
failos. Samazinot diska izvades daudzumu un palielinot veiktspēju, dati tiek
apvienoti atmiņā, kura tiek laiku pa laikam ierakstīta datu failā.
Katra
Oracle datubāzē ir divu vai vairāku log failu kopa, kuru primārā funkcija ir
visu izmaiņu ierakstīšana log failā. Redo log faili ir ļoti svarīgi, lai
aizsargātu datubāzes pret kļūdām. Log failiem var būt vairākas kopijas, kuras
var atrasties uz vairākiem diskiem.
Katri
Oracle datubāzei ir kontrolfails. Kontrolfailā ieraksta fizikālo datubāzes
struktūru. Kontrolfails satur sekojošā tipa informāciju:
·
datubāzes vārdu;
·
vārdu un datubāzu datu failu un redo log failu atrašanās
vietu;
·
datubāzes izveidošanas laiku.
Kontrolfails ir svarīgs datubāzes montēšanas procesā.
Katrai
Oracle datubāzei ir datu vārdnīca. Datu vārdnīca ir tabulu un skatu kopa. Datu
vārdnīca glabā informāciju par loģiskām un fiziskām datubāzu struktūrām.
Papildus šai informācijai tiek glabāti dati arī par:
·
Oracle datubāzes lietotājiem;
·
Informāciju par integritātes definēšanu tabulām
datubāzē.
·
Cik daudz vietas ir piešķirts šēmas objektiem un cik
daudz tās izmanto.
Datubāzes izveidošana
Datubāzes izveidošanas (Create database) komandai ir
šāda sintakse:
CREATE
DATABASE Vards
[CONTROLFILE REUSE ]
LOGFILE
GROUP 1(‘diskc:log1.log’, ‘ diskd:log1. log',
‘diskf: log1.log’) SIZE 1 M,
GROUP 2(‘diskc:log2.log’, ‘ diskd:log2. log',
‘diskf: log2.log’) SIZE 1 M,
MAXLOGFILES 4
MAXLOGHISTORY 50
DATAFILE ‘diska:EE: datbaze’ size 5M
MAXDATAFILES 8
MAXINSTANCES 3
ARCHIVELOG
EXCLUSIVE
CHARACTER SET
DATAFILE
’disk1:df1.dbf’ AUTOEXTEND
ON
’disk2:df2.dbf’
AUTOEXTEND ON NEXT
10M MAXSIZE UNLIMITED
Vārds - ir datbāzes nosaukums, kurš nepārsniedz
astoņu baitu lielumu. Oracle 7 programma ieraksta konfigurācijas faila pamata
vārdu faila. Rakstot faila vārdu netiek pieļautas garumzīmes un kirilicas
simboli.
CONTROLFILE REUSE – šis parametrs ļauj uzdot datubāzei
īpašības, kuras tiek rakstītas kontrolfailos. Šie parametri ir MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATAFILES un MAXINSTANCES.
LOGFILE – sistēmas žurnāla fails. Šo failu var likt izveidot,
iekļaujot to grupās, kā tas ir redzams piemērā. Papildus log failiem uzdod arī
šo failu izmērus kilobaitos (K) un megabaitos(M), strādājot ar lielām
datubāzēm.
MAXLOGFILES uzstādījums nosaka cik daudz Log failu grupu var
izveidot. Šī iespēja ļauj noteikt, cik daudz vietas būs vajadzīgs log failiem.
Pēc noklusēšanas maksimālais un minimālais log failu skaits ir atkarīgs no
datora resursiem.
MAXLOGMEMBERS – nosaka loga failu grupu
skaitu. Šo failu daudzums ir atkarīgs no sistēmas. Ļoti labi, ja šis rādītājs
ir lielāks par divi.
MAXLOGHISTORY – Oracle 7 lieto, lai
noteiktu, cik daudz vietas tiek iedalīts atjaunošanas failiem. Minimālā vērtība
šim parametram ir 0, bet maksimālā ir tieši atkarīga no datora iespējām.
MAXDATAFILES – šis uzstādījums veic datu
failu uzstādīšanas ierobežojumu, jeb nosaka cik daudz datu failu drīkst
izveidot. Šī parametra maksimālā vērtība ir atkarīga no datora iespējām.
MAX INSTANCE – nosaka, cik vadības sistēmu
drīkst izmantot datubāzes montēšanā. Pēc noklusēšanas minimālā vērtība ir 1,
bet maksimālā ir atkarīga no operāciju sistēmas.
ARCHIVELOG – nosaka
log failu arhivēšanu. Šai komandai ir arī pretējā komanda – NOARCHIVELOG, kas norāda, ka arhivēšanu
nevajag izmantot. ARCHIVELOG –
komanda ļauj ekonomēt cietā diska vietu.
EXCLUSIVE – sāk datubāzes montēšanu, nosakot, ka tikai viena
vadības sistēma drīkst montēt datubāzi.
CHARACTER SET – nosaka rakstzīmju kopu. Šo
kopu pēc datubāzes izveidošanas vairs nevar mainīt vai rediģēt.
DATAFILE – nosaka vienu vai vairākus failus, kurus lieto kā datu
failus. Šie faili ir sistēmas tabultelpas sastāvdaļa. Ja datu fails netiek
norādīts, tad datu fails tiek izveidots pēc noklusēšanas. Autoextend iespēja
atļauj vai aizliedz datu faila automātisku paplašināšanu. OFF gadījumā datubāze netiek paplašināta. ON apakšiespēja savukārt atļauj datu faila automātisku paplašināšanu. NEXT komanda paplašina datubāzi, ja ir nepieciešamība, bet MAXSIZE atļauj rezervēt datufailam visu diska vietu. Līdzīga
komanda ir arī UNLIMITED.
Mans datubāzes izveidošanas piemērs:
CREATE DATABASE
Vide
CONTROLFILE REUSE
LOGFILE
GROUP 1
(’diskd:log1.log’, ’diskc:log1.log’) SIZE 50K,
GROUP 2
(’diskd:log2.log’, ’diskc:log2.log’) SIZE 50K
MAXLOGFILES 5
MAXLOGHISTORY 100
DATAFILE
’diskc:vide.dat’ SIZE 2M
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG
Tabultelpas izveidošana
Tabultelpas izveidošanas komandas sintakse:
CREATE TABLESPACE tabspace_2
DATAFILE
’diska:tabspace_file2.dat’ SIZE 20M
[DEFAULT STORAGE
(INITIAL 10K
NEXT 50K
MINEXTENTS 1
MAXEXTENTS 999
PCTINCREASE 10)]
[ONLINE]
Tabultelpa ir neliela daļa no datubāzes, kurā var glabāt
tabulas un citus datus. Detalizētāku apraksts nodaļā par loģiskajām datubāzu
struktūrām.
DATAFILE –
nosaka datu failus vai failus tabulas
vai failus, kas ietver tabultelpas. Šīs komandas iespējas detalizēti tika
aprakstītas datubāzes izveidošanas procesā. Datu failam ir jāuzdod arī izmērs.
DEFAULT
STORAGE – nosaka noklusētos glabāšanas parametrus visiem objektiem, kuri
izveidoti tabultelpā. Storage (datu krātuve) var glabāt dažādus ar datubāzi
saistītus datus, kā, piemēram, klasterus, indeksus, atritināšanās
segmentus(rollback segment), tabulas un tabultelpas. Apakškomanda INITIAL
nosaka objekta pirmā ekstenta lielumu baitos. Maksimālais šī ekstenta lielums
ir 5 datu bloki, bet minimālais – 2 datu bloki. NEXT komanda nosaka nākošā
ekstenta lielumu kilobaitos (K) vai megabaitos (M). Noklusētais ekstenta
lielums ir 5 datu bloki, bet minimālais – datu bloks. Maksimālais ekstenta
lielums ir atkarīgs no datora resursiem un lietotāja gribas. MINEXTENTS –
nosaka ekstentu skaitu, kad tas tiek izveidots. Šis parametrs atļauj piešķirt
lielu brīvās vietas daudzumu, kad tiek veidots objekts. Pēc noklusēšanas ( arī
minimālā) vērtība ir 1, nozīmējot, ka var programma izveido pagaidām tikai vienu ekstentu. Ekstentu maksimālais
skaits ir atkarīgs no sistēmas resursiem. MAXEKSTENTS norāda cik ekstentu
vispār drīkst būt piesaistīti datu krātuvei. PCTINCREASE – norāda procentos par
cik nākošais ekstents ir lielāks par iepriekšējo. Pēc noklusēšanas šī vērtība
vērtība ir 50.
ONLINE
komanda nosaka, ka tabultelpa ir brīva
tūlīt pēc izveidošanas tiem lietotājiem, kuriem ir atļauta pieeja datubāzei.
Tabultelpas
definēšana izveidotajā datubāzē – Vide.
CREATE TABLESPACE Klienti
DATAFILE ’diskc:klienti.dat’
SIZE 20M
DEFAULT STORAGE
(INITIAL 10K
NEXT 50K
MINEXTENTS 1
MAXEXTENTS 999
PCTINCREASE 10)
ONLINE
Tabulas izveidošana
Tabulas izveidošanas vaicājuma piemērs. Lai varētu
izveidot tabulu lietotājam ir jābūt privilēģijai – CREATE ANY TABLE.
CREATE TABLE scott.emp
(empno NUMBER
CONSTRAINT pk_emp PRIMARY KEY,
ename VARCHAR2(10)
CONSTRAINT nn_ename NOT NULL
CONSTRAINT upper_ename
CHECK (ename = UPPER(ename)),
job VARCHAR2(9),
mgr NUMBER
CONSTRAINT fk_mgr REFERENCES scott.emp(empno),
hiredate DATE
DEFAULT SYSDATE,
sal NUMBER(10,2)
CONSTRAINT ck_sal CHECK (sal > 500),
comm NUMBER(9,0)
DEFAULT NULL,
deptno NUMBER(2)
CONSTRAINT nn_deptno NOT NULL
CONSTRAINT fk_deptno
REFERENCES scott.dept(deptno) )
[PCTFREE 5 ]
[PCTUSED 75] ;
Svarīga sastāvdaļa tabulu izveidošanā ir kolonnu datu
tipi, kuri ir apskatīti tabulā.
Datu tips
|
Apraksts
|
VARCHAR2(W)
|
Simboli ar garumu līdz 2000 zīmēm
|
CHAR(W)
|
Simboli ar fiksētu garumu ( no 1 – 255)
|
NUMBER
|
Cipari ar peldošo punktu ar 38 zīmīgo ciparu precizitāti
|
NUMBER(W,S)
|
Skaitlis ar precizitāti w un daļu s.
|
DATE
|
Datumi no 4712 p.m.ē – 4712 gadam mūsu ērā.
|
LONG
|
Mainīga fdarumu simbolu vērtības līdz 2 gigabaitiem.
|
LONG RAW
|
Lieto lai saglabātu grafiskos attēlus un skaņu.
|
Veidojot datubāzu komandas, bieži ir vajadzīgs noteikt
dažādus kolonnas ierobežojumus (Constraints). Šie ierobežojumi ir sekojošie:
1.
NULL, NOT NULL nosaka, ka attiecīgā kolonna nevar
saturēt Null vērtības
2.
DEFAULT nosaka, kāda būs kolonnas vērtība pēc
noklusēšanas. DEFAULT ierobežojumiem nav konkrēta satura. Uzdodot DEFAULT
ierobežojumus, izteiksme nevar saturēt citu kolonnu vārdus.
3.
UNIQUE nosaka, ka tabulā nevar būt vairāki ieraksti ar
vienādām kolonnu vērtībām. Definējot UNIQUE ierobežojumu, tiek automātiski
definēts arī indekss.
4.
PRIMARY KEY tāpat kā UNIQUE ierobežojums nosaka to, ka
atbilstošas kolonnas nevar saturēt divas vienādas vērtības. To nodrošina
automātiski veidojot indeksu. PRIMARY
KEY nepieļauj Null vērtības un tiek uzskatīts par galveno atslēgu, pēc
kuras identificē rindas. PRIMARY KEY ierobežojums tabulā ir tikai viens.
5.
FOREIGN KEY. Šis
ierobežojums ļauj uzdot atsauksmju integritātes likumus vienas vai vairāku
tabulu ietvaros. FOREIGN KEY ļauj
saistīt vienu tabulas lauku ar citu, kura ir ierobežojumi UNIQUE vai
PRIMARY KEY.
6.
CHECK ierobežojums uzdod nosacījumu, kas attiecas uz
visām rindām. Nosacījums ir līdzīgs WHERE komandai, taču nav atļauts lietot:
·
pseidokolonnas CURRVAL, NEXTVAL, LEVEL vai ROWNUM;
·
pieprasījums, kas atsaucas uz citām vērtībām citās
rindās;
·
funkciju izsaukumus – SYSDATE, UID, USER vai USERENV.
7.
DISABLE komanda like Oracle saglabāt ierobežojumu
definīciju, bet nepārbauda izpildi. Vēlāk šo ierobežojumu var aaktivizēt ar
komandu ALTER TABLE.
8.
EXCEPTIONS INTO komanda pieļauj pārkāpt ierobežojumu.
Ierobežojuma pārkāpums tiks fiksēts tabulā, kura ir norādīta tālāk. Tabulai
jābūt definētai lietotāja shēmā un jāsatur sekojošas kolonnas.
Kolonnas vārds
|
Datu tips
|
ROWID
|
ROWID
|
OWNER
|
VARCHAR2
|
TABLE_NAME
|
VARCHAR2
|
CONSTRAINT
|
VARCHAR2
|
Manas definētās tabulas
CREATE TABLE
personas
( Vards CHAR(10),
Uzvards CHAR(10),
Personas_kods CHAR(11)
CONSTRAINT
Personas_kods NOT NULL
CONSTRAINT
Personas_kods UNIQUE
CONSTRAINT Personas_kods
PRIMARY KEY
REFERENCES scot.Darijumi(Personas_kods) )
CREATE TABLE
darījumi
( Personas_kods
CHAR(11)
CONSTRAINT
Personas_kods NOT NULL
CONSTRAINT
Personas_kods UNIQUE
CONSTRAINT Personas_kods
PRIMARY KEY
REFERENCES scot.personas(Personas_kods),
Zemes_numurs NUMBER
CONSTRAINT Zemes_numurs NOT NULL
CONSTRAINT Zemes_numurs UNIQUE
CONSTRAINT Zemes_numurs PRIMARY KEY
REFERENCES scot.zeme(Zemes_numurs),
Cena
NUMBER (2) )
CREATE TABLE
zeme
(Zemes_numurs NUMBER
CONSTRAINT Zemes_numurs NOT NULL
CONSTRAINT Zemes_numurs UNIQUE
CONSTRAINT Zemes_numurs PRIMARY KEY
REFERENCES scot.zeme(Zemes_numurs),
Zemes_platiba NUMBER (4),
Zemes_izmantošanas_merkis VARCHAR2
(100) )
Skatu izveidošana (View)
Skatījuma izveidošanas sintakse
CREATE [OR REPLACE] [FORCE] [NOFORCE] VIEW
nosaukums [(kolona1, kolona2 …)]
AS
SELECT vaicājuma_teikums
[
WITH [CHECK OPTION] [READ ONLY]
[
CONSTRAINT ierobežojuma_nosaukums]);
Šajā skatījuma sintaksē ir dažas komandas, kuras
nodrošina skatījuma veidošanā dažādas nianses:
·
OR REPLACE – šī komanda ļauj izveidot skatu arī tad, kad skats ar tādu
pašu nosaukumu eksistē. Šādā gadījumā skats tiek pārrakstīts.
·
FORCE – ļauj izveidot skatījumu pat tad, ja dažādu iemeslu dēļ nevar
iegūt vajadzīgās tabulas komandas datus.
·
NOFORCE – pretējas īpašības FORCE komandai.
·
CHECK OPTION komanda. Izmanto, lai pārbaudītu datu pareizību, pie
ievietošanas vai izmainīšanas.
·
READ ONLY – skatījuma vaicājumā nedrīkst izmantot DELETE, INSERT, UPDATE
komandas skatījumā.
DELETE komandu nedrīkst lietot, ja skatījums satur :
·
vienojuma nosacījumu;
·
grupu funkcijas;
·
GROUP BY komandu;
·
DISTINCT komandu;
·
ROWNUM.
UPDATE nav atļauts, ja skatījums satur
·
jebkuru augšminēto komandu;
·
Kolonnas, kuras definētas kā izteiksmes.
INSERT nav atļauts, ja skatījums satur:
·
jebkuru augšminēto komandu;
·
skatījums nesatur kādu NOT NULL kolonnu.
Datu bāzes trigeri
Lai
izveidotu trigeri ir jābūt sekojošām sistēmas privilēģijām:
CREATE
TRIGGER – šī sistēma atļauj izveidot trigeri savās tabulās vai šēmās.
CREATE
ANY TRIGGER – šīs sistēmas privilēģija atļauj izveidot trigeri jebkurā
lietotāja tabulā vai jebkurā lietotāja šēmā.
Trigeru izveidošanas komanda:
CREATE [OR REPLACE] TRIGGER trigera_nosaukums
BEFORE [AFTER] notikums1 [OR notikums2] ON tabula,
REFERENCING OLD old [NEW new]
[FOR EACH ROW] [WHERE nosacījums SQL],
PL / SQL bloka komandas;
Komandu skaidrojumi:
·
OR REPLACE – ļauj pārsaukt trigeri;
·
BEFORE – darbību kopas uzsākšanas pirms kāda notikuma;
·
AFTER – darbības pēc notikuma;
·
Notikums – viena no INSERT, UPDATE, DELETE komandām;
·
OR – vai;
·
ON yabula – attieksme uz tabulu;
·
REFERENCING – atsauce uz vecām vai jaunām vērtībām.
·
OLD – vecā vērtība;
·
NEW – jaunā vērtība;
·
FOR EACH ROW – trigera darbības noteikšana katri rindai.
·
WHEN – ierobežojuma nosacījums
AR references komandu trigeros var piekļūt gan vecajām,
gan lauku jaunajām vērtībām, izmantojot atslēgvārdus OLD un NEW.
Operācija
|
Vecā vērtība
|
Jaunā vērtība
|
INSERT
|
NULL
|
Ievietotā vērtība
|
UPDATE
|
Nemainītā vērtība
|
Mainītā vērtība
|
DELETE
|
Vērtība pirms dzēšanas
|
NULL
|
CREATE OR REPLACE TRIGGER Pirmais
BEFORE INSERT ON
Zeme
BEGIN
IF ((Zemes_numurs<5000000) and
(Zemes_numurs>6000000)) and (Cena<=0) and (personas_kods NULL)
then Raise_application_error(-20501,
‘Nepareizas lauku vērtības)
end IF;
END;
Saišu veidošana
Saiti veido izmantojot šādas sekojošu SQL komandu:
CREATE
[PUBLIC] DATABASE LINK datubāzes_saites_nosaukums
[ CONNECT TO
lietotājs IDETIFIED BY parole] [USING
pievienošanas rinda]
Komanda PUBLIC – izveido publisku datubāzes saiti visiem
lietotājiem. Ja tiek izlaists šīs noteikums, tad datubāzes saite ir privāta un
ir pieejama tikai lietotājam.
Komanda CONNECT TO lietotājs IDETIFIED BY parole –
nosaka lietotāju un paroli, lai atļautu noteiktam lietotājam izmantot datubāzes
saiti. Izlaižot šo opciju – datubāze nepieprasa šos parametrus.
Komanda USING – nosaka piesaistāmās datubāzes
specifikāciju vai sekundārās datubāzes specifikāciju lasīšanas režīma
montēšanā.
Secinājumi
Šajā
darbā es pievērsu uzmanību ORACLE datu bāzu vadības sistēmas sastāvdaļām (datu
bāzes ielādei un aizvēršanai, SQL valodas atbalsta sistēmai, lietotāja tiesību
vadības sistēmai un datu bāzes vadības sistēmas kodolam).
Datubāzu
ielādēšanas sistēma notiek trijos etapos – vadības sistēmas izveidošanā,
datubāzes montēšanā un datubāzes atvēršanā. Tas ir ļoti ērti ja administratoram
ir jālabo dažādas kļūdas, kuras pieļāvuši lietotāji rīkojoties ar datubāzi.
Kļūdas datubāzē var labot pēc montēšanas režīma, neatverot šo datubāzi.Datubāzes aizvēršana notiek apgrieztā secībā.
Sākumā tiek aizvērta datubāze un tad tā tiek atmontēta.
Tuvāk
apskatot datubāzes fiziskās un loģiskas struktūras var uzzināt kā tiek veidota
Oracle programmas darba vide. Jau pavirši no malas skatoties, darba vide ir
ļoti sarežģīta un komplicēta, tādējādi nodrošinot augstu datu apstrādes ātrumu.
Tieši datu apstrādes ātrums un drošība ļauj ORACLE datu bāzu vadības sistēmai
izcelties starp citām datubāzu vadības sistēmām.
Es arī
apskatīju dažādus datubāzes elementus sīkāk un secināju, ka ORACLE vidē
izveidot jebkuru elementu ir krietni grūtāk nekā, piemēram, Access vidē. To var
izskaidrot arī ar ne visai izdevīgo PL/SQL interfeisu. PL/SQL priekšrocība ir
tāda, ka tiek atļautas daudz vairāk komandu, nekā var nodrošināt cita datu bāzu
vadības sistēma ar grafisko interfeisu (piemēram, Access).
ORACLE
programmā arī krietni padomāts par lietotāja tiesībām, palielinot datu drošību.
Katrai datubāzei var uzstādīt paroli un lietotājus, kuri drīkstēs izmantot šīs
datubāzes saturu.
Nav komentāru:
Ierakstīt komentāru