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
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