Iepazīšanās ar ORACLE datubāzu vadības sistēmas sastāvdaļām un šo sastāvdaļu realizējošām funkcijām


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.

Loģiskās datubāzes struktūras var saukt par tabulu telpām. Tabulu telpu lieto kopā ar attieksmju loģiskām struktūrām. Tabulu telpas parasti grupē visiem lietojumprogrammas objektiem, vienkāršojot noteiktas operācijas.   













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