Databaseadministrasjon Oppgavene til DBA gjennom livsløpet til databasen Systemarkitekturer Systemkatalogen Oppbygging av DBHS Verktøy for DBA Sikkerhetstrusler og virkemidler Sikkerhetskopiering og gjenoppbygging Optimalisering Overvåking Brukeradministrasjon Brukere, grupper/roller, rettigheter Bruk av utsnitt Pensum: Kapittel 11 Databaser Leksjon 11: Databaseadministrasjon - 1
Oppgavene til DBA Man skiller gjerne mellom dataadministrasjon (strategisk) og databaseadministrasjon (teknisk). Overordnet ansvar gjennom hele livsløpet til en database: Planlegging, analyse og design, implementasjon, drift, videreutvikling. Definere retningslinjer og prosedyrer. Evaluering, valg og installasjon av DBHS og andre verktøy. Sikkerhet: Brukere og grupper, passord, rettigheter, aksesskontroll, overvåking. Opplæring av brukere, brukerstøtte. Sikkerhetskopiering og gjenoppbygging ved feil. Optimalisering Databaser Leksjon 11: Databaseadministrasjon - 2
Systemarkitekturer Sentraliserte systemer (historisk) En sentral databasemaskin styrer N «dumme» terminaler. Klient/tjener Klient (arbeidsstasjon) sender forespørsel, tjener svarer. Klient SQL Spørreresultat Databasetjener Flerlagsarkitektur og web-løsninger Databasetjener, applikasjonstjener/web-tjener og klient. Databaser Leksjon 11: Databaseadministrasjon - 3
Systemarkitekturer Distribuerte databasesystemer Består av et antall «noder», hver med sitt DBHS og sin del av databasen, og i stand til å kommunisere med de andre nodene. Data kan fordeles mellom nodene på flere måter: Horisontal fragmentering: Tabell delt opp etter rader. Vertikal fragmentering: Tabell delt opp etter kolonner. Primærnøkkel må være med i alle fragmenter! Kombinert fragmentering. Replikering: Data lagret på flere noder (flere kopier). Brukeren skal ikke behøve å vite hvor data er lagret. Hver node må har tilgang til systemkatalogen! Transaksjoner: alt-eller-ingenting på alle-eller-ingen noder! Spørreoptimalisering: Hvordan bør spørringen utføres? Databaser Leksjon 11: Databaseadministrasjon - 4
Systemkatalogen Database inneholder tabeller og indekser, men også andre typer data. Metadata, eller «data om data» er beskrivelser av databasen: Hvilke tabeller finnes? Hvordan er tabellene bygget opp? Hvilke indekser er definert? Statistiske data brukes av spørreoptimalisatoren: Hvor mange rader har tabellene? Hvor mange forskjellige verdier er lagret i en kolonne? Data om brukere og deres rettigheter. Systemkatalogen er en samlebetegnelse på alle slike data. Data i systemkatalogen er ofte lagret på tabellform (systemtabeller), som betyr at vi kan bruke SQL for rapportering. Forenklet struktur: Tabell(Tabellnavn, Eier*, DatoLaget) Kolonne(Tabellnavn*, Kolonnenavn, Datatype) Bruker(Brukernavn, Passord, Lagringsplass) Tabellrettighet(Brukernavn*, Tabellnavn*, Rettigheter) Databaser Leksjon 11: Databaseadministrasjon - 5
Hovedtyper av brukere Sluttbruker Brukerapplikasjon Utvikler Utviklingsverktøy DBHS DBA SQL-editor Databaser Leksjon 11: Databaseadministrasjon - 6
Oppbygging av et DBHS (prinsippskisse) s.239 Databasehåndteringssystem Adgangskontroll SQL-parserer Verktøy Rettighetskontroll Integritetskontroll Spørreoptimalisator Bruker Transaksjoner Samtidighetskontroll Loggskriver Dataaksess SQL-maskin Bufferhåndterer Data Systemkatalog Katalogtjeneste Filhåndterer Statistikk Indekser Databaser Leksjon 11: Databaseadministrasjon - 7
Spørreoptimalisering SELECT O.OrdreDato FROM Kunde AS K INNER JOIN (Ordre AS O INNER JOIN Ordrelinje AS OL ON O.OrdreNr = OL.OrdreNR) ON K.KNr = O.KNr WHERE K.Etternavn = Fotland AND OL.VNr = 10830 SQL legger ikke fast hvordan spørringen utføres! Hvordan kunne spørringen bli utført? (s. 241) 1. Likekobling i FROM-delen innenfra og ut. 2. Koblingsresultat filtreres gjennom sammensatt WHERE-delen. 3. Verdiene i kolonnen OrdreDato plukkes ut. Hvorfor er det ikke optimalt? Spørreoptimalisering: Oversetter til uttrykk i relasjonsalgebra. (Hvilket i eksemplet?) Omskriving av uttrykk til en mer effektivt form. Databaser Leksjon 11: Databaseadministrasjon - 8
Spørreoptimalisering Operatortrær kan representere SQL-spørringer: Etternavn LIKE A* AnsattID, Etternavn, PNr, AntTimer Ansatt.AnsattNr=Arbeid.AnsattNr Ansatt Arbeid Operatortrær blir brukt i forbindelse med spørreoptimalisering. Eksempel på regel: Skyv og nedover i treet. Bytt om på likekoblinger for å minske mellomresultater. Bryt ned sammensatte seleksjoner i flere enkle. Databaser Leksjon 11: Databaseadministrasjon - 9
Oppgavene til en DBA - Verktøy for DBA Eksempel: Oracle Enterprise Manager er et «total-verktøy» for databaseadministrasjon. Starte og ta ned databasen. Sikkerhetskopiering og gjenoppbygging etter feil Definere tabeller, indekser, Brukeradministrasjon Sette grenser for brukernes ressursbruk Organisere fysiske lagringsstrukturer Skrive og analysere SQL-kommandoer Starte «batch»-jobber Visualisere bruk av disk, buffer Gjøre databasen tilgjengelig i et nettverk Databaser Leksjon 11: Databaseadministrasjon - 10
Oracle Enterprise Manager Databaser Leksjon 11: Databaseadministrasjon - 11
Schema + Security Databaser Leksjon 11: Databaseadministrasjon - 12
Sikkerhetstrusler og virkemidler Uhell Menneskelig svikt Programvarefeil Maskinvarefeil Strømstans Angrep Ansatte / eksterne Innsyn / endring Direkte mot databasen Indirekte via operativsystem / nettverk Virkemidler Sikkerhetskopiering, loggføring og gjenoppbygging Overvåking Kryptering Aksesskontroll Fysisk kontroll Passord Rettigheter Duplisering av utstyr Nødaggregat Rutiner, «brann-øvelser» Databaser Leksjon 11: Databaseadministrasjon - 13
Sikkerhetskopiering og gjenoppbygging Verktøy for sikkerhetskopiering (full/inkrementell) Verktøy for gjenoppbygging (recovery) Transaksjoner Transaksjoner skal utføres i sin helhet eller ikke i det hele tatt. Informasjon om oppdateringer blir skrevet til transaksjonsloggen før databasen blir oppdatert. Siste sikkerhetskopi + transaksjonsloggen brukes ved gjenoppbygging for å bringe databasen tilbake i en konsistent tilstand. Rutiner for sikkerhetskopiering Tidspunkter Oppbevaring av sikkerhetskopier Databaser Leksjon 11: Databaseadministrasjon - 14
Sikkerhetskopier og gjenoppbygging Diskkrasj Transaksjonslogg Tid Full sikkerhetskopi Inkrementelle sikkerhetskopier Full sikkerhetskopi: Hele databasen kopieres til et annet lagrings-medium. For eksempel en gang i uken. Inkrementelle sikkerhetskopier: Kun det som er endret siden forrige gang blir kopiert. For eksempel hver natt. Databaser Leksjon 11: Databaseadministrasjon - 15
Effektivitet Valg av maskinvare Antall disker Hvilket RAID-system? (Redundant Array of Independent Disks) Størrelse på hurtigminne Hastighet på nettverk Fysisk design Velge indekser Denormalisering Filstrukturer Overvåking og optimalisering Skrive om SQL-kode, gi DBHS hint Legge til indekser, endre fysisk lagringsstruktur Endre systemparameter (bufferstørrelser, loggstørrelser) Databaser Leksjon 11: Databaseadministrasjon - 16
Brukeradministrasjon Vi ønsker å tildele en bestemt bruker retten til å utføre en bestemt operasjon på et bestemt objekt. Eksempel: Per skal kunne lese kundetabellen. Objekter Brukere Rettigheter Vi skiller mellom objektrettigheter (privilegium) og systemrettigheter. Starte og stoppe DBHS er eksempel på en systemrettighet. Brukerinformasjonen blir lagret i en eller flere systemtabeller. Databaser Leksjon 11: Databaseadministrasjon - 17
Grupper / roller En gruppe (eller rolle) er en samling brukere som skal ha de samme rettighetene i databasesystemet. Eksempel: Gruppen Selger Bruk av grupper: Opprett grupper Tildel grupper rettigheter på ulike objekter Opprett brukere Meld brukere inn i grupper Brukere arver rettigheter fra gruppene de er medlem av. DBA slipper dermed å tildele enkeltbrukere rettigheter. MySQL støtter ikke roller. Databaser Leksjon 11: Databaseadministrasjon - 18
Rettigheter i SQL Per skal kunne lese og oppdatere tabellen Kunder: GRANT SELECT, UPDATE ON Kunder TO Per Per skal ikke lenger få lov til å oppdatere tabellen Kunder: REVOKE UPDATE ON Kunder FROM Per For å få lov til å gi rettigheten videre, føy til: WITH GRANT OPTION - for objektrettigheter WITH ADMIN OPTION - for systemrettigheter Oracle: CREATE USER, CREATE ROLE, DROP USER, DROP ROLE, DROP USER CASCADE, CREATE PROFILE, Databaser Leksjon 11: Databaseadministrasjon - 19
Utsnitt (views) og rettigheter Hva om vi ønsker å tildele rettigheter til utvalgte rader/kolonner i en tabell? Det er mulig å tildele rettigheter på utsnitt uten å gi rettigheter på underliggende tabeller. Merk: UPDATE-rettighet på et utsnitt betyr at man får lov til å oppdatere «via» utsnittet, som medfører oppdatering av den underliggende tabellen, men man kan altså samtidig hindre oppdatering direkte i tabellen. Databaser Leksjon 11: Databaseadministrasjon - 20
Et grovmasket sikkerhetssystem Vi skiller kun mellom tre brukertyper: Administratorer: Får alle rettigheter. Sluttbrukere: Jobber med innholdet av databasen. Får rettigheter til å avlese / sette inn / oppdatere og slette data. Utviklere: Jobber med strukturen. Får rettigheter til å lage nye tabeller, spørringer, skjemaer, rapporter, makroer og moduler, og også å endre definisjonen av eksisterende objekter. Her skiller vi altså ikke mellom konkrete objekter. Databaser Leksjon 11: Databaseadministrasjon - 21
Et mer finmasket sikkerhetssystem Forskjellige deler av databasen blir brukt av forskjellige avdelinger/stillingskategorier. Vi deler inn gruppen av Sluttbrukere. Eksempler: AvdelingA, AvdelingB, Sekretær, Selger, Direktør, Kan være nyttig å lage grupper (roller) i flere «nivåer». I Oracle kan roller tildeles andre roller. Eksempel: Både rollen Selger og rollen Sekretær trenger rollen Innsyn. Hvis Selger og Sekretær skal ha mange av de samme rettighetene er det arbeidsbesparende å tildele rettighetene 1 gang til Innsyn, og deretter gi Innsyn til Selger og Sekretær. Databaser Leksjon 11: Databaseadministrasjon - 22
SQL og metadata i Oracle Hvordan er tabellene mine definert? SELECT table_name, column_name, data_type FROM user_tab_columns Hvilke rettigheter er delt ut på tabellene til Per: SELECT * FROM dba_tab_privs WHERE owner= Per Hvilke rettigheter har Per delt ut: SELECT * FROM dba_col_privs WHERE grantee = Per Databaser Leksjon 11: Databaseadministrasjon - 23
SQL og loggføring i Oracle (Overvåkning) Logg utvalgsspørringer mot Ansatt-tabellen: AUDIT SELECT ON Ansatt; Hva har skjedd? SELECT username, timestamp, obj_name, action_name FROM user_audit_object; En trigger er en egendefinert «prosedyre» som blir utført hver gang en bestemt operasjon blir utført, for eksempel ved oppdatering av en bestemt tabell. Se kapittel 14. Triggere kan brukes for «skreddersøm» av overvåking. Eksempel: Skriv til en logg-tabell hver gang Per endrer i kolonnen Ansatt.Lønn. Databaser Leksjon 11: Databaseadministrasjon - 24