Elfde-Liniestraat 24 3500 Hasselt
Schooljaar 2009-2010
TINFO POKER GAME
Oracle DBA
Studenten:
Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters
Inhoudsopgave 1
Overzicht users met rechten en rollen ............................................................................................ 3
2
Aanmaak database .......................................................................................................................... 9 2.1
Overzicht instellingen .............................................................................................................. 9
2.2
Database storage ................................................................................................................... 10
2.2.1
Controlfiles .................................................................................................................... 10
2.2.2
Tablespaces ................................................................................................................... 10
2.2.3
Datafiles ......................................................................................................................... 10
2.2.4
Redo log groups ............................................................................................................. 11
3
Back-up .......................................................................................................................................... 11
4
Logboek ......................................................................................................................................... 14 Maandag 11/01/10........................................................................................................................ 14 Dinsdag 12/01/10 .......................................................................................................................... 14 Woensdag 13/01/10...................................................................................................................... 14 Donderdag 14/10/10 ..................................................................................................................... 14
5
Bronnen ......................................................................................................................................... 15
Groep 10
~2~
TINFO Poker Game
1
Overzicht users met rechten en rollen
Koen Olaerts, Kris Gregoire, Toon Wouters, Tom Dekeyser, Daan Gielen, Rik Broens en Peter Asnong zijn standaardgebruikers. Hun usernames komen overeen met hun echte namen maar dan zonder spatie tussen de voornaam en de achternaam. De users hebben allemaal Pokergame als default tablespace en de voornaam in kleine letters als paswoord. Zij krijgen allen de rol r_gebruiker toegewezen. Deze rol bevat de subrollen r_usersOnderhouden en heeft daarnaast ook een select-recht op de tabel games. De gebruikers VeroniqueHuybrechts en beheerder zijn beide toegekend aan de rol r_admin. Deze rol zorgt ervoor dat deze gebruikers alle rechten hebben. Ook bij hun is de default tablespace Pokergame. De beheerders hebben ook unlimited tablespace. De inloggegevens zijn VeroniqueHuybrechts/veronique en beheerder/beheerder. Naast de ‘hoofdbeheerder’ hebben we twee extra gebruikers voorzien namelijk gamebeheerder en userbeheerder. De gamebeheerder zal instaan voor het beheren van de games en table_models en heeft de rol r_gamebeheer toegewezen. De userbeheerder zal op zijn beurt instaan voor het beheren van alle gebruikers. De inloggegevens zijn gamebeheerder/gamebeheerder en userbeheerder/userbeheerder. We hebben ook een gebruiker voorzien die de applicatie zelf zal gebruiken. Deze gebruiker krijgt de rol r_applicatie toegewezen. De rol r_applicatie bevat de rollen usersOnderhouden en gamesOnderhouden en heeft een extra select, insert en updaterecht op de tabel sessions. De applicatie heeft ook toegang om de aangemaakte procedures op te roepen. De inloggegevens zijn applicatie/applicatie. We gebruiken de bestanden GebruikersVerwijderen.sql en RollenVerwijderen.sql om de vorige gegevens eerst te verwijderen. Daarna kunnen GebruikersAanmaken.sql, RollenAanmaken.sql en RollenToekennen.sql worden gebruikt om de gebruikers en rollen aan te maken en toe te kennen.
Groep 10
~3~
TINFO Poker Game
Beschrijving van alle rollen en hun rechten r_viewsBekijken
Select op de views vchip, vlose en vwin.
r_usersOnderhouden
Alle rechten van de rol r_viewsBekijken. Select, update en delete rechten op de tabel Users.
r_gamesOnderhouden
Alle rechten van de rol r_viewsBekijken. Select, insert, update en delete rechten op de tabel Games en Table_models.
r_gebruiker
Alle rechten van de rol r_usersOnderhouden. Select rechten op de tabel Games.
r_gamebeheer
Alle rechten van de rol r_gamesOnderhouden.
r_userbeheer
Alle rechten van de rol r_usersOnderhouden. Insert op de tabel Users. Execute rechten op de procedures.
r_applicatie
Alle rechten van de rollen r_usersOnderhouden en r_gamesOnderhouden. Select, insert en update rechten op de tabel Sessions. Execute rechten op de procedures.
r_admin
Alle rechten van de rol r_viewsBekijken. Alle rechten op de tabellen Users, Games, Table_Models en Sessions. Rechten voor het aanmaken/droppen van tabellen, triggers, procedures, views, sequences en synonyms. Execute rechten op de procedures.
Schematische voorstelling rollenmodel
Wij hebben gekozen om het schema op te delen in kleinere deelschema’s. Dit vergroot de leesbaarheid. Eventuele subrollen worden telkens herhaald. r_viewsbekijken
Groep 10
~4~
TINFO Poker Game
r_usersOnderhouden
r_gamesOnderhouden
Groep 10
~5~
TINFO Poker Game
r_gebruiker
r_gamebeheer
Groep 10
~6~
TINFO Poker Game
r_userbeheer
r_applicitie
Groep 10
~7~
TINFO Poker Game
r_admin
Gebruikers en wachtwoorden Gebruikersnaam VeroniqueHuybrechts KrisGregoire ToonWouters KoenOlaerts DaanGielen PeterAsnong TomDekeyser RikBroens applicatie beheerder gamebeheerder userbeheerder
Wachtwoord veronique kris toon koen daan peter tom rik applicatie beheerder gamebeheerder userbeheerder
De laatste vier gebruikers in deze lijst zijn voorbeeldgebruikers. In een reële implementatie krijgen zij natuurlijk ook een naam. Het is dan ook noodzakelijk, net zoals voor alle gebruikers, dat een degelijk wachtwoord gekozen wordt.
Groep 10
~8~
TINFO Poker Game
2
Aanmaak database
2.1
Overzicht instellingen
Configureer de database met enterprise manager. -
-
Use database control for database management Use the same password for all accounts: ‘phl’ Storage for database: File system Use Database File Locations from Template Recovery options for the database: Specify Flash Recovery Area (we zouden de flash recovery area op een andere HD zetten, maar hier beschikken we nu niet over). Plaats een vinkje voor ‘Enabled Archiving’. Enkel de Enterprise Manager Repository aanvinken Bij ‘standard database components’ vinken we alles uit.
70 % of Total memory space (we draaien oracle in vmware, oracle is het enige wat op de HD staat) Name
Value
audit_file_dest
{ORACLE_BASE}\admin\{DB_UNIQUE_NAME}\adump
background_dump_dest
{ORACLE_BASE}\admin\{DB_UNIQUE_NAME}\bdump
compatible control_files core_dump_dest
10.2.0.1.0 ("{ORACLE_BASE}\oradata\{DB_UNIQUE_NAME}\control01.ctl", "{ORACLE_BASE}\oradata\{DB_UNIQUE_NAME}\control02.ctl", "{ORACLE_BASE}\oradata\{DB_UNIQUE_NAME}\control03.ctl") {ORACLE_BASE}\admin\{DB_UNIQUE_NAME}\cdump
db_block_size
8192
db_domain db_file_multiblock_read_count
16
db_name db_recovery_file_dest
pokergame {ORACLE_BASE}\flash_recovery_area
db_recovery_file_dest_size
2048MB
job_queue_processes
10
log_archive_format
ARC%S_%R.%T
nls_language
DUTCH
nls_territory
BELGIUM
open_cursors
300
pga_aggregate_target
79MB
processes
150
remote_login_passwordfile
EXCLUSIVE
sga_target
238MB
undo_management
AUTO
undo_tablespace
UNDOTBS1
user_dump_dest
{ORACLE_BASE}\admin\{DB_UNIQUE_NAME}\udump
Groep 10
~9~
TINFO Poker Game
-
-
2.2
Database characterset: default (West-Europese default karakterset) Database Character Set: WE8MSWIN1252 National Character Set: AL16UTF16 Dedicted server mode (zoveel connecties komen er nooit tegelijkertijd voor)
Database storage
2.2.1 Controlfiles We zouden de control files opslaan op meerdere harde schijven indien we hierover beschikten (multiplexen). Maximum datafiles: 100 (standaard) Maximum redo log files: 16 Maximum log members: 3 C:\oracle\product\10.2.0\oradata\pokergame\control01.ctl C:\oracle\product\10.2.0\oradata\pokergame\control02.ctl C:\oracle\product\10.2.0\oradata\pokergame\control03.ctl
ALTER SYSTEM SET control_files= 'c:\oracle\product\10.2.0\oradata\pokergame\control01.ctl', 'c:\oracle\product\10.2.0\oradata\pokergame\control02.ctl', 'c:\oracle\product\10.2.0\oradata\pokergame\control03.ctl' SCOPE=spfile;
2.2.2
Tablespaces
Nieuwe tablespace Pokergame aangemaakt:
We hebben de volgende standaarden:
AutoExtend (increment 5Mb) Maximumsize: unlimited
Pokergame SYSAUX SYSTEM TEMP UNDOTBS1 USERS
permanent permanent permanent tempory undo permanent
local local local local local local
20 120 300 20 200 5
CREATE TABLESPACE Pokergame DATAFILE 'c:\oracle\product\10.2.0\oradata\pokergame\Pokergame.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT management local autoallocate;
2.2.3
Datafiles
C:\oracle\product\10.2.0\oradata\pokergame\Pokergame.dbf C:\oracle\product\10.2.0\oradata\pokergame\sysaux01.dbf C:\oracle\product\10.2.0\oradata\pokergame\system01.dbf C:\oracle\product\10.2.0\oradata\pokergame\temp01.dbf C:\oracle\product\10.2.0\oradata\pokergame\undotbs01.dbf C:\oracle\product\10.2.0\oradata\pokergame\users01.dbf
Groep 10
~ 10 ~
Pokergame SYSAUX SYSTEM TEMP UNDOTBS1 USERS
20 120 300 20 200 5
TINFO Poker Game
2.2.4
Redo log groups
C:\oracle\product\10.2.0\oradata\pokergame\redo01.log C:\oracle\product\10.2.0\oradata\pokergame\redo02.log C:\oracle\product\10.2.0\oradata\pokergame\redo03.log ALTER DATABASE ADD LOGFILE group 100M; ALTER DATABASE ADD LOGFILE group 100M; ALTER DATABASE ADD LOGFILE group 100M; ALTER DATABASE ADD LOGFILE group 100M;
3
51200 kb 51200 kb 51200 kb
1 'c:\oracle\product\10.2.0\oradata\pokergame\redo01.log' SIZE
2 'c:\oracle\product\10.2.0\oradata\pokergame\redo02.log' size
1 'd:\oracle\product\10.2.0\oradata\pokergame\redo01.log' size
1 'd:\oracle\product\10.2.0\oradata\pokergame\redo02.log' size
Back-up
Voor backups te maken van onze databank gebruiken we differentiële incrementele backups. Bij dit type van backup worden enkel de bestanden opgeslagen sinds de vorige volledige of incrementele backup. Na de eerstvolgende succesvolle volledige back-up kunnen de incrementele back-ups verwijderd worden. Om een volledige bestandsmap terug te plaatsen is de laatste volledige back-up, en alle daar op volgende incrementele back-ups nodig.
In deze afbeelding zie je schematisch hoe onze backups werken. Op zondag worden onze volledige backups genomen. De andere dagen wordt er een incrementele backup
Groep 10
~ 11 ~
TINFO Poker Game
genomen. Hierin worden de gewijzigde gegevens sinds de recenste backup bijgehouden. Al deze backups gebeuren om middernacht. Dagelijks wordt er een kopie gemaakt van de fysische files behorende tot de databank, zoals datafiles, control files, gearchiveerde redo log files. Wekelijks wordt er een logische back-up gemaakt van alle logische data zoals de tabellen, tablespaces,… Voor het aanmaken van onze backups maken wij gebruik van RMAN recovery manager. Deze kun je oproepen in de commandprompt van je oracle server. Een groot voordeel van RMAN is dat hij alleen used tablespace gaat backuppen. Ook biedt RMAN de gelegenheid blokken te controleren of deze corrupt zijn. Daardoor wordt u op een vroeg moment gealarmeerd over een probleem in uw databestanden. Voor we hier echter aan kunnen beginnen moet je ervoor zorgen dat je database in archive log mode staat. Als dit nog niet gebeurd zou zijn kun je dit instellen via de commando’s: startup mount alter database archivelog; archive log list; Als eerste gaan we onze Flash Recovery Area instellen waarin onze logfiles en backups bewaard gaan worden. Hierdoor zullen de oudere bestanden van databaseherstel die niet meer nodig zijn automatisch gewist worden wat natuurlijk een serieuze besparing is op schijfruimte. We stellen de FRA als volgt in: alter system set db_recovery_file_dest_size = 3g; alter system set db_recovery_file_dest = ‘/ora_flash_area’ We beginnen met het opstarten van RMAN in de DOS-promt: rman target / Nu moet je de instellingen aanpassen. Begin met het default backup device type te veranderen naar disk: RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK; We kiezen ervoor om een gecomprimeerde backup set te gebruiken: RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET; We zorgen ervoor dat ook de controlfile en spfile mee gebackupped worden: RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; Elke backup laten we naar 3 bestanden wegschrijven: RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3; We stellen de recovery window in op 7 dagen: RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; Als alles juist is ingesteld kunnen we een volledige backup doen, inclusief de laatste logfile: RMAN> BACKUP DATABASE PLUS ARCHIVE LOG; Dit is echter een volledige backup. Wij willen gebruik maken van incrementele backups. Elke zondag nacht gaan we een level 0 incremental backup nemen:
Groep 10
~ 12 ~
TINFO Poker Game
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE; Elke andere nacht gaan we een nieuwe level 1 backup maken. Een level 1 backup onthoudt alleen de gegevens sinds the laatste level 0 of andere level 1 backup. RMAN>BACKUP INCREMENTAL LEVEL 1; We moeten nu nog een recovery catalog database maken. Als je wilt dat deze recovery catalog database nut heeft, dan moet je deze op een andere host, andere schijf zetten en in een andere database zetten dan de gegevens die je wilt backuppen. Zo hou je bij een eventuele crash sowieso je database bij op een andere locatie. Eerst connect je naar de database waarin je je recovery catalog db wilt aanmaken. We veronderstellen dat hierin de tabelspace recovery bestaat. Dan maak je een user voor je recovery catalog voor te kunnen werken met deze tablespace recovery. SQL> CREATE USER rman IDENTIFIED BY rman 2 DEFAULT TABLESPACE recovery 3 TEMPORARY TABLESPACE temp 4 QUOTA UNLIMITED ON recovery; We geven deze user dan de RECOVERY_CATALOG_OWNER rol. SQL> GRANT RECOVERY_CATALOG_OWNER TO rman; Dan geven we hem nog de juiste rechten: SQL> GRANT CONNECT, RESOURCE TO rman; De catalog owner zou nu zelf de catalog moeten maken via hat CREATE CATALOG command binnen de RMAN interface. Op deze manier creëren we de catalog in de default tablespace van de catalog owner. Begin dus met connecteren naar de databank met rman(de catalog owner) as volgt: rman catalog rman/rman Hierna run je het volgende commando: RMAN> create catalog; Nu registeren we de target database in de recovery catalog. De database waarin de recovery catalog zit heet in hier catdb. rman POKERGAME beheerder/beheerder catalog rman/rman@catdb RMAN> register database;
Groep 10
~ 13 ~
TINFO Poker Game
4
Logboek
Maandag 11/01/10 Start lezen opdracht overleg structuur database en nodige items Uitdenken triggers, procedures, scripts Uitdenken rollen + rolbeheer Dinsdag 12/01/10 Uitwerken triggers, procedures, scripts Woensdag 13/01/10 Verbeteren triggers, procedures, scripts trigger voor create session moeten aanpassen omdat er ook gecontroleerd moet worden bij een insert Uitwerken rollen + rolbeheer Schematisch overzicht rollen & gebruikers Administration: controlfiles, tablespace, redolog Donderdag 14/10/10 Rollen verder uitwerken: uitdiepen en ontwerpen van organisatierollen en toepassingsrollen nieuwe rollen gecreëerd om overzichtelijker te werken Administration: backup Worddocument opstellen
Groep 10
~ 14 ~
TINFO Poker Game
5
Bronnen -
Leerboek Oracle SQL – Lex de Haan Leerboek Oracle PL/SQL – Gilbert Rattink Boek Oracle Databasebeheer – Corné Van Den Beemd en Eric Valk
-
http://www.filibeto.org/sun/lib/nonsun/oracle/11.1.0.6.0/B28359_01/backup.111 /b28270/rcmcncpt.htm http://www.orafaq.com/wiki/Oracle_database_Backup_and_Recovery_FAQ#How_ does_one_backup_and_restore_a_database_using_RMAN.3F http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/setup005.ht m
-
Groep 10
~ 15 ~
TINFO Poker Game