Lielas datu bāzes


RTU
Automātikas un skaitļošanas tehnikas fakultāte
Informācijas tehnoloģijas institūts
IDII














Laboratorijas darbs Nr.5.

“Lielas datu bāzes”
















Izstrādāja: Arturs Šulmanis
Datums:               10/12/99
Pārbaudīja:     doc. Eiduks


1999/2YK māc.gads

Saturs


1.        DBVS konfigurēšanas parametri ------------------------------------------------  3
2.        DBVS datu vardnīca ------------------------------------------------------------  6
3.        Noskaņošanas process ---------------------------------------------------------  10
4.        Audits -------------------------------------------------------------------------  19

Nobeigums -------------------------------------------------------------------------  26








































1. DBVS konfigurēšanas parametri.

Šie parametri definē Personal Oracle 7 raksturlielumus:

ð  ORA NLS
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : nav;
Atļautas vērtības : jebkāds atļauts ceļš;
Iespēja modificēt : nav.
Šis parametrs izmanto, lai sameklētu simbolu instalāciju informācijas failu.


ð  2. NLS_LANG
Operāc. sistēma: Windows 95;
Pēc noklusēšanas: automātiski instāles, kad mēs izvēlām valodu;
Atļautas vērtības: Dažādas valodas, teritorijas un simboli;
Iespēja modificēt: Ir, bet tikai tad, kad instālejam;
Parametra komponenti: Language; Teritory; Character set.
Šīs parametrs nosāka sekojošu informāciju:
·           valodu, kurā tiek izvadīts visi paziņojumi (pēc noklūsēšanas visi paziņojumi tiek izvadīti angļu valodā);
·           datuma formātu;
·           simbolu uzstādīšanu.

ð  3. DBA AUTHORIZATION
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : nav;
Atļautas vērtības : Jebkādas;
Iespēja modificēt : Ir.
Šis parametrs tiek izmantots, lai noteiktu paroli datu bāzei.

ð  ORACLE HOME
Operāc. sistēma: Windows 95;
Atļautas vērtības: Jebkura atļautā direktorija;
Iespēja modificēt: Nav.
Šis parametrs nosāka Oracle mājas direktorija, kurā Oracle ir instalēts. Parametrs tiek pievienots Windows 95 reģistrā, kad pirmo reizi instalēts Oracle produkts.

ð  5.ORACLE SID
Operāc. sistēma: Windows 95;
Atļautas vērtības: Jebkāda burtu/ciparu kombinācija nemazāk kā 4 simboli;
Iespēja modificēt: Ir.
Ši parametra vērtība ir sistēmas indekator (SID) datu bāzei.

ð  ORA SQLDBA MODE
Operāc. sistēma: Windows 95;
Pēc noklusēšanas: SCREEN (LINE);
Atļautas vērtības: Line, Screen;
Iespēja modificēt: Ir.
Šis parametrs nosāka SQL*DBA palaišanu.
ð  7. API      
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :nav(%ORACLE_HOME%\dbs)
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt :Nav.
Šo parametru izmanto instalators, lai sameklētu resursu failu.

ð  8. MSHELP
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : nav;
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt : nav.
Šīs parametrs izmanto, lai sameklētu help failus.

ð  9. ORA sid PWFILE
Operāc. sistēma : Windows 95;
Atļautas vērtības : Jebkāds atļauts faila nosaukums
Iespēja modificēt :Jā.
Šis parametrs nosāka paroles jaila nosaukumus satur paroli datu bāzei.

ð  10. PLSQLnn
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :nav(%ORACLE_HOME%\PLSQLnn)
Atļautas vērtības : Jebkāds atļauts ceļš.
Iespēja modificēt :Nav.
Šis parametrs nosāka direktoriju kurā PO7 meklē PL\SQl paziņojumu faili.

ð  11 COMPANY NAME
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :nav
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt :Nav.
      
ð  12. EXECUTE SQL
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : Nav (Plus32)
Atļautas vērtības : Kāds izpildišanas, kas var interpretēt /darbīnat SQL.
Iespēja modificēt : Jā.
Šis parametrs izmanto instruments ,lai determinētu programmu kuru izmanto, lai izpildītu SQL vaicājums.
ð  13. LISTENER_ STARUP
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : OFF
Atļautas vērtības : AUTO vai jebkāds  cits kas nozīme OFF.
Iespēja modificēt : Jā.
Šis parametrs izmanto, lai apzimētu palaidas vai nē SQL*NET Listener kad palaidas datu bāze.
ð  14. NLSRTLnn
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : nav
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt : Nē

ð  15. ORACLE_GROUP_NAME
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :Uzstādīt  uzstādīšanas laikā.
Atļautas vērtības : Jebkāda rinda.
Iespēja modificēt : Nē

ð  16. PLUSnn
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : Ne viens(%ORACLE_HOME%\PLUS32 zstādīšanas laikā)
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt : Nē
Šis parametrs     tiek izmantota SQL*PLUS, lai sameklētu lailus.

ð  17. PROnn
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : Ne viens(%ORACLE_HOME%\PRO17 uzstādīšanas laikā)
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt : Nē
Šis parametrs     tiek izmantota Pro*C*SQLLIB, lai sameklētu failus.

ð  18. DATABASE STARTUP
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :OFF
Atļautas vērtības :AUTO vai kaut ko vēl kas nozīme OFF/
Iespēja modificēt : Jā.
Šis parametrs izmanto indikācijai vai datu bāze var sākt darbību automātiski pēc pirmas  pieslēgšanas.

ð  19. MSHELP_TOOLS
Operāc. sistēma : Windows 95;
Pēc noklusēšanas : nav ( %ORACLE_HOME%\MSHELP)
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt : Nē
Šis parametrs tiek izmantota lai sameklētu help failus .

ð  20. RDBMSnn
Operāc. sistēma : Windows 95;
Pēc noklusēšanas :nav
Atļautas vērtības : Jebkāds atļauts ceļš
Iespēja modificēt :Nav.
Šis parametrs`definē direktoriju kurā PO7 datu bāzes faili izvietojas.Personal Oracle7 and the Oracle7 Utilites arī izmanto šo direktoriju lai izvietotu paziņojumus un resursu faili.

2. DBVS datu vārdnīca.

Informācija relācijas datu bāzē tiek glabāta tabulu veidā.
Informācija visās tabulās ir saistīta ar kopīgokolonu, kura norādīts produkta daļas numurs. Oracle.SQL faili satur datu vārdnīcas funkcijas un var palaisties kamēr vai pēc datu bāzes izveidošanas.       Catalog.SQL izveido standartus datu bāzes vārdnīcas pārskatus, kurš sākas ar DBA ierobiežojumiem. Šis pārskats varbūt pieejams tikai tam lietotājam, kuram ir Select_Any_Table privilēģijas ( kuras apzīmē DB administrators).
ð  ALL_USERS
Informācija par datu bāzes visam lietotājiem
Username
Lietotāja vārds
User_ID
Lietotāja ID – numurs
Created
Lietotāja radīsanas datums
Tabula 1.

ð  RESOURCE_COST
Katru resursu cena.
Resource_Name
Resursu nosaukums
Unit_Cost
Resursu cena
Tabula 2.

ð  ALL_CATALOG.
Visas tabulas, skati, sinonimi un secības ir pieejami lietotājam.
 Owner
Objekta īpašnieks
Table_Name
Objekta vārds
 Table_Type
Objekta tips
Tabula 3.

ð  USER_VIEWS
Skatu teksts.
View_Name
Skatu nosaukums
Text_Length
Skatu teksta garums
Text
Skatu teksts
Tabula 4.
ð  AUDIT_ACTIONS
Tabula ar paskaidrojumiem par tipa kodu darbības pārbaudes pēdām.
Action
Tipa kodu darbības skaitliskā pārbaude
Name
Darbības pēdu pārbaudes tipa nosaukums
Tabula 5.
ð  ALL_TAB_COLUMNS 
Tabulas stabiņi, skati, un lietotāja pieejamība klasteriem.
Owner
Tabulas īpašnieks, skats vai klasteris
Table_Name
Tabulas, skata, vai klastera nosaukums
Column_Name
Stabiņa nosaukums
Data_Type
Stabiņa datu tips
Data_Length
Stabiņa garums baitos
Data_Precision
Datu tipa NUMBER precīzitāte; datu tipa FLOAT binārā precīzitāte;
NULL visiem citiem datu tipiem
Tabula 6.
ð  ALL_COL_COMMENTS.
Pieejamas tabulas, skatus kolonu komentāri.
 Owner
Objekta īpašnieks
Table_Name
Objekta vārds
 Colomn_Name
Kolonas nosaukums
Comments
Kolonas komentarījs
Tabula 7.

ð  ALL_COL_PRIVS.
Kolonu privelēģijas, kuras ir pieejami PUBLIC vai lietotājam.
 Grantor
Lietotājs, kas izpilda piedavājumus
Grantee
Lietotāja vārds, kuram ir atļauta piekļūšāna
 Table_Schema
Objekta shēma
Table_Name
Objekta vārds
Column-Name
Kolonas nosaukums
Privilege
Kolonas privilēģija
Grantable
Pieejamība
Tabula 8.

ð  ALL_COL_PRIVS_MADE
Kolonas piedavājumi, kuram lietotājs ir īpašnieks.
Grantee
Lietotāja vārds, kuram ir atļauta piekļūšana
Owner
Objekta ìpašnieks
Table_Name
Objekta vārds
Column-Name
Kolonas nosaukums
Grantor
Lietotājs, kas izpilda piedavājumu
Privilege
Kolonas privilēģija
Grantable
Yes ja privileģija ir definēta Admin Option citādi No.
Tabula 9.

ð  ALL_COL_PRIVS_RECD
Kolonu privilēģijas, kuram lietotājs ir īpašnieks.
Grantee
Lietotāja vārds, kuram ir atļauta piekļūšana
Owner
Objekta ìpašnieks
Table_Name
Objekta vārds
Column-Name
Kolonas nosaukums
Grantor
Lietotāja vārds, kam ir piedavājums
Privilege
Kolonas privilēģija
Grantable
Yes ja privileģija ir definēta Admin Option citādi No.
Tabula 10.

ð  ALL_ERRORS
Tekošās kļūdas visos objektos, kuri ir pieejami lietotājam.
Owner
Objekta ìpašnieks
Name
Objekta nosaukums
Type
Objekta tips: View, Procedure, Package, Function, Package body
Sequence
Secības numurs pēc kārtas
Line
Linijas numurs, kur atrodas kļūda
Position
Pozicija linijā, kur atrodas  kļūda
Text
Kļūdas teksts
Tabula 11.

ð  ALL_TAB_COMMENTS.
Lietotājam pieejāmas tabulu vai skatus komentāri.
Owner
Objekta īpašnieks
Table_Name
Objekta vārds
 Table_Type
Objekta tips
Comments
Objekta komentarījs
 Tabula 12.

ð  ALL_DB_LINKS.
Pieejāmas lietotājam saites ar datu bāzi.
Owner
Datu bāzes saistības ìpašnieka vārds
Db_Link
Datu bāzes saotes nosaukums
 UserName
Lietotāja vārds, kurā ir piesaistas
Host
SQL*NET virkne savienošanai
Created
Datu bāzes saistības izveidošanas laiks
Tabula 13

ð  ALL_SOURCE.
Teksta avots visiem glabatiem objektiem, kuri ir pieejāmi lietotājam.
Owner
Objekta īpašnieks
Name
Objekta vārds
Type
Objekta tips: Package, Procedure, Funktion, Package body.
Line
Šìs linijas avota linijas numurs
Text
Glabata objekta teksts avots
Tabula 14.

ð  ALL_SYNONYMS.
Visi sinonimi, kuri ir pieejāmi lietotājam
Owner
Sinonima  īpašnieks
Synonym_Name
Sinonima nosaukums
Table_Owner
Pieminēta sinonimā objekta ìpašnieks.
Table_Name
Pieminēta sinonimā objekta nosaukums
Db_Link
Pieminētas datu bāzes saistìbas nosaukums
Tabula 15.

ð  ALL_VIEWS.  Pieejāmais lietotājam vizuālas tabulas teksts.
Owner
Virtuālas tabulas īpašnieks
View_Name
Virtuālas tabulas nosaukums
Text_Length
Virtuāla teksta izmērs
Text
Virtuālais teksts
Tabula 16.
ð  ALL_OBJECTS.
Objekti, kuri ir pieejāmi lietotājam.
Owner
Objekta īpašnieks
Object_Name
Objekta nosaukums
Object_ID
Objekta numurs
Object_Type
Objekta tips
Created
Laiks, lai radīt objektu
Last_DDL_Time
Pedējas modifikācijas laiks, objekta rezultāts no DDL komandas
TimeStamp
Laiks objektu izveidošanai
Status
Objekta status:Valid, Inval, Id, N/A.
Tabula 17.

ð  CHAINED_ROWS
Tabula pēc noklausīšanas komandai ANALYZE LIST CHAINED ROWS.
Owner_Name
Tabulas lietotājs
Table_Name
Tabulas nosaukums
Cluster_Name
Head_Rowid
Timestamp
Tabula klasterī, ja jebkura RowID virknes rinda ir pieejama ar ANALYZE Date/time komandu
Tabula 18.

ð  COLUMN_PRIVILEGES
Pieejamība stabiņiem, ja lietotājam ir tādas tiesības, ja lietotājs izpilda piedavājumus vai viņš ir īpašnieks, vai tam ir pieejamība PUBLIC.
 Grantee
Lietotāja vārds, kuram ir atļauta piekļūšana
Owner
Objekta īpašnieka nosaukums
Table_Name
Tabulas nosaukums
Column_Name
Stabiņa nosaukums
Grantor    
Lietotājs, kas izpilda piedavājumus
Insert_Priv
Atļauja ienest stabiņā
Update_Priv
Atļauja koriģēt stabiņu
References_Priv
Atļauja lietot atsaukšanās
Created
Laika štamps pieejamībai
       Tabula 19.
      
ð  DICTIONARY
Datu vārdnīcas tabulu un skašu aprakstīšana.
Table_Name
Objekta nosaukums
Comments
Objekta teksta komentārs
Tabula 20.








3.  Noskaņošanas process.

Veicot noskaņošanu mēs varam sasniegt dažos mērķus: uzlabot SQL komandu izpildi, uzlabot datu bāzes lietojumkomandus, uzlabot darbu lietotāju un lietojumprogrammu konkurences gadījumos.
Lai sasniegtu šos mērķus lietotājam jāveic sekojošas noskaņošanas pasākumus:
ð  jānoskaņo atmiņu;
ð  izvades/ievades noskaņošana;
ð  noskaņošana konkurences gadījumos.
Lai veiktu noskaņošanu, mums nepieciešams iegūt informaciju, kuru analizejot mēs varam izlemt, kā veic noskanošanu. Informācijas iegūšanai ir divi avoti: statiskas dienesta tabulas un komandu ANALYZE .
Komandu ANALYZE var izmantot lai vāktu statistiku par indeksu, tabulu vai klāsteru, likvidētu statistiku, noteiktu migrējošās rindas un t.t.

Noskaņošanas tipi:
Daļas noskaņošanas procesa daļas ir svarīgākas par citiem. Sekojošā sarakstā ir vissvarīgākas noskaņošanas daļas.
1.Indeksa tabulu piešķiršana. Indeksu lietošanā var uzlabot daļu SQL apgalvojumu izpildīšanu.
2.Cost-based optimizācijas izmantošana, kad izmanto statistiku tabulam, indeksam un klasterim, lai izvēlētos ātrāku ceĻu, lai izpildīt SQL apgalvojumu.
3.Lai nosūtīt optimizātoru, jāizvēlas specifisku ceĻu SQL apgalvojuma izpildīšanai un jāizmanto norādījumus.
4.Priekšrocību saņemšana citiem jauniem Oracle7 līdzekĻiem.
5.Reducē izmantojāmo analīzes laiku ar SQL apgalvojumu saturīgumu un analīzes procedūru glabāšanu pēc ekzekūcijas un ar datu vārdnīcu saturīgumu atmiņā.
6.Datu bloku pārmērīgs I/O palielinā bufera keša izmēru System Global Area (SGA).
7.Operāciju sistēmas ar virtuālo glabātuvi System Global Area (SGA) nodrošinā realājā atmiņā ātru pieeju keša datiem.
8.Klasificē I/O, lai diska tukšums saturēja datu failus un redo-log failus.
9.Reducē argumentu aizbildni, ja aizbildņu vaicājumu procents ir lielāks par 1%.
10.Vajag būt pārliecinātām visos Oracle procesos. Problēmu izpildīšana var eksistēt, ja operāciju sistēma pārnes zemākas prioritātes procesus, kamēr tam procesam ir ekskluzīva pieeja avotam.
Noskaņošanas procesa etapi
Oracle noskaņošanas procesam ir trīs etapi:
ð  atmiņas sadalīšanas noskaņošana
ð  input/output noskaņošana
ð  argumenta noskaņošana


ð  Atmiņas sadalīšanas noskaņošana
       Atmiņas iespējas sadalīšanas paredzēšana Oracle atmiņas struktūram var ietekmēt uz izpildīšanu. Pirmājā etapā jāizlēmj, cik daudz atmiņas jāiedalā sekojošam struktūram:
ð  SQL un PL/SQL apgabalam
ð  keša datu vārdnīcai
ð  bufera kešam
Atmiņas iespējas pienāktā iedalīšanā var ietekmēt uz tadiem labumiem:
ð  keša izpildīšanas uzlabošana
ð  pārnēšanas un lapošanas samazināšana
ð  SQL un PL/SQL bloku analīzes samazināšana

ð  Input/Output noskaņošana
       Disks I/O cenšas samazināt daudzu programnodrošinājumu pielietošanu izpildīšanu. Oracle ir domāts tā, lai tas izpildīšanai nevajadzēja ierobežojumus ar I/O.
       I/O noskaņošana iekļauj sevī procedūras:
ð  I/O klasificēšana diska apgalvojuma atcelšanai
ð  datu glabāšana datu blokos, labākai pieejai
ð  parāk lielāku apjomu izveidošana datiem

ð  Argumentu noskaņošana
       Argumenti var izsaukt procesu gaidīšanu, kamēr līdzekļi ir iespējami. Šeit var reducēt argumentus:
ð  veltņu segmentam
ð  multi-threaded servera arhitektūras procesiem
ð  redo-log bufera aizbidnis
Atmiņas sadalīšanas svarīgums. Oracle glabā informāciju divās vietās:
ð  atmiņā
ð  uz diska
Kopš atmiņas pieeja ir ātrākā par diska pieeju, ir vēlams datu prasībam apmierināt pieeju atmiņas pieejai drīzāk, neka diska pieejai. Labākai izpildīšanai ir izdevīgāk glabāt pēc iespējas vairāk datus atmiņā nekā uz diska. Tomēr, atmiņas iespējas operāciju sistēmā ir ierobežoti. Atmiņas sadalīšanas noskaņošana iesaista sadalījumu pieejamai atmiņai Oracle atmiņas struktūram.
Atmiņas sadalīšanas noskaņošanas etapi.
Šajā daļā īsi apraksta atmiņas sadalīšanas noskaņošanas procesu. Lai iegūt labus rezultātus, jāseko šīm etapam. Katrs etaps tiek aprakstīts detalizēti.

ð  Operāciju sistēmas noskaņošana
       Nodrošinājums, ka operāciju sistēma strādā pievilcīgāk un efektīvāk ievieš stabīlu pamatu atmiņas sadalīšanai Oraclām. Šis etaps arī dod labu domu par atmiņas apjomu operāciju sistēmā, kura ir pieejama Oraclam.

ð  Koplietojuma fonda noskaņošana
       Koplietojama fonda noskaņošana ietvēr atmiņas sadalīšanu šadām atmiņas struktūram:
ð  keša bibliotēka, kura satur koplietojāmus SQL un PL/SQL apgabalus
ð  datu vārdnīcu kešs
ð  informācija par sessiju savienojumu tieši koplietojāmām servera procesam
Krātuve izvairas datu vārdnīcu krātuves nokavēšanu vai bibliotēkas krātuve ir daudz dargāka, neka nokavēšana bufera krātuvē. Šajam iemeslam jāpiešķir pietiekami atmiņas koplietojamam fondam.

ð  Bufera krātuves noskaņošana
Pēc privāto SQL un PL/SQL apgabalu un koplietojama fonda noskaņošanas var ziedot palikušo izmantojamu atmiņu bufera krātuvei. Var būt nepieciešams atkārtot atmiņas iedalīšanas etapus pēc tā, kad sākuma ceĻš atĻauj veikt koriĢēšanu agrākājos etapos pamatoties uz izmaiņam talākājos etapos. Piemēram, ja palielināt bufera krātuves izmēru, ir nepieciešams piešķirt vairāk atmiņas, lai atcelt lapošanu un pārnēšanu.

ð  Operāciju sistēmas noskaņošana
       Atmiņas iedalīšanas noskaņošanu vajag sākt no operāciju sistēmas noskaņošanas ar šim uzdevumiem:
ð  reducēt lapošanu un pārnēšanu
ð  uzstādīt SYSTEM GLOBAL AREA (SGA) galvenājā atmiņā
ð  piešķirt pietiekami daudz atmiņas individuālām lietotājam
Šos uzdevumus parasti pielieto vairākām operāciju sistēmām. Operāciju sistēmas noskaņošanas detaĻas mainas atkarīgi no lietojamas operāciju sistēmas.

ð  Sistēmas globālā apgabala (SGA) noskaņošana.
Lai viss sistēmas globālais apgabals, kurā glabā datus, kuriem ir jabūt ātri pieejamiem, tiktu ielādēts atmiņā vajag parametram PRE_PAGE_SGA piešķirt vērtību YES.
Apskatīties cik vietas aizņem SGA parametri var ar komandu  SHOW SGA, bet šī komanda domāta tikai SQL*DBA nevis SQL*PLUS.

ð  Privāto SQL un PL/SQL apgabalu noskaņošana.
Lai noskaņot SQL apgabalus, lietotājam jānosaka gadījumi, kad DBVS saņemis vaicājumu griežas pie SQL apgabaliem, meklējot vai šāds pieprasījums  jau nav ticis izanalizēts, lai jau uzreiz varētu meklēt atbildi uz pieprasījumu, bet  griezšanās pie SQL apgabaliem ir neveiksmīga. Kad šādi kadījumi ir konstatēti lietotājam tie ir jāsamazina.
Lai noteiktu cik bieži notiek neveiksmīgas griezšanās pie SQL apgabaliem lietojumprogramma jāpalaiž ar ieslēgtu SQL komandu izsekotāju (SQL trace facility).
Samazināt neveiksmīgo griezšanos skaitu var vairākos veidos.

Pirmais veids ir ar parametru HOLD_CURSOR, RELEASE_CURSOR,  MAXOPENCURSORS palīdzību. Kursors ir tabula, kuru DBVS izmanto, lai apkalpotu vaicājumu veikšanu. Šī tabula glabā informāciju, kas tiek izmantota vaicājumu realizācijai. Ja palielināt šo tabulu skaitu, būs vairāk tabulu un varēs glabāt vairāk informācijas atmiņā.
Šo uzdevumu var arī veikt ar ORACLE Call Interfaces (OCIs) palīdzību un SQL*Forms palīdzību.
Tomēr jasaka, ka man nav īsti skaidrs, kā veic šo noskaņošanu, un kas ir SQL trace facility, ORACLE Call Interfaces (OCIs) un SQL*Forms.
Samazināt datu lapošanu un mainīšanu (paging and swaping).
Ja datoram nepietiek atmiņas, lai ielādēt visus datus, tad dati tiek sadalīti, un daļa datu tiek ielādēta atmiņā. Ja nepieciešami citi dati atmiņā tiek ielādēta cita daļa datu. Šī datu ielāde aizņem laiku. Lai šo problēmu atrisisnāt jāpievieno datoram papildus atmiņu vai arī jāsamazina kādam apgabalam izdalītā atmiņa.

ð  Koplietošanas bufera noskaņošana.
Koplietošanas bufera noskaņošana sastāv no trīs daļām: bibliotēkas bufera noskaņošanas, datu bufera noskaņošanas un datu bāzes bufera noskaņošanas.

a) Bibliotēkas bufera noskaņošana.
DBVS griežas pie bibliotēkas bufera katreiz kad tiek veikts vaicājums, jo bibliotēkas buferī tiek glabāta informācija par vaicājumu analīzi un vaicājumu izpildes plāns. Kad lietotājs ievada vaicājumu DBVS griežas pie bibliotēkas bufera.  Ja informācija par šādu vaicājumu ir bibliotēkas buferī, tad DBVS var pa uzreiz izpildīt šo pieprasījumu, turpretī, ja analīzes informācijas par šādu vaicājumu nav, tad griezšanās pie bibliotēkas bufera ir neveiksmīga, un DBVS vajag vaicājumu izanalizēt un tad izpildīt. Bibliotēkas bufera noskaņošanas jēga ir tāda, ka lietotājam jāsamazina, neveiksmīgu griezšanos pie bibliotēkas keša, skaitu.
Iegūt informāciju par griezšanās gadījumiem pie bibliotēkas keša var ar sekojošu pieprasījumu (dati atrodas tabulā $librarycache):
Pieprasījums:
SELECT SUM(pins) "Lietotāju piekļūšanas", SUM(reloads) "Neveiksmes darbības"
FROM v$librarycache;
Atbilde, kuru izvadīja DBVS :
 Lietotaju piekļūšanas     Neveiksmes darbības
           ‑‑‑‑‑‑‑‑‑                     ‑‑‑‑‑‑‑‑‑‑
            1999                          9
Analizējot iegūto informāciju lietotājam jāpārbauda vai neveiksmīgo izpildes gadījumu skaits nepārsniedz vienu procentu no griezšanās gadījumu skaita. Dotajā gadījumā tas ir 0.26%. Ja šis skaitlis būtu lielāks par vienu procentu, tad vajadzētu samazīnāt neveiksmju skaitu. To var paveikt divos veidos: izdalot lielāku atmiņas apjomu bibliotēkas kešam vai arī rakstot identiskus vaicājumus.
Izdalīt lielāku atmiņu var ar parametriem: OPEN_CURSORS vai SHARED_POOL_SIZE.

Ar parametru OPEN_CURSORS lietotājs palielina dienesta tabulu skaitu, kas domātas vaicājumu apkalpošanai. Piemēram, OPEN_CURSORS=100. 
Parametrs SHARED_POOL_SIZE norāda koplietošanas bufera izmēru. Piemēram, SHARED_POOL_SIZE = 7000000.
Otrais veids neveiksmju samazināšanai ir rakstīt vaicājumus vienā un tajā pašā stilā. Faktiski pieprasījumiem jābūt identiskiem. Ja lietotājs vaicājumus raksta pat nedaudz savādāk, DBVS tos uzskata par dažādiem vaicājumiem. Piemēram, sekojošus vaicājumiem DBVS uzskatīs par dažādiem vaicājumiem, neskatoties uz to, ka jēga viņiem ir vienāda:
Pieprasījums:
SELECT * FROM t1;
SELECT *    from T1;
Ja DBVS darbs ar bibliotēkas kešu rit tik veiksmīgi, ka griežoties pie bibliotēkas keša nav neveiksmju var paātrināt pieprasījumu izpildi ar parametra CURSOR_SPACE_FOR_TIME palīdzību, šī parametra vērtība jāuzstāda uz TRUE.

b) Datu bufera noskaņošana.
Kad tiek veikts vaicājums un DBVS iegūst atbildi, atbilde tiek arī ierakstīta datu buferī, lai nākam reiz datus var vienkārši paņemt no datu bufera. Datu bufera  noskaņošanas jēga ir samazināt gadījumus, kad griezšanās pie datu bufera būtu neveiksmīga, un vaicājuma atbildi ir jāiegūst nevis to var paņemt no datu bufera. Veiksmes gadījumā atbildi nav jāaprēķina, to var paņemt no datu bufera.
Informāciju par griezšanos pie datu bufera var iegūt veicot sekojošu pieprasījumu:
SELECT SUM(gets)"Lietotaju piekļūšanas", SUM(getmisses)"Neveiksmes darbības"
FROM v$rowcache;
Dotais vaicājums izvada sekojošu rezultātu:
Lietotaju piekļūšanas     Neveiksmes darbības
         ‑‑‑‑‑‑‑‑‑‑                        ‑‑‑‑‑‑‑‑‑‑
           2207                            393

Analizējot šo vaicājumu lietotājam ir jāpārbauda vai neveiksmju skaits ir lielāks nekā 10%-15% no griezšanos skaita. Ja neveiksmju skaits ir lielāks, tad to vajag samazināt. Samazināt neveiksmju skaitu var palielinot atmiņas daudzumu koplietojuma buferim ar parametru SHARED_POOL_SIZE.

c)      Datu bāzes bufera noskaņošana.
Lai noskaņot datu bāzes buferi ir jāpalielina veiksmes procents (HIT RATIO). Lai noteikt veiksmes procentu ir jānoskaidro, cik reizes DBVS ir griezies pie buferiem, un cik reizes DBVS jāgriežas pie cietā diska, jo buferos šī informācija nav atrodama. Informācija par griezšanos pie bufera ir atrodama divās tabulas v$sysstat RINDĀS NEVIS LAUKOS. Šajās rindās laukā name ir vērtības db block gets un consistent gets. Informācija par griezšanos pie diska ir rindā, kurā lauka name vērtība ir physical reads.
Informāciju par griezšanos pie buferiem un cietā diska var iegūt ar sekojošu pieprasījumu:
SELECT name, value
FROM v$sysstat
WHERE name IN ('db block gets', 'consistent gets','physical reads');
Rezultāts:
NAME                                                                 VALUE
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ ‑‑‑‑‑‑‑‑‑
db block gets                                                          233
consistent gets                                                       3360
physical reads                                                         381
Veiksmes procentu aprēķina pēc sekojošas formulas:
Hit Ratio = 1 ‑ ( physical reads / (db block gets + consistent gets) )
Hit Ratio=1-(381/(233+3360))=1-0.10=0.90 =90%
Ja veiksmes procents ir mazāks par 60%-70%, tad ir jāpalielina buferu skaits. To var izdarīt ar parametra DB_BLOCK_BUFFERS palīdzību (db_block_buffers = 3200). Lai zināt cik tieši buferu jāpievieno jāizmanto tabula X$KCBRBH . Lauks INDX satur buferu skaitu, kas tiks pievienots, bet lauks COUNT satur papildus veiksmju skaitu. Bet, lai šī tabula savāktu informāciju par sakarībām starp papildus buferiem un papildus veiksmēm ir jāuzstāda inicializācijas parametrs DB_BLOCK_LRU_EXTENDED_STATISTICS (piemēram, DB_BLOCK_LRU_EXTENDED_STATISTICS.=100).

Noskaidrot cik papildus buferu cik papildus veiksmju dos var ar sekojošu pieprasījumu:
Select 250*trunc(indx/250)+1||' to '||250*(trunc(indx/250)+1) "Buferi", SUM(count) "Veiksmes darbības"
from x$kcbrbh
group by trunc(indx/250);
Tā kā darbs ar datu bāzi gandrīz netika veikts, tad atbilde sastāv tikai no vienas rindas:
Buferi                                                             Veiksmes darbības
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ ‑‑‑‑‑‑‑‑‑
1 to 250                                                                        3

Ja ilgāk pastrādāt ar datu bāzi, tad rezultāts varētu būt lidzīgs šim:
Interval     Buffer Cache Hits
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑   ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
1 to 250                16080
251 to 500            10950
501 to 750              710
751 to 1000           23140
Var gadīties pretēja problēma - buferu ir par daudz un tie satur arī reti izmantotu informāciju. Buferu samazināšana ir analoìiska palielināšanai, tikai tiek izmantota tabula X$KCBCBH un parametrs statistikas vākšanas ieslēgšanai ir DB_BLOCK_LRU_STATISTICS.

ð  Noskaņot koplietojuma buferi ar daudzpavedienu serveri.
Daudzpavedienu arhitektūrā DBVS koplietojuma serverī arī glabā informāciju par sessijām. Ja koplietojuma buferī nepietiek atmiņas, to var pievienot ar parametru SHARED_POOL_SIZE. Lai noskaidrot cik atmiņas mums jāpievieno, jāizmanto tabula V$SESSTAT. Šī tabula satur informāciju par to cik vietas aizņem sessiju informācija (rinda ar lauka name vērtību session memory), kā arī cik maksimāli vietas var aizņemt sessijas informācija (rinda ar lauka name vērtību max session memory).
Iegūt rezultātu var ar sekojošu pieprasījumu:
select  SUM(value) || ' bytes' "atminas apjoms"

FROM v$sesstat, v$statname
WHERE name = 'session memory' AND v$sesstat.statistic# = v$statname.statistic#;
Bet šajā gadījumā, tā kā mēs strādājam ar  Personal ORACLE, tāpēc mēs iegūstam šādu rezultātu, tā kā Oracle neglabā šādu informāciju.
atminas apjoms
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
 bytes
 Ievietojot vaicājumā noteikumu name = 'max session memory', var iegūt maksimālo atmiņas daudzumu, ko aizņem sessiju informācija.

ð  Disku aktivitātes noskaņošana.
Disku aktivitātes noskaņošanai ir vienmērīgi jāsadalā darbs starp diskiem, t.i. vajag izvietot failu, buferus utt. tā lai DBVS vienmērīgi grieztos pie visiem diskiem.
Pirmkārt, jāpārbauda disku aktivitāte. Tam izmanto tabulu V$FILESTAT. Šajā tabulā ir lauki PHYRDS (cik reizes tika lasīts no datu bāzes faila) un PHYWRTS  (cik reizes tika rakstīts datu bāzes failā). Lai iegūt rezultātu jāievada sekojošs pieprasījums:

select name, phyrds, phywrts
FROM v$datafile df, v$filestat fs
 WHERE df.file# = fs.file#;
Atbilde uz pieprasījumu:
NAME
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
   PHYRDS   PHYWRTS
    ‑‑‑‑‑‑‑‑‑   ‑‑‑‑‑‑‑‑‑
C:\ORAWIN95\DATABASE\sys1orcl.ora
      288         8
C:\ORAWIN95\DATABASE\usr1orcl.ora
        1           0
C:\ORAWIN95\DATABASE\rbs1orcl.ora
        7           4
C:\ORAWIN95\DATABASE\tmp1orcl.ora

        0           0
dat1
        0           0

Kad iegūta informācija par datu bāzes failiem, var šos failus sadalīt pa diskiem. Lietotājs, apskatot iepriekšējā vaicājuma rezultātu, var sadalīt visus iepriekšminētos failus pa diskiem tā lai DBVS darbotos ar visiem diskiem vienmērīgi (gan datu failus, gan redo log failus).
Var arī sadalīt datu tabulas pa diskiem.  Lai to izdarīt komandā create tablespace jāievieto vairākas parametra datafile vērtības:

CREATE TABLESPACE  tabultelpa_1
DATAFILE 'disks_1' SIZE 500K, 'disks_2' SIZE 500K, 'disks_3' SIZE 500K;
Nākamais solis ir komandā create table norādīt ekstentu izmērus tikai nedaudz mazākus par failu izmēriem tabultelpā, tad katru ekstentu glabās savā failā uz dažādiem diskiem.

create table tabula
( l number(2))
tablespace tabultelpa_1
storage
(initial 495K
next 495K
minextents 2
pctincrease 0);

Cits veids kā sadalīt failus pa diskiem ir izveidot tabultelpas uz dažādiem diskiem un tad tabulu izveidot vienā tabultelpā, bet tabulas indeksu citā tabultelpā.
create tablespace tabultelpa_2 datafile 'd1' size 50K;
create index indeks on t (l)        # indeks uz tabulas t lauku l, bet indeks
tablespace tabultelpa_2;                            # atrodas citā tabultelpā.

ð  Datu bloka noskaņošana.

Kad datu rindas garums pieaug tik daudz, ka tā vairs neievietojas datu blokā, DBVS meklē citu bloku, kurā ievietot šo rindu. Rindas, kuras tiek šādi parvietotās, sauc par migrējošām rindām. Ja DBVS nevar atrast tādu bloku, kurā šī rinda ievietotos, tad rinda tiek sadalīta un izvietota pa dažādiem blokiem, tas saucas rindas saķēdēšana.
Noteikt vai šajā datu bāzē ir saķēdētās (un migrējošās) rindas var divos soļos.

a) Izmantojam komandu ANALYZE.
ANALYZE TABLE firma LIST CHAINED ROWS;
Diemžēl dotajā gadījumā rezultātā iegustam, kā saķēdētas rindas nav atrastas.
ORA‑01495: specified chain row table not found

b)  Otrajā solī jāizveido vaicājums, kurš izvada saķēdēto un migrējošo rindu sarakstu. Iepriekšējās komandas iegūto informāciju DBVS noglabā tabulā CHAINED_ROWS.
select *
from chained_rows
where table_name='Rabota';
Tomēr arī ar šo soli ir problēmas, jo kaut arī lietotājiem sys un demo ir visas tiesības, ko vien var piešķirt lietotājam, viņi neredz tabulu chained_rows.
from chained_rows
     *
ERROR at line 2:

 

ORA‑00942: table or view does not exist

Sakarā ar neveiksmīgajiem pirmajiem diviem soļiem tālāk varu veikt tikai teorētisku aprakstu.
Tālāk lai likvidēt saistītās un migrējošās rindas, viņas vajadzētu ierakstīt jaunā tabulā:
create table virknes
as select *
from veikali
where Num_uzn in

select head_rowid
from chained_rows
where table_name=’VEIKALI’);

Tad izdzēst rindas pamattabulā:
DELETE FROM veikali
WHERE Num_uzn  IN
(SELECT head_rowid
FROM chained_rows
WHERE table_name = 'VEIKALI')

Ierakstīt rindas pamattabulā:
INSERT INTO veikali
SELECT *
FROM virknes;
Likvidēt starptabulu rindas:
DROP TABLE virknes;
Izdzēst informāciju no tabulas chained_rows:
DELETE FROM chained_rows
WHERE table_name = 'VEIKALI';

Cits veids, ka likvidēt saķēdētās rindas ir palielināt datu bloka izmēru. To var izdarīt ar parametra db_block_size palīdzību.
Dinamiskās atmiņas vadības neizmantošana.
Kad tiek radīts kāds objekts (tabula vai kāds cits), atmiņā tiek izdalīts apgabals šim objektam, ko sauc par segmentu. Ja datu ir tik daudz, ka nepietiek vietas ORACLE paplašina segmentu (dinamiskā paplašināšana). Dinamiskā paplašināšana pasliktina DBVS darbu.
Noteikt vai ir dinamiskais paplašinājums var pārbaudot vai nav rekursīvo SQL darbību, jo šī darbības veic pats ORACLE, papildus lietotāja veiktajām SQL darbībām, kad darbojas ar dinamisko paplašinājumu.

Noteikt rekursīvās SQL darbības var ar sekojošu SQL pieprasījumu:
select name,value
FROM v$sysstat
WHERE name = 'recursive calls';
Likvidēt dinamisko paplašinājumu var palielinot ekstentu izmērus. Kaut gan labākais ir precīzi noteikt, kādu maksimālo izmēru varētu sasniegt objekts.
Konkurences samazināšana uz atrites segmentiem.
Lai noteiktu konkurenci uz atrites segmentiem jānosaka, konkurence uz buferiem, kuri satur atrites segmentus. Tovar paveikt ar sekojošu pieprasījumu:
select class, count
FROM v$waitstat
WHERE class IN ('system undo header', 'system undo block','undo header', 'undo block');
Atbilde, kuru izvada DBVS :
CLASS                    COUNT
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑         ‑‑‑‑‑‑‑‑‑
system undo header           0
system undo block             0
undo header                       0
undo block                         0
Kā redzams no atbildes, šajā gadījumā nav konstatēta konkurence uz atrites segmentiem. Šīs četras vērtības jāsalīdzina ar kopējo informācijas pieprasījumu skaitu. Šo vērtību var iegūt ar sekojošu pieprasījumu:
select sum(value)
FROM v$sysstat
WHERE name IN ('db block gets', 'consistent gets');
Pieprasījuma rezultāts:
SUM(VALUE)
        ‑‑‑‑‑‑‑‑‑‑
         6633

Ja kāds no četriem konkurences gadījumiem ir lielāks par vienu procentu, tad jārada vairāk atrites segmentu. Atkarībā no tā cik ir konkurences gadījumu var pievienot dažādu skaitu atrites segmentu:
konk. gad.                      atrites seg.
n<16                              4         
16<=n<32                      8         
32<=n                n/4,bet ne vairāk par 50          
Konkurences samazināšana daudzpavedienu serveros.
Šis process sevī ietver sakaru procesu noskanošanu. Lai notiek konkurenci uz sakaru procesiem, jāizmanto tabula V$DISPATCHER. Šajā tabulā ir lauki IDLE (cik sekunžu simtu sakaru process gaida) un BUSY(cik sekunžu simtus sakaru process ir aizņemts). Ar sekojošu vaicājumu var iegūt informāciju cik procentus laika, kurš protokols, aizņem sakaru procesiem:
select network "Protokols", SUM(busy) / ( SUM(busy) + SUM(idle) )  "Aiznemts"
FROM v$dispatcher
GROUP BY network;
Tomēr personālajā ORACLE nekādi protokoli izmantoti netiek, tāpēc rezultāta nav:
no rows selected
Rezultāts netika izvadīts arī sekojošam pieprasījumam:
select SUM(busy) / ( SUM(busy) + SUM(idle) )  "Aiznemts"
FROM v$dispatcher;
 Aiznemts. Ja kāds no protokoliem būtu izmantojis vairāk nekā 50% laika, tad vajadzētu pievienot vēl sakaru procesus. To var izdarīt ar parametru MTS_DISPATCHERS.

4. Audits.

Audits ļauj datu bāzes administratoram veikt labāku datu bāzes uzraudzību. Ar audita palīdzību var redzēt darbības, ko veic viens vai vairāki datu bāzes lietotāji. Auditu var izmantot dažādu mērķu sasniegšanai. To var izmantot, lai savākt nepieciešamu informāciju par kādam neparastam darbībām ar datu bāzi, piemēram, par nesankcionētiem datu dzēšanas mēģinājumiem, vai arī savākt statistisku informāciju par datu bāzes darbību, piemēram, par veikto datu izmaiņu skaitu, par ievades - izvades operāciju skaitu kāda laika momentā.

DBVS ORACLE ļauj veikt 3 līmeņu auditēšanu:
ð  komandu līmenis, – tiek veikta jebkuru SQL komandu auditēšana (ieraksta katru CREATE TABLE, TRUNCATE TABLE, DROP TABLE komandu);
ð  privilēģiju līmenis, – tiek veikta auditēšana pēc kādām izvēlētām privilēģijām, piemēram CREATE TABLE;
ð  objektu līmenis, – tiek veikta auditēšana tikai izvēlētam objektam, piemēram vienai tabulai (ALTER TABLE ON EMP).

Audita ieraksti tiek glabāti tā saucamajā audita žurnālā (audit trail), kura lomu izpilda tabula SYS.AUD$, kura atrodas katrā ORACLE DBVS datu vārdnīcā.
Auditēšanas ieraksti satur sekojošus datus:
ð  lietotājs, kurš izsaucis auditējamu komandu;
ð  darbības kods, kurš norāda uz auditējamo komandu;
ð  objekts vai objekti, norādītie izpildītājā komandā;
ð  datums un laiks, kad bija izpildīta auditējama komanda.
Atkarīgi no operētājsistēmas auditēšanas ierakstus var būt iespējams glabāt arī operētājsistēmas audita žurnālā.

Lai būtu vieglāk atrast vajadzīgo informāciju ir nodefinēti vairāki skati (views). Lielākai operētājsistēmu daļai audita skati tiek izveidoti automātiski kopā ar datu vārdnīcu.
Lai sāktu lietot skatus vajag pieslēgties datu bāzei kā SYS lietotājs un palaist SQL komandu failu cataudit.sql, kurš izveidos sekojošus skatus:
Ø  STMT_AUDIT_OPTION_MAP
Ø  AUDIT_ACTIONS
Ø  ALL_DEF_AUDIT_OPTS
Ø  DBA_STMT_AUDIT_OPTS
Ø  USER_OBJ_AUDIT_OPTS, DBA_OBJ_AUDIT_OPTS
Ø  USER_AUDIT_TRAIL, DBA_AUDIT_TRAIL
Ø  USER_AUDIT_SESSION, DBA_AUDIT_SESSION
Ø  USER_AUDIT_STATEMENT, DBA_AUDIT_STATEMENT
Ø  USER_AUDIT_OBJECT, DBA_AUDIT_OBJECT
Ø  DBA_AUDIT_EXISTS
Ø  USER_AUDIT_SESSION, DBA_AUDIT_SESSION
Ø  USER_TAB_AUDIT_OPTS





Audita opcijas, kas ir derīgi lietošanai ar komandām AUDIT un NOAUDIT:
Opcija
Auditējama SQL komanda
ALTER SYSTEM
ALTER SYSTEM          
CLUSTER       
CREATE CLUSTER   
ALTER CLUSTER      

TRUNCATE CLUSTER          

DROP CLUSTER        
DATABASE LINK                
CREATE DATABASE LINK  
DROP DATABASE LINK      
INDEX    
CREATE INDEX        
ALTER INDEX          
DROP INDEX
NOT EXISTS  
Visas SQL komandas, kuras atgriez ORACLE kļūdu, jo noteiktas struktūras vai objekts nav eksistē.
PROCEDURE 
CREATE [OR REPLACE] FUNCTION
CREATE [OR REPLACE] PACKAGE
CREATE [OR REPLACE] PROCEDURE
DROP PACKAGE      
DROP PROCEDURE  
PUBLIC DATABASE LINK
CREATE PUBLIC DATABASE LINK           

DROP PUBLIC DATABASE LINK

PUBLIC SYNONYM
CREATE PUBLIC SYNONYM
DROPPUBLIC SYNONYM    
ROLE      
CREATE ROLE          
ALTER ROLE
SET ROLE      
DROP ROLE  
ROLLBACK SEGMENT
CREATE ROLLBACK SEGMENT
ALTER DROPBACK SEGMENT
DROP ROLLBACK SEGMENT
SEQUENCE
CREATE SEQUENCE
DROP SEQUENCE
SESSION
atvienošana un pievienošana
SYNONYM
CREATE SYNONYM / DROP SYNONYM
SYSTEM AUDIT
AUDIT / NO AUDIT  
SYSTEM GRANT
GRANT  sistēmu privilēģijas / loma TO lietotājs / loma          
REVOKE  sistēmu privilēģijas / loma FROM lietotājs / loma
TABLE    
CREATE TABLE        
ALTER TABLE          
DROP TABLE
TABLESPACE
CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
TRIGGER
CREATE TRIGGER
ALTER TRIGGER ENABLE or DISABLE
ALTER TABLE with  
ENABLE, DISABLE, and DROP clauses        
USER      
CREATE USER          
ALTER USER 
DROP USER   
VIEW
CREATE [OR REPLACE] VIEW
DROP VIEW
Tabula 1. SQL komandu auditēšanas opcijas.
Privilēģiju auditēšanas opcijas:
Šo opciju nosaukumi sakrit ar attiecigo sistēmas privilēģijas nosaukumu, piemēram opcija DELETE ANY TABLE privilēģijas auditēšanai ir DELETE ANY TABLE. Lai aktivizēt šo opciju jāizpilda sekojošas komandas:
AUDIT DELETE ANY TABLE
BY ACCESS
WHENEVER NOT SUCCESSFUL.

Objektu audītēšanas opcijas:
Object Option
Table       
ALTER    
ALTER object (table or sequence)
AUDIT    
AUDIT (Form II) object
COMMENT
COMMENT object (table or view)      
DELETE
DELETE FROM object (table or view)
EXECUTE
EXECUTE object (procedure1)
GRANT
GRANT (Form II) privilege ON object
INDEX    
CREATE INDEX ON object (tables only)
INSERT
INSERT INTO object (table, view, or procedure)
LOCK     
LOCK object (table or view)
RENAME
RENAME object (table, view, or procedure1)
SELECT
SELECT . . .FROM object (table, view, snapshot)      
UPDATE 
UPDATE object (table or view)          
Tātad, lai aktivizēt auditēšanu jāizpilda komandu AUDIT. Lai izmantot šo komandu lietotājam jābūt AUDIT SYSTEM privilēģijai, bet lai lietot komandu AUDIT objektu līmenī lietotājam jābūt AUDIT ANY privilēģijai.
Ja auditēšana nav vajadzīga, tad audita žurnāls un skati vairāk nav vajadzīgi un tos var nodzēst. Lai to izdarīt ir jāpalaiž SQL komandu failu catnoaud.sql. Lai dezaktivizēt auditēšanu jālieto komandu NOAUDIT.
ð  Kad auditēšana ir aktivizēta, audita žurnāls palielinājis atkarīgi no sekojošiem faktoriem:
ð  aktivizēto auditēšanas opciju skaits;
ð  auditējamo komandu izpildīšanas biežums.

Kontrolēt auditēšanas žurnāla palielināšanu var izmantojot sekojošas metodes:
ð  aktivizēt vai dezaktivizēt auditēšanu, ja tā nav aktīva, tad audita ieraksti netiek ierakstīti žurnālā;
ð  rūpīgi izvēlēt opcijas auditēšanai, jo mazāk ir nevajadzīgo opciju, jo mazāk nevajadzīgas informācijas tiks ierakstīts žurnālā;
ð  kontrolēt iespēju izpildīt objektu auditēšanu.
Kadreiz var būt lietderīgi dzēst ierakstus no auditēšanas žurnāla. Lai nodzēst visus ierakstus jāizpilda komandu:
DELETE FROM sys.aud$;
bet lai nodzēst ierakstus kas attiecas uz kādu objektu, piemēram uz tabulu PRODUCT jāizpilda komandu:
       DELETE FROM sys.aud$ WHERE obj$name= ‘PRODUCT’;
var arī saglabāt ierakstus citā tabulā:
INSERT INTO table SELECT … FROM sys.aud$…

Apskatīt iegūto auditēšanas informāciju var izmantojot skatus un SQL vaicājumus. Lai redzēt visas komandu auditēšanas opcijas jāizpilda sekojošu komandu:
SELECT * FROM sys.dba_stmt_audit_opts;

USER_NAME
AUDIT_OPTION
SUCCESS
FAILURE
JWARD
SESSION
BY SESSION
BY SESSION
SWILLIAMS
SESSION
BY SESSION
BY SESSION

LOCK TABLE
BY ACCESS
NOT SET

Lai redzēt visas privilēģiju auditēšanas opcijas jāizpilda sekojošu komandu:
SELECT * FROM sys.dba_priv_audit_opts;
USER_NAME
AUDIT_OPTION
SUCCESS
FAILURE
ALTER USER
BY SESSION
BY SESSION


Sekojošs vaicājums paradīs visu informāciju kas ir saistīta ar īpašnieku SCOTT:
SELECT * FROM sys.dba_obj_audit_opts
   WHERE owner = 'SCOTT' AND object_name LIKE 'EMP%';

OWNER
OBJECT_NAME
OBJECT_TY
ALT
AUD
COM
DEL
GRA
IND
INS
LOC
SCOTT
EMP
TABLE
S/S
-/-
-/-
A/-
-/-
S/S
-/-
-/-
SCOTT
EMPLOYEE
VIEW
-/-
-/-
-/-
-/-
-/-
-/-
-/-
-/-

‘-‘ nozīme, ka auditēšanas opcija nav noteikta;
‘S’ nozīme, ka auditēšanas opcija iestādīta BY SESSION;
‘A’ nozīme, ka auditēšanas opcija iestādīta BY ACCESS;
katrai opcijai ir divas iespējamas nozīmes – WHENEVER SUCCESSFUL un WHENEVER NOT SUCCESSFUL, kuras atdalītas ar simbolu ‘/’.

Auditēšanas fokusēšana.
Kad auditēšana ir ieslegta. Jūs gribēsiet savu uzmanību uz auditēšanu, cik daudz ir iespejams. Tas nozimē, samazināt izvades datu summu uz jusu audita informācijas apgabalu. Audita informācijas apgabals var piepildīties ļoti ātri ar nenozimīgu informāciju, ja jūsu auditesana ir pārāk visparīga.
Visai auditēšanai robežu intervāls var ierobežot:
a)        auditejot veiksmīgas un neveiksmīgas SQL komandu izpildes;
b)        vācot audita informāciju BY SESSION vai BY ACCESS;
Auditēšanas tipi.
Auditēšanu var iedalīt ne tiekai pēc tā ar ko to veic, bet arī pēc tā ko auditē. Šajā gadījumā auditu var iedalīt sekojoši:
ð  vaicājumu/darbību audits;
ð  tiesību audits;
ð  objektu audits.
ð  Vaicājumu/darbību audits.
Selektīvi auditē SQL vaicajumus ar norādījumu tikai uz vaicājuma tipu, bet nevis uz specifisku struktūru vai objektiem, tādiem kā AUDIT TABLE. Vaicājumu/darbību auditu, var uzstādīt katram datu bāzes lietotājam vai noteikiem lietotājiem. Ja  mēs veicam vaicajumu/darbību auditu, tad audita tabulās tiek ierakstīta informācija  par to darbību, kuru mes likām auditet ar komandu AUDIT.
Vaicājumu/darbību audits  - tas ir noteikto vaicajumu grupu selektīvais audits, kuru var sadalīt sekojošās kategorijās:
-            Auditē DDL vaicajumus, kuri attiecas uz noteiktu datu bāzes struktūru vai objekta tipu;
-            Auditē Select un DML vaicājumus, kuri attiecas uz noteiktu datu bāzes struktūru vai objekta tipu;
-            Lieto trigeri, lai ierakstītu tabulā izmainīto vertību.
 Neveiksmīgu vaicājumu/darbību izpilde var tikt auditēta, ja ir nepietiekama autorizācija, vai ir norāde uz neeksistējošo objektu. Auditē visu datu bāzes lietotāju darbības vai darbības no lietotaju saraksta ar šiem veidiem.

ð  Tiesību audits .
Tiesibu audits ļauj selektīvi auditēt izmantotu tiesības sistēmu, lai piedavātu pieejamības tiesības, tādus kā Audit Create Table . Tiesību audits ir vairāk fokusēts nekā vaicājumu/darbību audits un aditē tikai mērķu privilēgijas izmantošanu. Tiesību audits var uzstādīt kā izvēlētiem lietotajiem vai katram datu bāzes lietotājam. Tiesību audita gadījumā DBVS ieraksta audita tabulas informaciju ja kads izmanto komandā Audit norādīto tiesību.
Tiesību auditēšana:
-            Jebkura sistemas tiesība var tikt auditēta;
-            Ir vairāk nekā 80 sistēmas tiesibas, kuras var tikt auditētas;

ð  Objektu audits.
Objektu auditēšana auditēs visus DML vaicājumu/darbības (ieskaitot pieprasījumus) un GRANT un REVOKE vaicājumu/darbību jebkuras sistēmas objektam. Objektu audita gadījumā administrātors komandā Audit norāda izvēlēto objektu un tad  DBVS ieraksta audita tabulās informaciju par darbu ar šo objektu.
Objektu audits ļauj auditet šādus objektus:
-            tabulas;
-            skati;
-            secības;
-            patstāvīgi iebūvetas procedūras;
-            patstāvīgi iebuvētas funkcijas.
Jāatzīmē, ka atsevišķas pakotnes proceduras nevar tikt auditētas. Tāpēc ka skati un procedūras var atsaukties uz citiem datu bāzes objektiem, daži audita ieraksti var tikt ģenerēti, ka šo objektu lietojumu rezultāts. Visu datu bāzes lietojumiem ir iestadītas objektu auditēšanas opcijas. Šīs opcijas nevar tikt iestaditas atseviskiem lietotajiem.
Objektu auditēšanas noklusētās opcijas:
-            Uzstadīt noklusēto vērtību, lietojot atslēgas vārdu DEFAULT ;
-            Piešķirt noklusēto auditēšanas opciju visiem nākošiem izveidotiem objektiem;
-            Ignorēt noklusētās auditēšanas opcijas ar jebkuru atsevišķi uzstādīto opciju.
Lai uzstādītu noklusētas auditēšanas opcijas ir nepieciešama tiesība AUDIT_SYSTEM.
Audita tabulas.
Audita informācijas apgabalā tiek ierakstīti vaicājumu/darbību, tiesību un objektu auditēšanas ģenerēti ieraksti.
Audita apgabala skati

Apraksts

STMT_AUDIT_OPTION_MAP
Attēlo audita opcijas numuru
AUDIT_ACTION
Attēlo darbības numuru
ALL_DEF_AUDIT_OPTS
Noklusētas audita opcijas
DBA_STMT_AUDIT_OPTS
Sistēmas auditēšanas opcijas
DBA_PRIV_AUDIT_OPTS
Sistēmas tiesību auditētas opcijas
DBA_OBJ_AUDIT_OPTS
Objekta auditētas opcijas
USER_OBJ_AUDIT_OPTS
Objekta auditētas opcijas
DBA_AUDIT_TRAIL
Visas audita apgabalu ieejas
USER_AUDIT_TRAIL
Atbilstošas – lietotaja audita apgabala ieejas
DBA_AUDIT_SESSION
Visas pieslēguma un atvienošanas ieejas
USER_AUDIT_SESSION
Lietotāju pieslēguma un atvienošanas ieejas
DBA_AUDIT_STATEMENT
Visi ieraksti saistīti ar DBA sistēmas auditēsanu
USER_AUDIT_STATEMENT
Visi ieraksti saistīti ar lietotaja sistēmas auditēsanu
DBA_AUDIT_OBJECT
Visi ieraksti, kas attiecas uz objektiem
USER_AUDIT_OBJECT
Visi ieraksti, kas attiecas uz objektiem tekošajam lietotājam
DBA_AUDIT_EXISTS
Visi ieraksti EXISTS /NONE EXESTS

Audita piemēri.

ð  Piemērs Nr. 1:
Auditē kādas darbības vec sistēmā lietotājs SYSTEM:
SQL komandas:
SQL> audit all by system by access;
Audit succeeded.
SQL> create user cirvis
  2  identified by cirvis;
User created.
SQL> create table dfsdf;
create table dfsdf
                *
ERROR at line 1:
ORA-00906: missing left parenthesis
SQL> drop user cirvis;
User dropped.
SQL> create tablespace sdfsdf;
create tablespace sdfsdf
               *
ERROR at line 1:
ORA-02199: missing DATAFILE clause
SQL> select username,action_name
  2  from dba_audit_trail
  3  where username='SYSTEM';
     Atrisinājums:
USERNAME                       ACTION_NAME
------------------------------ ---------------------------
SYSTEM                         LOGOFF
SYSTEM                         LOGOFF
SYSTEM                         CREATE USER
SYSTEM                         CREATE TABLE
SYSTEM                         DROP USER
SYSTEM                         CREATE TABLESPACE
SYSTEM                         LOGOFF
SYSTEM                         CREATE USER
SYSTEM                         CREATE TABLE
SYSTEM                         DROP USER
SYSTEM                         CREATE TABLESPACE
11 rows selected.

ð  Piemērs Nr.2:
Noteikt kurš lietotājs visvairāk strādā sistēmā:
SQL komandas:
Audit connect;
select username
from dba_audit_session
group by username
having sum(logoff_time-timestamp)=
(select max(sum(logoff_time-timestamp))
from dba_audit_session
group by username);

Atrisinājums:
USERNAME
------------------------------
DEMO
(vēl viens variants:
1) select username,sum(logoff_time-timestamp)
     from dba_audit_session
     group by username
     having sum(logoff_time-timestamp)=
     (select max(sum(logoff_time-timestamp))
     from dba_audit_session
     group by username);
     Atrisinājums:
           USERNAME                       SUM(LOGOFF_TIME-TIMESTAMP)
            ------------------------------ --------------------------
           DEMO                                            .01086806

ð  Piemērs Nr. 3.
Auditē kurš lietotājs veic DELETE operāciju eksistējošā tabulā:
SQL komandas:
audit delete on tabula by access;
delete tabula
where num=5;
SQL> select username,action_name,obj_name
  2  from dba_audit_trail
  3  where action_name='DELETE' and obj_name='TABULA';

Atrisinājums:
USERNAME                       ACTION_NAME
------------------------------ ---------------------------
OBJ_NAME
----------------------------------------------------------
DEMO                           DELETE
TABULA

DEMO                           DELETE
TABULA


Nobeigums.

Laboratorijas darbā tika apskatītas audit sistēma un audita piemēri un tik aprakstīts datu vārdnīcas apraksts, DBVS konfigurēšanas parametri, datu bāzu noskaņošana un noskanošanas process.
Veicot auditu administrēšanu tas arī labi jāplāno un jāveic uzmanīgi, jo ja veic parak plašu, vispārīgu auditu, tad viegli var audita tabulas pārblivēt ar maznozīmīgu informāciju, kas aizņems visu vietu audita tabulās. Bet ja audita tabulas vairs nebūs vietas un tajās nevarēs ierakstīt jaunus ierakstus par auditejamo darbību, objektu un t.t., tad ja kāds mēģinās darboties ar šo objektu, darbību un t.t., tad nekas nesanāk jo būs paziņojumi par kļūdām.
Var secināt, ka Oracle ver. 7.0. ir jaudīgs datu bāzes vadības sistēmas produkts.

Nav komentāru:

Ierakstīt komentāru