oracle survival guide

88
  «When a Crisis is in Porgress, it  is easy to make a simple mistake» Der vorliegende «Oracle Survival Guide» soll helfen, nicht alltägliche (Not)-Situationen im Zusammenhang mit Oracle zu meistern. Es ist kein Lehrbuch, sondern eher ein Leitfaden für System-Administratoren. Datenverlust und deren Wiedergewinnung bilden den Schwerpunkt des Inhalts. Um diese Aufgabe zu erfüllen, muß ein Verständnis der Oracle Architektur vorhanden sein. Aus diesem Grunde werden die wesentli- chen Merkmale von Oracle kurz erläutert. Akadia AG Zieglerstrasse 34 CH-3007 Bern Tel: 031 385 30 15 / Fax: 033 345 02 42 EMail: [email protected]                                                                                                                                                                      

Upload: kruegerit

Post on 08-Jul-2015

177 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 1/88

 

2UDFOH 6XUYLYDO *XLGH

«When a Crisis is in Porgress, itis easy to make a simple mistake»

(LQ 5H]HSWKDQGEXFK I�U QLFKW $OOWlJOLFKHV

Der vorliegende «Oracle Survival Guide» soll helfen, nicht alltägliche(Not)-Situationen im Zusammenhang mit Oracle zu meistern. Es istkein Lehrbuch, sondern eher ein Leitfaden für System-Administratoren.Datenverlust und deren Wiedergewinnung bilden den Schwerpunkt desInhalts. Um diese Aufgabe zu erfüllen, muß ein Verständnis der OracleArchitektur vorhanden sein. Aus diesem Grunde werden die wesentli-chen Merkmale von Oracle kurz erläutert.

Akadia AGZieglerstrasse 34CH-3007 BernTel: 031 385 30 15 / Fax: 033 345 02 42EMail: [email protected]

     ,    Q     I    R    U    P

    D     W     L    R    Q     7    H    F     K    Q    R     O    R    J    \     $     *

     D       N     D       G       L     D

Page 2: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 2/88

 

,QKDOW

1. Oracle Architektur...................................................................... 1

2. Startup und Shutdown der Datenbank ...................................... 3

3. Manipulationen mit Datenbankfiles............................................ 43.1 Datafiles ......................................................................................................4

4.2 Controlfiles ..................................................................................................6

4.3 Redologfiles.................................................................................................9

4.4 Rollbacksegmente.....................................................................................20

5. Tablespaces ............................................................................ 23

6. Segmente ................................................................................ 26

6.1 Datensegmente.........................................................................................28

6.2 Indexsegmente..........................................................................................32

7. Objekte .................................................................................... 35

8. Oracle Prozesstruktur.............................................................. 39

8.1 Architektur .................................................................................................39

8.2 Hintergrundprozesse.................................................................................41

9. Multi-Threaded Server und SQL*Net 2.................................... 43

9.1 Multi-Threaded Server...............................................................................43

9.2 SQL*Net Version2 .....................................................................................46

10. Oracle Datendictionary............................................................ 51

11. Datenintegrität (Integrity Constraints)...................................... 52

12. Distributed Databases ............................................................. 5412.1 Verteilungsarten ........................................................................................54

12.2 Transparenz ..............................................................................................54

12.3 Manipulationen mit verteilten Daten..........................................................55

13. Transaktionskontrolle .............................................................. 57

14. Database Access..................................................................... 5914.1 Privilegien..................................................................................................59

14.2 Roles .........................................................................................................63

14.3 Datenbank Benutzer als OPS$User einrichten .........................................64

15. Export / Import ......................................................................... 65

16. Backup und Recovery ............................................................. 69

16.1 Online Backup...........................................................................................7116.2 Recovery ...................................................................................................74

Page 3: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 3/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 1 von 86

1. 2UDFOH$UFKLWHNWXU 

'HGLFDWHG6HUYHU  Eine Oracle Datenbank besteht physikalisch aus einem fest alloziertenShared-Memory, der sogenannten SGA (System Global Area) und denDatenbankfiles. Im Umgang mit Oracle befasst man sich aber mehrheitlichmit logischen Größen wie Tablespaces, Segmenten usw.

.XU]EHVFKULHE Wird eine Oracle Datenbank mittels VYUPJUOVWDUWXS gestartet, so wird alserstes im Memory des Rechners Speicherplatz alloziert. Damit ist dieInstance (Aktive SGA) mit den Bereichen Database Buffer Pool, SharedPool und Redolog Buffer Cache aktiv. Eine Kontrolle der SGA kann mit

dem Kommando LSFVP oder aus SVRMGRL mittels VKRZVJD vorge-nommen werden. Zusammen mit dem Kreieren der SGA erfolgt auch dasAufstarten der Oracle Background-Prozesse DBWR, PMON, SMON undLGWR. Der Online-Backup Archiver ARCH wird nur gestartet wenn dieDatenbank im ARCHIVELOG Modus betrieben wird. Als zweiten Schrittbeim Datenbank-Startup erfolgt das Öffnen der Controlfiles, (mounten derDatenbank). Die Controlfiles enthalten statische Informationen der Daten-bank wie Datenbank-Name, Datenbank-Files, Sequenz-Nummern derOffline Redolog Files usw. Als letzten Schritt erfolgt das Öffnen der Daten-bank- und Redolog-Files (öffnen der Datenbank). Damit ist die Datenbankbetriebsbereit und Userprozesse können gestartet werden. Auf einer Work-station können gleichzeitig mehrere Datenbanken gleichzeitig aktiv

existieren. Um eine bestimmte Datenbank zu nutzen, muß die Umge-bungsvariable ORACLE_SID auf den gewünschten Datenbanknameneingestellt werden.

System

Rollback

IndexesOnline

Control-Files

Temporary

UserShadowProzess

DBWR PMON SMON LGWR ARCH

Data

Datenbank-FilesRedolog-Files

UserProzess

OfflineRedolog-Files

Instance

ProzesseRECO

Buffer Cache Redolog Cache

Shared SQL Area

PL/SQL Proceduresand Packages

Library Cache

6 K D U H G 3 R R O  

Dictionary Cache

Page 4: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 4/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 2 von 86

'DWHQEDQN6WUXNWXU 

Oracle unterscheidet zwischen logischen Größen (Tablespace, Segmente)und physikalischen Größen (Files, Extents, Blocks). Die physikalischenGrößen werden beim Spezifizieren der logischen Größen angegeben(CREATE ...). Segmente sind Tables, Indexe, Rollback- und temporäreSegmente sowie Cluster. Oft wird dazu auch der Begriff Datenbank-Objekt

benutzt.

• Ein Tablespace kann sich über mehrereDatenbank Files erstrecken

• Idealzustände:1 Tablespace <-> 1 Datenbank-File.1 Segment <-> 1 Extent.

• Rows sollten nicht auf zwei Blocks verteiltsein (Row-Chaining).

• Oracle Block Größe wird in LQLWRUD mit'%B%/2&.B6,=( spezifiziert.

Datenbank-Files

Rollback-Segment

      N    e    x     t   -      E    x     t    e    n     t

Daten-Segment (Table)

Oracle-Block

Oracle-Block

Oracle-Block

Oracle-Block

Oracle-Block

Oracle-Block

Extent

Oracle-Block

      H    e    a      d    e    r

      T    a      b      l    e   -      D      i    r    e    c     t    o    r    y

      R    o    w   -      D      i    r    e    c     t    o    r    y

Row

Oracle-Row

Row-Overhead

Number ofColumns

ClusterKey Rowid

ColumnLength

ColumnData

ColumnLength

ColumnData

Index-Segment

Tablespace

      N    e    x     t   -      E    x     t    e    n     t

      N    e    x     t   -      E    x     t    e    n     t

      I    n      i     t      i    a      l   -      E    x     t    e    n     t

Free-Space (PCTFREE)

Daten-Segment

Page 5: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 5/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 3 von 86

2. 6WDUWXSXQG6KXWGRZQGHU'DWHQEDQNDas Starten und Stoppen einer Datenbank gehört zu den privilegiertestenKommandos und kann deshalb nur von System privilegierten DBA’s durch-geführt werden (gehören der UNIX Group GED an).

=XVWlQGH Man kennt grundsätzlich 3 Zustände, nomount, mounted und open.

System Global Area (SGA)

DBWR PMON SMON LGWR

Control

System Global Area (SGA)

DBWR PMON SMON LGWR

Redolog

Data

Control

System Global Area (SGA)

DBWR PMON SMON LGWR

Redolog

Data

nomounetd

SVRMGRL> VWDUWXS QRPRXQW

mounetd

SVRMGRL> VWDUWXS PRXQW

open

SVRMGRL> VWDUWXS

• Kreieren einer Datenbank

• Add, Drop, Rename vonDatenbankfiles.

• Wechseln zwischen

ARCHIVELOG undNONARCHIVELOG

• Normaler Betrieb

Page 6: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 6/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 4 von 86

3. 0DQLSXODWLRQHQPLW'DWHQEDQNILOHV

3.1 Datafiles

Oracle Datafiles sind normale UNIX-Files, welche vollständig unter derKontrolle des Oracle Kernels stehen. Es wird nie direkt aus einem Userpro-zess in ein Datenbankfile geschrieben oder gelesen.

8PEHQHQQHQ9HUVFKLHEHQYRQ'DWHQEDQNILOHV

Damit können bestehende Datenbankfiles umbenennt oder in ein anderesDirectory verschoben werden.

VYUPJUOFRQQHFWLQWHUQDOVWDUWXSPRXQW (Instance und Controlfiles aktiv)FG25$&/(B+20(NXUV PYXVU%GEIXVHUV%GEIDOWHUGDWDEDVHUHQDPHILOH¶ROG¶WR¶QHZ¶DOWHUGDWDEDVHRSHQ (Datenfiles aktiv)

2IIOLQHVWHOOHQYRQ

'DWHQEDQNILOHV

Damit kann ein defektes oder verloren gegangenes Datenbankfile aus der

Datenbank entfernt werden (... Verlust verkraftbar). Dies gilt nicht fürDatenfiles, die den System Tablespace oder Rollbacksegmente enthalten.

VYUPJUOFRQQHFWLQWHUQDOVWDUWXSPRXQWDOWHUGDWDEDVHDUFKLYHORJDOWHUGDWDEDVHGDWDILOH¶;;;GEI¶RIIOLQHDOWHUGDWDEDVHQRDUFKLYHORJDOWHUGDWDEDVHRSHQ

Ein Zugriff auf Tablespacedaten in diesem File ist nicht mehr möglich. DieDatenbank kann nun ohne das Datenfile betrieben werden.

9HUOXVWYRQ'DWHQEDQNILOHV

Wird die Datenbank im NOARCHIVELOG Mode betrieben, so verliert mandie Transaktionen seit dem letzten «Cold-Backup». Es gibt nun zwei Mög-lichkeiten, den alten Zustand wieder herzustellen:

Variante 1 Backup aller Files incl. Control und Redologs auf einenälteren Zustand.

Variante 2 Controlfiles neu erstellen, dabei wird das verlorene Datenbank-file nicht mehr erwähnt, man hat einen neueren Zustand aberohne das verlorene Datenbankfile.

VYUPJUO

VWDUWXSQRPRXQWFUHDWHFRQWUROILOHGDWDEDVH%ORJILOH JURXS ¶RUDFOHNXUVORJBJURXSB%GEI¶

¶RUDFOHNXUVORJBJURXSB%GEI¶VL]HNJURXS ¶RUDFOHNXUVORJBJURXSB%GEI¶

¶RUDFOHNXUVORJBJURXSB%GEI¶VL]HNQRUHVHWORJV

GDWDILOH ¶RUDFOHNXUVV\VW%GEI¶VL]H0¶RUDFOHNXUVUEV%GEI¶VL]H0¶RUDFOHNXUVWHPS%GEI¶VL]H0

DOWHUGDWDEDVHRSHQ

Die Datenbank kann ohne die Datenbankfiles WRROVGEI und XVHUVGEI  betrieben werden. Die Tablespaces sind noch aktiv und müssen nun noch

gelöscht werden. Mit NORESETLOGS wird der Inhalt der Online RedologFiles beachtet. Die Tablespaces werden nun im Controlfile und im Data-dictionary als "MISSING" deklariert und müssen noch gelöscht werden.

Page 7: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 7/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 5 von 86

Zustand der Datenbankfiles vor dem Löschen der Tablespaces

Datafiles in Data Dictionary (View: dba_data_files)

Tablespace Datafile File-ID [KB] Status---------- -------------------------------------- ------- ----------- ---------SYSTEM /oracle7/kurs/systB.dbf 1 5,243 AVAILABLE

RBS /oracle7/kurs/rbsB.dbf 2 2,097 AVAILABLETEMP /oracle7/kurs/tempB.dbf 3 2,097 AVAILABLETOOLS MISSING0004 4 2,097 AVAILABLEUSERS MISSING0005 5 2,097 AVAILABLE

Datafiles in Controlfile (Table: v$dbfile)

Datafile File-ID---------------------------------------- -------/oracle7/kurs/tempB.dbf 3/oracle7/kurs/rbsB.dbf 2/oracle7/kurs/systB.dbf 1MISSING0004 4MISSING00055

Entfernen der Tablespaces aus dem Controlfile und DataDictionary.

VYUPJUOFRQQHFWLQWHUQDOGURSWDEOHVSDFHWRROVLQFOXGLQJFRQWHQWVGURSWDEOHVSDFHXVHUVLQFOXGLQJFRQWHQWV

Zustand der Datenbankfiles nach dem Löschen der Tablespaces

Datafiles in Data Dictionary (View: dba_data_files)

Tablespace Datafile File-ID [KB] Status---------- -------------------------------------- ------- ----------- ---------SYSTEM /oracle7/kurs/systB.dbf 1 5,243 AVAILABLERBS /oracle7/kurs/rbsB.dbf 2 2,097 AVAILABLETEMP /oracle7/kurs/tempB.dbf 3 2,097 AVAILABLE

Datafiles in Controlfile (Table: v$dbfile)

Datafile File-ID---------------------------------------- -------/oracle7/kurs/tempB.dbf 3/oracle7/kurs/rbsB.dbf 2/oracle7/kurs/systB.dbf 1

Damit sind die korrupten Datenbankfiles endgültig aus der Datenbank eli-miniert und der Inhalt der Controlfiles stimmt mit dem Datendictionarywieder überein.

Beachte:

Um Controlfiles neu anlegen zu können muss die Struktur der Daten-bank exakt bekannt sein. Es empfiehlt sich also dringend diese fürNotfälle zu dokumentieren !

Page 8: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 8/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 6 von 86

4.2 Controlfiles

Controlfiles beinhalten statische Informationen der Datenbank. MittelsVWDUWXSPRXQW werden die Controlfiles geöffnet. Es sind immer minde-stens zwei Controlfiles auf verschiedenen Disks anzulegen. Der aktuelleInhalt der Controlfiles sollte unbedingt dokumentiert werden um im Falleeines

Verlustes die Datenbank neu initialisieren zu können.

Inhalt der Controlfiles VHOHFWVXEVWUQDPHILOHIURPYGEILOH

SUBSTR(NAME,1,30) FILE#------------------------------ ----------/oracle7/kurs/systB.dbf 1/oracle7/kurs/rbsB.dbf 2/oracle7/kurs/tempB.dbf 3/oracle7/kurs/toolB.dbf 4/oracle7/kurs/usrB.dbf 5

VHOHFWVXEVWUPHPEHUJURXSVWDWXVIURPYORJILOH

SUBSTR(MEMBER,1,30) GROUP# STATUS------------------------------ ---------- -------/oracle7/kurs/log_group1_1B.db 1/oracle7/kurs/log_group1_2B.db 1/oracle7/kurs/log_group2_1B.db 2/oracle7/kurs/log_group2_2B.db 2

Im Datendictionary erfolgt das Mapping zwischen den im Controlfile ver-merkten Datenbankfiles und den zugeordneten Tablespaces:

Tablespace Mappingauf Datenbankfiles

VHOHFWVXEVWUWDEOHVSDFHBQDPHVXEVWUILOHBQDPHILOHBLGE\WHVE\WHV

VWDWXVIURPGEDBGDWDBILOHVRUGHUE\ILOHBLG

SUBSTR(TAB SUBSTR(FILE_NAME,1,30) FILE_ID BYTES STATUS---------- --------------------------- -------- -------- ---------SYSTEM /oracle7/kurs/systB.dbf 1 7340.032 AVAILABLERBS /oracle7/kurs/rbsB.dbf 2 3145.728 AVAILABLETEMP /oracle7/kurs/tempB.dbf 3 1048.576 AVAILABLETOOLS /oracle7/kurs/toolB.dbf 4 1048.576 AVAILABLEUSERS /oracle7/kurs/usrB.dbf 5 1048.576 AVAILABLE

9HUOXVWHLQHVRGHUPHKUHUHU&RQWUROILOHV

LP12$5&+,9(/2*0RGH

Da Controlfiles keine dynamischen Daten enthalten können gesicherteControlfiles unter UNIX zurückkopiert werden. Dies jedoch nur wenn die

DB im NOARCHIVELOG Mode betrieben wird.

 PYFWUO%FWOWPSVYUPJUOVWDUWXS

ORA-00205: error in identifying control file ’/oracle7/kurs/ctrl1B.ctl’ORA-07360: sfifi: stat error, unable to obtain information about file.HP-UX Error: 2: No such file or directoryAttempting to shutdown instance........ORACLE instance shut down.

 PYWPSFWUO%FWOVYUPJUOVWDUWXS

Datenbank startet wieder normal.

Page 9: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 9/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 7 von 86

9HUOXVWDOOHU &RQWUROILOHVLP12$5&+,9(/2*0RGH

Verliert man alle Controlfiles und es existiert kein Backup eines Controlfi-les, so können diese nach eigenen Angaben neu erstellt werden. Eineweitere wichtige Anwendung wäre die Rettung einer Datenbank, falls maneinen Tablespace oder Datafile verloren hat und über kein Backup-Konzeptmit ARCHIVER verfügt, die Datenbank aber ohne diesen verlorenen Table-space noch retten möchte. Man muß jedoch über die Datenbank genaueAngaben der Files und deren Größen haben.

Verlust aller Controlfiles, Offline Backupkonzept, alle Datenbankfiles undRedologs sind vorhanden und intakt:

VTOGEDOPRGHWUXHFRQQHFWLQWHUQDOVWDUWXSQRPRXQWFUHDWHFRQWUROILOHGDWDEDVH%ORJILOHJURXSRUDFOHNXUVORJBJURXSB%GEIRUDFOHNXUVORJBJURXSB%GEIVL]HNJURXSRUDFOHNXUVORJBJURXSB%GEIRUDFOHNXUVORJBJURXSB%GEIVL]HNUHVHWORJV

GDWDILOHRUDFOHNXUVV\VW%GEIVL]H0RUDFOHNXUVUEV%GEIVL]H0RUDFOHNXUVWHPS%GEIVL]H0RUDFOHNXUVWRRO%GEIVL]H0RUDFOHNXUVXVU%GEIVL]H0DOWHUGDWDEDVHDUFKLYHORJDOWHUGDWDEDVHRSHQUHVHWORJVGLVFRQQHFWVKXWGRZQ

Die Controlfiles welche im Datenbank-Konfigurationsfile LQLW25$6,'!RUD vermerkt sind werden automatisch wieder erstellt (control_files = ...). DasFile LQLW25$6,'!RUDmuß somit nicht editiert werden.

Mit der Option UHVHWORJV wird der ,QKDOWGHVDNWXHOOHQ5HGRORJ)LOHVLJQRULHUW. Das erstellte Controlfile enthält ein Flag, damit die Datenbankmittels DOWHUGDWDEDVHRSHQUHVHWORJVgeöffnet werden kann.

Voraussetzung dazu ist jedoch, dass die Datenbank im ARCHIVE Modebetrieben wird. Deshalb muß XQPLWWHOEDUQDFK dem Kreieren der Daten-bank das Kommando DOWHUGDWDEDVHDUFKLYHORJ ; ausgeführt werden. Wirddie OptionQRUHVHWORJV gewählt, so erfolgt ein Recovery mit allen archivier-ten Redolog Files.

:HLWHUH&RQWUROILOHV

]XU'DWHQEDQNKLQ]XI�JHQ

Es sollten immer mindestens 2 Controlfiles auf verschiedenen Disks vor-

handen sein. Diese werden von Oracle simultan verwaltet. Vorgehen umein weiteres Controlfile hinzuzufügen:

File init<ORASID>.ora editieren, weiteres Controlfile einfügenVYUPJUOVKXWGRZQUmkopieren eines Controlfiles mittels UNIX KommandoVYUPJUOVWDUWXS

'DWHQEDQN'RNXPHQWDWLRQ

Um ein Controlfile mittels &5($7(&21752/),/( zu erstellen mussdie Datenbankstruktur bekannt sein. Man kann auf einfache Weise dasgesamte&5($7(&21752/),/(Statement generieren. Damit wird imDUMP_DEST Directory ein Script mit dem aktuellen &5($7(&21752/),/( Statement generiert.

VYUPJUOFRQQHFWLQWHUQDODOWHUGDWDEDVHEDFNXSFRQWUROILOHWRWUDFH

Page 10: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 10/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 8 von 86

:LFKWLJVWH3XQNWH]X&RQWUROILOHV

Nachfolgend die wichtigsten Punkte betreffend Controlfiles

• Inhalt der Controlfile :- Namen der Datenbankfiles- Checkpoint Information aus Redologfile- On/Offline Status der Tablespaces- Log Sequence Nummer (ARCHIVELOG)

• Mindestens ein Controlfile muß immer online sein• Ohne Controlfile kann die Datenbank nicht gestartet werden

• Im ARCHIVELOG Mode muss ein Controlfile mittelsDOWHUGDWDEDVHEDFNXSFRQWUROILOHWR gesichert werden, damit dieseskonsistent ist. Das so erstellte Controlfile kann dann mit normalen UNIXKommandos gesichert werden.

• Mittels FUHDWHFRQWUROILOH kann ein neues Controlfile erstellt werden(Katastrophenfall). Dazu muss allerdings die exakte Struktur der Daten-bank bekannt sein.

• Optimal sind zwei Controlfiles auf verschiedenen Disks.

Page 11: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 11/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 9 von 86

4.3 Redologfiles

Redologfiles Redologfiles sichern die Datenbank vor «Media failures», sie beinhaltenalle Datenbank Änderungen. Sobald eine Transaktion abgeschlossen ist(«commited»), schreibt der OJZU Prozess die Redolog Buffer ins Redolog-file. Während einem Recovery werden die Redologfiles zurückappliziert bisalle «commited» Transaktionen wieder hergestellt sind (Rollforward).

Rollbacksegmente Rollbacksegmente beinhalten die Änderungen einer Transaktion, solangediese noch nicht abgeschlossen ist («uncommited»). Rollbacksegmentehaben zwei Aufgaben zu erfüllen

Gewährleistung derLesekonsistenz

Jeder Benutzer sieht die Daten so wie zu Beginn der Transaktion, eventu-elle Änderungen während der Transaktion durch einen anderen Benutzersieht er nicht. Dies hat den großen Vorteil, dass Oracle dadurch nichtganze Tables locken muß.

Rollback von uncom-mited Transaktionen

Bei abgebrochenen Transaktionen werden die Rollbacksegmente benutztum die Transaktion rückgängig zu machen. Nach jedem Recovery mit

einem Rollforward der Redologfiles folgt ein Rollback der Rollbackseg-mente. Das heißt «uncommited» Transaktionen werden rückgängiggemacht.

$EODXIHLQHV83'$7(PLWHLQHP&RPPLW

Nachfolgend der Ablauf eines UPDATE mit nachfolgendem COMMIT

1. User Shadowprozess liest den benötigten Block aus dem Datenbankfile in dieSGA, sofern sich dieser nicht schon dort befindet.

2. Alter Wert = «Meier» wird in Rollbacksegment Buffer in der SGA für eventuelleRollbacks gesichert.

3. Alter und neuer Wert wird im Redobuffer eingetragen, gleichzeitig wird der Da-tenbuffer mit dem neuen Wert überschrieben.

4. Erfolgt das COMMIT so wird der Redobuffer vom OJZU  in das freie Redo-Entry

im aktiven Redologfile geschrieben.5. Irgendwann gemäß LRU Algorithmus schreibt der GEZU den Daten- und Roll-

backbuffer in die Table bzw. in das Rollbacksegment auf der Disk.

Online

System Global Area (SGA)

User

LGWR

Redolog’s

DB-Buffer Redo-Buffer DD-Cache

DBWRShadowProzess

Data-Tablespace RollbacksegmentTablespace

«Meier»

«Meier»

«Hadorn»

«Meier»

«Hadorn»

«Meier»«Hadorn»

«Meier»

 

Commit

inaktiv

aktiv

Rollback Segment

deferredwrite

1

neuer Wert

alter Wert

2

3

4

5

Redo

Entry

Ì update empset name = ‘Hadorn’where ename = ‘Meier’

Ì commit

Page 12: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 12/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 10 von 86

$EODXIHLQHV&RPPLW IUUW�POLFKZLUGRIWDQJHQRPPHQGDVVEHLHLQHP&200,7GLHJHlQGHUWHQ'DWHQEXIIHUYRPGEZU LQGLH'DWHQEDQNILOHV�EHUWUDJHQZHUGHQ

Dies ist nicht der Fall !

Bei einem COMMIT werden die Redobuffer vom OJZU  in das aktive Redo-logfile übertragen. Bei vielen Transaktionen kann es also sein, dass derOJZU der aktivste Prozess ist und dass die Redologfiles sehr oft geschrie-ben werden. Deshalb sollten die Redologfiles auf einer sehr schnellen Diskplaziert werden um eine optimale Performance zu erreichen. Damit jedochauch der GEZU Prozess dazu veranlaßt wird die geänderten Datenbufferauf die Disk zu schreiben verwendet Oracle den Checkpoint Mechanismus(siehe auch Prozesse GEZU und OJZU ).

LGWR

DB-Buffer Redo-Buffer

Data-Tablespace

«neu»

«neu» «Meier»

«neu»

«alt»

CommitRedoEntry

Rollback-Buffer

LGWR«neu» «Meier»

«neu»

«alt»

Commit

LGWR«neu»

«neu»

«alt»

Commit

dbwr

Redobuffer werden synchron in Redo-log geschrieben

Rollbackbuffer in SGA freigeben, inclLocks. Eventuell bereits in DB-Filegeschriebener Rollbackeintraglöschen.

Datenbuffer wird später durch LRUMechanismus in Datenbankgeschrieben.

Page 13: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 13/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 11 von 86

$EODXIHLQHV5ROOEDFN Durch das SQL Kommando ROLLBACK werden alle Transaktionen welchenicht commited sind rückgängig gemacht. Dazu werden die Rollbackbufferaus den Rollbacksegmenten in der SGA wieder erstellt und der Rollbackwird durchgeführt.

Beachte:

DB-Buffer Redo-Buffer

Data-Tablespace

«neu»

Rollback-Buffer

«neu»

«alt»

Uncommited

pmon

Laden der bereits geschriebenen Buffer in die SGA, Rollbackbuffer aus Roll-backsegmenten, Redobuffer aus Redologfile und Datenbuffer aus Tabelle.

Rollback-Tablespace

«alt»

«neu»

Rolledback

Rollback in der SGA durchführen, Redobuffer werden vertauscht und miteinem «rolled back» Record versehen. Der alte Wert im Rollbackbuffer wird inden Datenbuffer übertragen, er überschreibt den Wert des Datenbuffers.

«alt»«neu»

Data-Tablespace

dbwr

DerG E Z U  

Prozess schreibt den alten Wert in die Datenbank zurück, gleichzeitigschreibt auch der

O J Z U  

seinen Redobuffer ins aktive Redofile. «alt»«neu»

Rolledback

«alt»

lgwrMeldung an lgwr

«Schreibe Buffer !»

«alt»

Das Redolog File gewährt in jedem Fall die Konsitenz, indem jederRedobuffer gekennzeichnet ist mit «commited», «uncommited» oder«rolled back»

Page 14: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 14/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 12 von 86

2QOLQH5HGRORJ)LOHV Es müssen mindestens zwei Redologfiles vorhanden sein, das aktive(Online) und das inaktive (Offline). Redologfiles sollten aus PerformanceGründen alle die gleiche Größe aufweisen.

Größe derRedologfiles:

Große Redologfiles mit entsprechend großemLOG_CHECKPOINT_INTERVAL reduzieren die Anzahl Checkpoints. DieDatenbuffer bleiben also länger in der SGA, was eine entsprechend große

SGA voraussetzt. Eine Instance Recovery dauert dementsprechend län-ger, da alle Transaktionen seit dem letzten Checkpoint zurückappliziertwerden müssen. Die Größe der Redologfiles ist also abhängig von dergewünschten Performance und der zumutbaren Recoveryzeit beim Starteiner abgestürzten Datenbank. Als Mittelwert kann eine Größe von 500K -800K angenommen werden. Die Größe sollte 5M nicht überschreiten.

Checkpoints Nachdem eine bestimmte Anzahl Redobuffer vom OJZU in das Online Redo-logfile geschrieben wurden, erfolgt ein sogenannter Checkpoint. Der GEZU  Prozess wird veranlaßt alle modifizierten Daten- und Rollbackbuffer in dieFiles zu schreiben, unabhängig ob die Buffer «commited» oder «uncom-

mited» sind. Checkpoints gewährleisten also, dass auch oft benutzte SGABuffer regelmäßig auf die Disk geschrieben werden, da diese bedingtdurch den LRU Algorithmus möglicherweise gar nie geschrieben würden!Die Folge der Checkpoints kann durch den LQLWRUD ParameterLOG_CHECKPOINT_INTERVAL eingestellt werden.

Berechnungsbeispiel für LOG_CHECKPOINT_INTERVAL

• Größe Redologfile = 800 KByte• UNIX Diskblock Size = 512 Byte• Checkpoint soll erfolgen wenn Redolog zur Hälfte gefüllt ist.

LOG_CHECKPOINT_INTERVAL = 800000 / (2 * 512) = 780

In Oracle7 existiert neu der Parameter LOG_CHECKPOINT_TIMEOUT,mit dem der Checkpoint zeitgesteuert veranlaßt werden kann. Er wird vor-allem bei Parallel Server Implementationen benutzt.

LOG_CHECKPOINT_INTERVAL =Grösse der Redologfiles

Interval * Diskblock Size

Grösse des Redologfiles = 800 K

400 K 400 K

Checkpoint Checkpoint

Page 15: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 15/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 13 von 86

Wann erfolgenCheckpoints ?

Checkpoints garantieren, dass in bestimmten Abständen alle DB-Buffervom LGWR auf die Datenbankfiles geschrieben werden. Der Zeitpunkt desCheckpoints ist auch für das Recovery sehr wichtig, indem alle Redolog-Entries, die älter sind als der Checkpoint für ein Instance Recovery nichtmehr benötigt werden. Das heisst, häufigere Checkpoints ermöglicheneine kürzere Instance Recovery Zeit. Checkpoints führen jedoch zu einemgewissen Overhead und können die Performance verschlechtern. Wann

erfolgen aber Checkpoints ?• Bei einem Log-Switch des Redolog-Files. Ist ein Checkpoint «in pro-

gress», so überschreibt ein Checkpoint ausgelöst durch einen Log-Switch diesen «running» Checkpoint.

• Der init.ora Parameter LOG_CHECKPOINT_INTERVAL kann so einge-stellt werden, dass nach einer gewissen Anzahl Redolog-Buffer einCheckpoint ausgelöst wird. Sinnvoll bei sehr grossen Redolog-Files.

• Ein BEGIN BACKUP löst immer einen Checkpoint auf den durch denBackup betroffenen Tablespace bzw. dessen File(s) aus.

• Ein ALTER TABLESPACE ts-name OFFLINE NORMAL / TEMPORARYlöst immer einen Checkpoint auf den durch ALTER betroffenenTablespace bzw. dessen File(s) aus.

• Bei einem SHUTDOWN (NORMAL oder IMMEDIATE).

• Bei einem manuellen CHECKPOINT, DOWHUV\VWHPVZLWFKORJILOH;

Logswitch Beim Wechsel des Redologfiles = Logswitch erfolgt immer ein Checkpoint.Soll also nur am Ende des Redologfiles ein Checkpoint erfolgen, so kannder LOG_CHECKPOINT_INTERVAL Parameter entsprechend großgesetzt werden. Bei einer Größe des Redologfiles von 800KByte also min-

destens 800000 / (1 * 512) = 1562. Bei kleinen Redologfiles reicht einCheckpoint bei jedem Logswitch, bei grossen Redologfiles sollte man sichüber die zulässige Recoveryzeit Gedanken machen und eventuell einentieferen LOG_CHECKPOINT_INTERVAL verwenden.Wird der Parameter also ca. auf die doppelte Größe des Redologfilesgesetzt, so erfolgt nur am Ende des Redologfiles ein Checkpoint

Ein Logswitch bezeichnet den Wechsel des aktiven Redologfiles.

Unmittelbar nach einem Logswitch beginnt ein Checkpoint. Während die-ser Zeit werden beide Redologfiles für ein eventuelles Instance-Recoverybenötigt. Erst zum Zeitpunkt «Ende Checkpoint» wird das inaktive Redo-logfile durch den Archiver archiviert.

Log-SwitchRedo-Entries

Redologfile Nr 2

Redologfile Nr 1

Beginn CheckpointEnde Checkpoint

Page 16: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 16/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 14 von 86

0DQXHOOHU/RJVZLWFK Ein Logswitch kann auch manuell durchgeführt werdenDOWHUV\VWHPVZLWFKORJILOH

Protokoll imDOHUWORJ 

Thread 1 advanced to log sequence 186Current log# 2 seq# 186 mem# 0: /oracle7/kurs/log_group2_1B.dbfCurrent log# 2 seq# 186 mem# 1: /oracle7/kurs/log_group2_2B.dbf

0DQXHOOHU&KHFNSRLQW DOWHUV\VWHPFKHFNSRLQW

Vom manuellen Checkpoint erfolgt kein Eintrag im DOHUWORJ .

*HVSLHJHOWH5HGRORJILOHV

Unter Oracle7 wurde mit der Einführung von multiplexed Redologs eine dergrößten Schwachstellen von Version 6 eliminiert. Verlor man unter Version6 das aktive Redologfile, so verlor man zwingend sämtliche Transaktionen(commited, uncommited, rolled back) des aktiven Redologfiles, das trotzOnlinebackupkonzept. Besonders schlimm war es, dass auch Transaktio-nen die commited wurden verloren gingen, GDLPPHUGDV5HGRORJILOHGLH.RQVLVWHQ]JHZlKUOHLVWHWDies war für viele kritische Applikationen unzulässig und so wurde Oraclelange Zeit für solche Aufgaben nicht gewählt. Viele grosse Anwenderumgingen diesen Mangel, indem sie die Redologfiles auf Betriebssystem-ebene spiegelten (zB VMS):

Konzept Mehrere gleichzeitig beschriebene Redologs werden «Group» genannt.Solange ein «Member» einer Group verfügbar ist, arbeitet das System nor-mal weiter. Meldungen werden ins DOHUWORJ geschrieben. Groups werdenfortlaufend durchnumeriert, die Groups erhalten eine eindeutige Nummerals Identifikation. Alle Groups sollten die gleiche Anzahl Members aufwei-sen, die Members einer Group sollten wenn möglich auf verschiedenenphysikalischen Disks liegen. Alle Members einer Group müssen die gleiche

Grösse haben.

Online

System Global Area (SGA)

LGWR

Redologs

Member 1

Member 2

OfflineRedologs

Member 1

Member 2

Group 1 Group 2

Page 17: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 17/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 15 von 86

.UHLHUHQYRQ5HGRORJ*URXSVEHLP&5($7('$7$%$6(

Redolog Gruppen werden grundsätzlich beim CREATE Database ange-legt, sie können aber auch zu einem späteren Zeitpunkt erweitert werden.

FUHDWHGDWDEDVH% PD[LQVWDQFHV PD[ORJILOHVFKDUDFWHUVHW:('(&ORJILOH JURXSRUDFOHNXUVORJBJURXSB%GEI

RUDFOHNXUVORJBJURXSB%GEIVL]HNJURXSRUDFOHNXUVORJBJURXSB%GEIRUDFOHNXUVORJBJURXSB%GEIVL]HN

GDWDILOH RUDFOHNXUVV\VW%GEIVL]H0

1HXH*URXSVSlWHUKLQ]XI�JHQ

Eine neue Group kann bei laufendem System hinzugefügt werden:DOWHUGDWDEDVH%DGGORJILOHJURXSRUDFOHNXUVORJBJURXSB%GEIRUDFOHNXUVORJBJURXSB%GEIVL]H.

9HUOXVWHLQHV*URXS0HPEHUV

Das System arbeitet normal weiter, im DOHUWORJ und OJZUWUF erfolgt einEintrag.

UPRUDFOHNXUVORJBJURXSB%GEIVYUPJUOFRQQHFWLQWHUQDODOWHUV\VWHPVZLWFKORJILOH(Logswitch manuell auslösen)

Eintrag im alert.log

Fri Oct 6 08:55:01 1995Errors in file /oracle7/rdbms/log/lgwr_1089.trc:ORA-00321: log 1 of thread 1, cannot update log file headerORA-00312: online log 1 thread 1: ’/oracle7/kurs/log_group1_2B.dbf’Fri Oct 6 08:55:01 1995Errors in file /oracle7/rdbms/log/lgwr_1089.trc:ORA-00313: open failed for members of log group 1 of thread 1Thread 1 advanced to log sequence 187

Neben den Trace- und Alertfiles kann auch die Tabelle YORJILOH abgefragtwerden:

VHOHFWJURXSVWDWXVVXEVWUPHPEHUIURPYORJILOH

GROUP# STATUS SUBSTR(MEMBER,1,30)---------- ------- ------------------------------

1 /oracle7/kurs/log_group1_1B.dfb1 INVALID /oracle7/kurs/log_group1_2B.dbf2 /oracle7/kurs/log_group2_1B.dbf

2 /oracle7/kurs/log_group2_2B.dbf

*URXS0HPEHUHUVHW]HQ

Zuerst muss der invalid Member gedropped werden bevor dieser wiederhinzugefügt werden kann. Eventuell muss ein manueller Logswitch durch-geführt werden wenn die Group gerade aktiv ist.

DOWHUGDWDEDVH%GURSORJILOHPHPEHURUDFOHNXUVORJBJURXSB%GEI

ORA-01609: log 1 is the current log for thread 1 - cannot dropORA-01517: log member: ’/oracle7/kurs/log_group1_2B.dbf’

DOWHUV\VWHPVZLWFKORJILOH

DOWHUGDWDEDVH%DGGORJILOHPHPEHURUDFOHNXUVORJBJURXSB%GEIWRJURXS

Page 18: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 18/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 16 von 86

&/($5/2*),/( Als Alternative kann man kann dazu auch das Kommanda ALTERDATABASE CLEAR LOGFILE benutzen.

-rw-r----- 1 oracle dba 5243392 Mar 18 07:16 TOL2_log1A.rdo-rw-r----- 1 oracle dba 5243392 Mar 18 07:16 TOL2_log1B.rdo-rw-r----- 1 oracle dba 5243392 Mar 18 07:16 TOL2_log2A.rdo-rw-r----- 1 oracle dba 5243392 Mar 18 07:16 TOL2_log2B.rdo

rm TOL2_log2B.rdo

VYUPJUOFRQQHFWLQWHUQDOVHOHFWIURPYORJILOH

GROUP# STATUS MEMBER---------- ------- -------------------------------------------

1 /opt/oracle/oradata/TOL2/rdo/TOL2_log1A.rdo1 /opt/oracle/oradata/TOL2/rdo/TOL2_log1B.rdo2 /opt/oracle/oradata/TOL2/rdo/TOL2_log2A.rdo2 ,19$/,' /opt/oracle/oradata/TOL2/rdo/TOL2_log2B.rdo

DOWHUV\VWHPVZLWFKORJILOHDOWHUGDWDEDVHFOHDUORJILOHJURXSVHOHFWIURPYORJILOH

GROUP# STATUS MEMBER---------- ------- -------------------------------------------

1 /opt/oracle/oradata/TOL2/rdo/TOL2_log1A.rdo1 /opt/oracle/oradata/TOL2/rdo/TOL2_log1B.rdo2 /opt/oracle/oradata/TOL2/rdo/TOL2_log2A.rdo2 /opt/oracle/oradata/TOL2/rdo/TOL2_log2B.rdo

Das Logfile TOL2_log2B.rdo wurde komplett neu angelegt. CLEAR LOG-FILE GROUP entspicht einem Dropping und Adding einer Gruppe. DasKommando kann auch benutzt werden wenn nur zwei Gruppen vorhandensind. CLEAR LOGFILE kann nicht benutzt werden, wenn die Gruppe ein

Media Recovery benötigt. Dies kann mit der View 95(&29(5B),/( kon-trolliert werden.

*URXSO|VFKHQ Eine gesamte Gruppe kann ebenfalls gelöscht werden, dies sit nur möglichfür inaktive Gruppen, dazu muss mit alter system switch logfile auf eineandere Gruppe wechseln.

DOWHUGDWDEDVHGURSORJILOHJURXS

Beachte: Oracle merkt wenn nur noch zwei Gruppen vorhanden sind, undverhindert ein Löschen. Es werden immer mindestens 2 Grup-

pen benötigt. Will man trotzdem beispielsweise die Gruppe 1löschen, so muss zuerst eine dritte Gruppe angelegt werden.

%DFNXSLP12$5&+,9(/2*0RGH

Wird die DB im NOARCHIVE Mode betrieben, so müssen bei geschlosse-ner Datenbank ALLE Files, inklusive den Online-Redolog Files gesichertwerden. Damit hat man eine konsistente Datenbank, ein offline Backup beioffener DB ist wertlos.

9HUOXVWGHU2QOLQH5HGRORJV

Verliert man die gesamte Redolog Group im NOARCHIVE Mode, so ver-liert man alle Transaktionen des aktiven Redologs. Die Datenbank stürztsofort ab und kann nicht mehr gestartet werd. Ein Wiederherstellen ist nicht

möglich, auch mittels CLEAR LOGFILE können die Redolog-Files nichtmehr erstellt werden. Wird die DB im ARCHIVELOG Mode betrieben, somuss ein CANCEL based Recovery bis zum letzten Offline Redologfilegefahren werden und die DB kann nun mit RESETLOGS geöffnet werden.

Page 19: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 19/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 17 von 86

5HGRORJ7LPLQJ Verschiedene zeitliche Abängigkeiten spielen im Zusammenhang mit denRedolog Files ein wichtige Rolle für die Performance. Aus der View V$LOGund den Timestamps der offline Redologfiles können folgende Angabenberechnet werden:

• Zeitpunkt des Log-Switch• Wie lange schreibt der LGWR Prozess in eine bestimme Log-Group ?

• Wie lange braucht der ARCH Prozess um ein Offline Redologfilezu archivieren ?

Zeitpunkt desLogswitch

Aus V$LOG und dem ALERT.LOG kann man den Beginn des Logswitcheserkennen.

6HWOLQHVL]H&ROJUSBPHPEHUIRUDKHDGLQJPHPEHU

6HOHFWJURXSVHTXHQFH0HPEHUVDUFKLYHGVWDWXVILUVWBWLPH)URPYORJ

GROUP# SEQUENCE# MEMBERS ARC STATUS FIRST_TIME------ --------- ------- --- ------ -----------------

1 1697 2 YES INACTIVE 12/08/98 08:58:492 1698 2 YES INACTIVE 12/08/98 09:05:413 1699 2 YES INACTIVE 12/08/98 09:14:534 1700 2 YES INACTIVE 12/08/98 09:24:325 1701 2 YES INACTIVE 12/08/98 09:33:126 1702 2 YES INACTIVE 12/08/98 09:40:437 1703 2 NO CURRENT 12/08/98 09:50:04

8 1695 2 YES INACTIVE 12/08/98 08:32:459 1696 2 YES INACTIVE 12/08/98 08:45:49

X = Zeit zun Archiviere durch den ARCH Prozess

      L    o    g   -      G    r    o    u    p

LGWR

InstanceBuffer Cache Redolog Cache6 K D U H G 3 R R O  

LGWR

Online Redolog Files

Offline Redolog Files

        0        8     :        5        8

     :        4        9

        0        8     :        4        5

     :        4        9

        0        8     :        3        2

     :        4        5

        0        9     :        0        5

     :        4        1

        0        9     :        1        4

     :        5        3

        0        9     :        2        4

     :        3        2

        0        9     :        3        3

     :        1        2

        0        9

     :        3        4

        0        9     :        4        0

     :        4        3

        0        9     :        5        0

     :        0        4

X

Ende der ArchivierungBeginn Checkpoint

Ende Checkpoint

Zeitpunkt des Logswitch

Y

Y = Zeit zun Schreiben der DB-Buffer durch den DBWR Prozess

Page 20: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 20/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 18 von 86

Wie lange schreibtLGWR ?

Dies ist die Differenz zwischen den Log-Switches:

),567B7,0(*URXS),567B7,0(*URXS'LIIHUHQ]

Wie lange brauchtARCH zu Archivieren ?

Dies kann man aus der Differenz zwischen dem physischem ModificationDate und dem Beginn des Logswitches errechnen.

-rw-r--- 1 oracle dba 20972032 Dec 8 09:34 prodarch0000001700.arc-rw-r--- 1 oracle dba 20972032 Dec 8 09:42 prodarch0000001701.arc-rw-r--- 1 oracle dba 20972032 Dec 8 09:51 prodarch0000001702.arc

(QGSURGDUFKDUF),567B7,0(*URXS'LIIHUHQ]

Anzahl Log-Switches

Pro Stunde ?

Aus der View V$LOG_HISTORY kann die Anzahl Log-Switches selektiert

werden welche pro Stunde über den ganzen Tag verteilt stattfinden. ImAttribut TIME steht wann das erste Log-Entry (lowest SCN) eingetragenwurde, also den Beginn des Log-Switches markiert.

VHOHFWVXEVWUWLPHGD\WRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPH

WRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPHWRBFKDUVXPGHFRGHVXEVWUWLPH

IURPYORJBKLVWRU\JURXSE\VXEVWUWLPH

DAY 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --12/01 2 2 4 7 8 7 7 8 4 3 4 3 3 3 2 3 3 2 3 2 3 2 2 212/02 2 1 3 6 4 5 3 2 3 3 4 2 3 3 3 2 3 2 3 3 2 3 2 212/03 2 1 4 7 6 3 3 4 4 4 6 3 1 3 5 1 0 0 4 3 3 4 3 212/04 2 2 2 7 9 7 5 4 5 4 5 4 4 3 5 4 5 4 3 3 10 3 3 212/05 2 2 2 4 5 5 6 7 6 3 5 3 3 3 5 3 5 3 3 3 8 2 2 212/06 2 1 3 3 4 4 5 7 5 3 3 2 2 2 2 2 4 2 2 3 8 3 2 212/07 1 1 3 3 4 5 3 5 3 2 3 4 3 3 4 4 5 3 3 4 7 3 2 312/08 2 1 3 4 4 5 5 3 4 3 3 3 3 3 2 3 2 3 2 3 6 2 2 212/09 2 1 2 4 4 4 5 3 3 3 3 3 2 3 2 3 3 2 3 3 2 3 2 2

Daraus kann man die Belastung des Systems erkennen, je mehr Log-Swichtes pro Stunde stattfinden, desto mehr Transaktionen finden in derDatenbank statt.

Page 21: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 21/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 19 von 86

Dauer des Checkpoints Um die Dauer eines Checkpoints zu bestimmen muss der init<SID>.oraParameter LOG_CHECKPOINTS_TO_ALERT = TRUE gesetzt werden.Damit werden Checkpoints im ALERT.LOG geloggt.

Thu Mar 18 1999Beginning log switch checkpoint up to RBA [0x10.2.10], SCN: 0x0000.00003b5dThread 1 advanced to log sequence 16Current log# 2 seq# 16 mem# 0: /opt/oracle/oradata/TOL2/rdo/TOL2_log2A.rdo

Current log# 2 seq# 16 mem# 1: /opt/oracle/oradata/TOL2/rdo/TOL2_log2B.rdoThu Mar 18 1999Completed checkpoint up to RBA [0x10.2.10], SCN: 0x0000.00003b5d

Man erkennt den Beginn des Checkpoints um 23:36 und das Ende um23:43. Der Logwitch Checkpoint löst den Checkpoint aus wie ersichtlich ist.

:LFKWLJVWH3XQNWH5HGRORJILOHV

• Der Verlust einer Online Redolog Group bedeutet LPPHUHLQHQ'DWHQYHUOXVW, mindestens bis zum letzten Checkpoint. Deshalb nicht allzu gro-ße Redologfiles wählen oder den ParatmeterLOG_CHECKPOINT_INTERVAL so setzen, dass nicht nur bei einemLog-Switch ein Checkpoint erfolgt. 5HGRORJILOHVDXIHLQHUVHSDUDWHQ

VFKQHOOHQ'LVNSOD]LHUHQ• Rollbacksegmente beinhalten Daten, welche noch nicht «commited»

sind. Bei Rollbacks werden diese Daten zurückappliziert. 'HU,QKDOWGHU5ROOEDFNVHJPHQWHLVWGXUFKGLH5HGRORJILOHVJHVFK�W]W

Page 22: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 22/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 20 von 86

4.4 Rollbacksegmente

Sie dienen dazu uncommited Transaktionen bei Bedarf rückgängig zumachen (Rollback). Im weiteren gewährleisten sie eine lesekonsistenteSicht der Daten. Beim Kreieren der Datenbank wird automatisch das Roll-backsegment SYSTEM im System Tablespace erstellt. Um weitereTablespaces zur Datenbank hinzufügen zu können, muß mindestens ein

weiteres Rollbacksegment erstellt werden

Aufbau der Rollback-segmente

Rollbacksegmente sind als «Ring of Extents» aufgebaut. Sie beinhaltenrelativ temporäre Daten. Blocks werden zyklisch immer wieder neubenutzt:

Große Transaktionen «blasen» die Rollbacksegmente auf, was zu vielenExtents führt (Fragmentierung). Solche Rollbacksegmente sollten regelmä-ßig gedropped und neu erstellt werden. Initial muß ein Rollbacksegment jedoch aus mindestens 2 Extents bestehen (minextents = 2).

Transaktionen proRollbacksegment

Jede Transaktion ist genau einem Rollbacksegment zugeteilt, sie kannnicht über mehrere Rollbacksegmente verteilt sein. Ein Rollbacksegmentkann jedoch mehrere Transaktionen simultan verarbeiten. Zur Berechnungder Anzahl Rollbacksegmente kann die folgende Faustregel herangezogenwerden: Pro Oracle User sollten ca. 4 Transaktionen pro Rollbacksegmenteingeplant werden. Dazu wird der LQLWRUD ParameterTRANSACTIONS_PER_ROLLBACK_SEGMENT auf 4 gesetzt.

Beispiel: 15 User-Connects4 Transaktionen pro RollbacksegmentAnzahl Rollbacksegmente = ?

Der LQLWRUD Parameter ProzessES stellt die Anzahl «CONNECTS» auf die Daten-bank dar. Dabei dürfen die Background Prozesse nicht vergessen werden.

Prozesses = 15 + 7 + 1 = 23TRANSACTIONS = 23 * 1,1 = 25Anzahl Rollbacksegmente = 25 / 4 = 6

initial100K

next200K 300K 450K

«Ring of Extents»

initial = 100Knext = 200Kminextents = 2

Storage Parameter für gemischte Transaktionen:

Anzahl Rollbacksegmente =TRANSACTIONS

TRANSACTIONS_PER_ROLLBACK_SEGMENT

TRANSACTIONS = 1,1 * ProzessesProzesses = Anzahl concurrent Users + Anzahl Background-Prozesse +1

Page 23: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 23/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 21 von 86

ZuordnungTransaktion <-->Rollbacksegment

Eine bestimmte Transaktion kann mit dem KommandoSET TRANSACTION USE ROLLBACKSEGMENT UVBQDPH einem Roll-backsegment zugeordnet werden.

Größe von Rollback-segmenten

Bei gemischten Transaktionen sind folgende Werte als Anhaltswerte zuverwenden. Besser mehrere kleinere Rollbacksegmente als wenig große.MAXEXTENTS muß auf das Betriebssystem Maximum gesetzt werden,

um auch lange Transaktionen verarbeiten zu können.

Maximum number ofextents exceeded !

Bei sehr, sehr grossen Transaktionen kann es passieren, dass die Roll-backsegmente zu klein sind. Man versucht in diesem Fall einRollbacksegment mit MAXEXTENTS = mögliches Maximum anzulegenund / oder die Transaktion aufzusplitten.

OPTIMAL Size Wächst ein Rollbacksegment infolge einer sehr grossen Transaktion ein-mal an, so werden viele Extents kreiert, die entsprechend auch vielDiskplatz benötigen. Wird beim Erstellen der Rollbacksegmente die OptionOPTIMAL angegeben, so verkleinert sich das Rollbacksegment dynamischwieder wenn die nächste Transaktion das Rollbacksegment berührt.

Inhalt der Rollback-segmente

Rollbacksegmente enthalten die Information der «uncommited» Transak-tionen, das heißt der Zustand der Daten vor Transaktionsbeginn. Oracleverteilt die aktiven Transaktionen auf die zur Verfügung stehenden Roll-backsegmente. Sind zuwenig Rollbacksegmente vorhanden so entstehenWaits. Zur Überprüfung kann die dynamische Table v$waitstat herangezo-gen werden. Der SQL *DBA Monitor kann zur Auswertung benutzt werden.

1HXHUVWHOOHQYRQ5ROOEDFNVHJPHQWHQ

Nach einem Datenbank Export/Import sollten die Rollbacksegmentegedropped und wieder erstellt werden, da diese beim Export/Import nichtoptimiert werden. Rollbacksegmente mit mehr als 4-5 Extents gelten alsfragmentiert. Rollbacksegment können dynamisch während dem norma-len Betrieb (neu in Oracle7) gedropped und erstellt werden:

VTOSOXVV\VWHPDOWHUUROOEDFNVHJPHQWURIIOLQH5ROOEDFNVHJPHQWDOWHUHG GURSUROOEDFNVHJPHQWU5ROOEDFNVHJPHQWGURSSHGFUHDWHUROOEDFNVHJPHQWUWDEOHVSDFHUEVVWRUDJHLQLWLDONQH[WNPLQH[WHQWV

PD[H[WHQWVRSWLPDON5ROOEDFNVHJPHQWFUHDWHG

DOWHUUROOEDFNVHJPHQWURQOLQH

Transaktion ID

Block Information

Data as it wasbefore Transaktionbegan

Transaktion ID

Block Information

Transaktion ID

Block Information

Transaktion ID

Block Information

Data as it wasbefore Transaktionbegan

Data as it wasbefore Transaktionbegan

Data as it wasbefore Transaktionbegan

Rollback Segment

Rollback Entries

Page 24: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 24/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 22 von 86

:LFKWLJVWH3XQNWH5ROOEDFNVHJPHQWH

• Der Verlust einer Online Redolog Group bedeutet LPPHUHLQHQ'DWHQYHUOXVW, mindestens bis zum letzten Checkpoint. Deshalb nicht allzu gro-ße Redologfiles wählen oder den ParatmeterLOG_CHECKPOINT_INTERVAL so setzen, dass nicht nur bei einemLog-Switch ein Checkpoint erfolgt. 5HGRORJILOHVDXIHLQHUVHSDUDWHQVFKQHOOHQ'LVNSOD]LHUHQ

• MAXEXTENTS bei Rollbacksegmenten auf das mögliche Maximum set-zen (UNIX = 121) damit auch große Transaktionen verarbeitet werdenkönnen.

• Rollbacksegmente ab und zu droppen/neu kreieren, um Fragmentierungnicht zu groß werden zu lassen

• Bei großen Reports mit der Option SET TRANSACTION READ ONLYkann es passieren, dass zuwenig Platz in den Rollbacksegmenten zurVerfügung steht: 25$VQDSVKRWWRRROGUROOEDFNVHJPHQWWRRVPDOOIn diesem Fall müssen die Rollbacksegmente vergrößert werdenoder die Transaktion muss gesplittet werden (Mit MAXEXTENTS = UN-

LIMITED wird das kaum eintreten !).• Rollbacksegmente beinhalten Daten, welche noch nicht «commited»

sind. Bei Rollbacks werden diese Daten zurückappliziert. 'HU,QKDOWGHU5ROOEDFNVHJPHQWHLVWGXUFKGLH5HGRORJILOHVJHVFK�W]W

• Eine Transaktion ist genau einem Rollbacksegment zugeordnet. EinRollbacksegment kann mehrere Transaktionen gleichzeitig verarbeiten.

• Der große Vorteil der Rollbacksegmente ist, dass Oracle Tables nicht alsganzes locken muß. Dadurch können mehrere Benutzer simultan mitden gleichen Daten arbeiten ohne wesentliche Performance Verschlech-

terung.• Ob genügend Rollbacksegmente vorhanden sind, kann nur wirklich wäh-

rend des produktiven Betriebes festgestellt werden. Dazu eignet sich derSVRMGRL Monitor. Man überprüft die Spalte +HDGHU:DLWV6HF . Ist die-ser Wert groß, so müssen weitere Rollbacksegmente hinzugefügt wer-den. Zur Auswertung wird die dynamische Table YZDLWVWDWbenutzt.

Page 25: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 25/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 23 von 86

5. 7DEOHVSDFHV

/RJLVFKHXQGSK\VLVFKH6LFKWGHU 7DEOHVSDFHV

Tablespaces sind logische Unterteilungen der Datenbank, damit Daten ent-sprechend ihrem Verwendungszweck gespeichert werden können. Sowerden Index-, Daten-, Rollback-, und temporäre Segmente immer in ver-schiedenen Tablespaces gespeichert. Im Idealfall entspricht ein

Tablespace genau einem physikalischen Datenbankfile.

*UXQGVlW]OLFKHV]X7DEOHVSDFHV

• Der SYSTEM Tablespace wird beim Erstellen der Datenbank kreiert. Ermuß zwingend vorhanden sein.

• Der SYSTEM Tablespace sowie der ROLLBACK Tablespace dürfen aufkeinen Fall verloren gehen. Es gibt keine Möglichkeit die Datenbankohne diese Tablespaces zu starten.

• Optimal besteht ein Tablespace aus einem Datenbank-File. Wenn nötig,können zu einem Tablespace weitere Datenbank-Files hinzugefügt wer-den.

• Tablespaces können offline gestellt werden. (Tablespace-Backup, Reor-ganisation, Hinzufügen von Datenbank-Files etc).

• Jedem Oracle Benutzer wird ein Default- und Temporary-Tablespacezugeteilt. 8VHU'DWHQQLFKWLPSYSTEM7DEOHVSDFHHUVWHOOHQ

temp rbs indx users system

TemporaryTablespace

RollbackTablespace

IndexTablespace

DataTablespace

SystemTablespace

SELECT ...ORDER BY

SELECT ...UNION

rs01

rs02

rs03

rs04

EMPIndex

EMPTable

PROJIndex

PROJTable Online

Data-Dictionary

SYSTEM

sysB.dbfusersB.dbfindxB.dbfrbsB.dbftempB.dbf

Temporäre Seg-mente werdendynamisch wäh-rend einer UserSession vonOracle erstellt.Vorallem zumSortieren

Rollback Segmentewerden zum Errei-chen derLesekonsistenzbenötigt. Sie enthal-tenTransaktionsdatenfür ein Rollbacksolange noch keinCOMMIT erfolgt ist

Index Segmente ent-halten die IndexDaten für Tables undCluster. Index Seg-mente werden mittelsCREATE INDEX...erstellt

Daten Segmente enthalten die effektivenDaten der Tables oder Cluster. Tableswerden mittels CREATE TABLE ...erstellt.

Der SYSTEM Tablespaceenthält das Online Data-Dictionary welches alleObject Informationen ent-hält. Zudem wird imSYSTEM Tablespace einRollback-Segment zurSicherheit gespeichert

logische Sicht

physische Sicht

Rollbacksegment

Page 26: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 26/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 24 von 86

7DEOHVSDFH2UJDQLVDWLRQ

User Daten

Dies ist der Default Tablespace für Benutzer-Tables. Jedem Benutzer wirddieser Tablespace zur Speicherung seiner Daten zugewiesen. Um eineoptimale Performance zu erreichen sollten in diesem Tablespace keineIndex-Segmente kreiert werden.

Indexe

Der Index Tablespace enthält die Indexe der User-Tables. Um eine opti-male Performance zu erreichen sollten in diesem Tablespace keine Tableskreiert werden.

SYSTEM

Der System Tablespace muß immer verfügbar sein, da er das Online DataDictionary mit den Locations sämtlicher Datenbank Objekte enthält. Gehtder SYSTEM Tablespace verloren, so kann die Datenbank nicht mehr

gestartet werden.

Rollback

Der Rollbacksegment Tablespace beinhaltet die privaten Rollback-Seg-mente. Rollbacksegmente gewährleisten Lesekonsistenz auf Transaktions-und Befehlsebene.

Temporäre Daten

Im Temporary Tablespace werden von Oracle intern Sortier Operationenvorgenommen (SELECT .... ORDER BY). Temporäre Segmente werdendynamisch kreiert und wieder gelöscht. Sie unterstehen nicht der Kontrolledurch die Userprozesse.

(UVWHOOHQYRQ7DEOHVSDFHV

Der SYSTEM Tablespace wird beim Erstellen der Datenbank erstellt. Ohnediesen Tablespace kann eine Datenbank nicht gestartet werden. Er darfauf keinen Fall verloren gehen !

FUHDWHGDWDEDVH%PD[LQVWDQFHVPD[ORJILOHVFKDUDFWHUVHW:('(&

GDWDILOHRUDFOHNXUVV\VW%GEIVL]H0

Zusätzliche Tablespaces können jederzeit angelegt werden.

FUHDWHWDEOHVSDFHUEVGDWDILOHRUDFOHNXUVUEV%GEIVL]H0 GHIDXOWVWRUDJHLQLWLDONQH[WNSFWLQFUHDVHPLQH[WHQWV

Page 27: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 27/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 25 von 86

/|VFKHQYRQ7DEOHVSDFHVLQFO,QKDOW

Der SYSTEM Tablespace darf nicht gelöscht werden. Die zusätzlichenTablespaces inclusive Inhalt werden wie folgt gelöscht

VTOSOXVV\VWHPDOWHUWDEOHVSDFHXVHUVRIIOLQHGURSWDEOHVSDFHGDWDBWVLQFOXGLQJFRQWHQWV

Datenbankfile mittels UNIX Kommando löschen

2IIOLQH2QOLQHVWHOOHQGHU7DEOHVSDFHV

Tablespaces können zeitweise für den normalen Zugriff gesperrt werden.Sind Daten in einem Tablespace defekt, so muß nicht die gesamte Daten-bank außer Betrieb genommen werden. Ein Online Recovery desTablespaces ist so möglich. Ein einmal offline gestellter Tablespace bleibtoffline, auch wenn die Datenbank gestoppt und wieder gestartet wird. DerSYSTEM Tablespace muß immer online sein !

VTOSOXVV\VWHPDOWHUWDEOHVSDFHXVHUVRIIOLQH

9HUVFKLHEHQHLQHU 7DEOHLQDQGHUHQ7DEOHVSDFH

Am einfachsten mittels CREATE TABLE AS SELECT * ..

FUHDWHWDEOHHPSWDEOHVSDFHWHVWBWVDVVHOHFWIURPHPSGURSWDEOHHPSUHQDPHWDEOHHPSWRHPS

Beachte, dass bei dieser Methode die Constraints nicht mitgenommenwerden (ausser den NOT NULL Constraints).

6WDUWHQGHU'DWHQEDQNRKQH'DWHQ7DEOHVSDFH

Ist ein Datenfile eines Tablespaces korrupt oder irrtümlich gelöscht worden,so kann die Datenbank ohne diesen Tablespace gestartet werden. 'DV6WDUWHQGHU'DWHQEDQNRKQHSYSTEMRGHUROLLBACK7DEOHVSDFHLVW

 MHGRFKQLFKWP|JOLFK. Diese beiden Tablespaces dürfen nicht verloren gehen !

Voraussetzungen :

• SYSTEM- und ROLLBACK-Tablespace sind in Ordnung• Redolog-Files und Control-Files sind in Ordnung

VTOSOXVV\VWHPDOWHUWDEOHVSDFHXVHUVRIIOLQH7DEOHVSDFHDOWHUHG

Datenbank stoppen und wieder starten

Die Datenbank ist nun gestartet, ohne den Tablespace 8VHUVSelbstverständlich können auf keine Daten im Tablespace mehr zugegrif-fen werden:

VTOSOXVVFRWWWLJHUVHOHFWIURPHPS(5525DWOLQHORA-00942: table or view does not exist

Tablespace USERS Tablespace TEST_TS

Table emp

Page 28: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 28/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 26 von 86

6. 6HJPHQWHSegmente sind nach den Tablespaces die nächst NOHLQHUHORJLVFKH Ein-heit, welche durch den Oracle Benutzer direkt manipuliert werden kann.Segmente sind Oracle Objekte, denen Daten zugrunde liegen. Zum Unter-schied zu den Tablespaces können Segmente nicht offline/online gestelltwerden. Daten-Segmente (Tables) können im Gegensatz zu Tablespacesexportiert/importiert werden. Segmente bestehen aus den physikalischenGrößen Extents und Blocks.

6HJPHQW$UWHQ Es gibt verschiedene Segmente, deren Aufbau sehr unterschiedlich ist:

• Daten-Segment = Tables

• Index-Segment = Indexe

• Rollback-Segmente (Ring of Extents)

• Temporäre-Segmente (Sortier Operationen)

• Bootstrap-Segment (Oracle intern)

$XIEDXGHU6HJPHQW Der Aufbau der Segmente ist für alle gleich. Sie bestehen aus «Extents»,welche wiederum in Blocks unterteilt sind. Oracle alloziert bei Bedarfimmer ein zusätzliches Extent zu einer bestimmten Anzahl Oracle Blocks.Die Größe und Organisation der Extents wird beim Kreieren des Segmentsmittels «Storage Parameter» definiert.

Storage Parameter welche die Extents direkt betreffen:

INITIAL: Größe des ersten Segments in Bytes. Default = 5 Oracle Block

NEXT: Größe des nächsten Extents in Bytes. Default = 5 Oracle Blocks

MAXEXTENTS: Maximale Anzahl Extents die für das Segment möglich sind.Default ist abhängig von OS und OS-Blocksize.

MINEXTENTS: Anzahl Extents wenn das Segment kreiert wird. Default = 1.Bei Rollbacksegmenten muß MINEXTENTS = 2 gesetzt werden. Die bestePerformance erreicht man, wenn das gesamte Segment in ein Extent paßt.Besteht ein Segment nach vielen INSERTS, UPDATES aus vielen Extentsso muß reorganisiert werden. Dazu werden die Daten mit der OptionCOMPRESS=y exportiert, die Datenbank neu erstellt und wieder impor-tiert. Beim Importieren werden die Segmente jeweils in ein Extent gepackt.Bei sehr großen Tables welche auf mehrere Disks verteilt werden müssen,kann MINEXTENTS erhöht werden (Table Stripping).

PCTINCREASE: Prozent um wieviel das neue Extent gegenüber dem letzten wachsen soll.PCTINCREASE = 50 heißt also 1,5 mal größer als das letzte Extent. BeiPCTINCREASE = 0 sind alle Extents gleich groß.

      N    e    x     t   -      E

    x     t    e    n     t

Daten-Segment (Table)

      N    e    x     t   -      E

    x     t    e    n     t

      N    e    x     t   -      E

    x     t    e    n     t

      I    n      i     t      i    a      l   -      E

    x     t    e    n     t

Noch nicht allozierterSpeicherplatz

Segment Header

Page 29: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 29/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 27 von 86

Table-Stripping Eine sehr große Table hat nicht Platz auf einer Disk, muß also auf mehrereDisks verteilt werden. Pro Disk wird genau ein Extent angelegt. Dieserreicht man durch das Setzen von MINEXTENTS.

FUHDWHWDEOHVSDFHYHU\ELJGDWDILOH¶ILOH¶VL]H0DOWHUWDEOHVSDFHYHU\ELJDGGGDWDILOH¶ILOH ¶VL]H0DOWHUWDEOHVSDFHYHU\ELJDGGGDWDILOH¶ILOH ¶VL]H0

FUHDWHWDEOHELJWDEWDEOHVSDFHYHU\ELJVWRUDJH

LQLWLDO0  (1. Extent auf erster Disk)QH[W0  (2. Extent auf zweiter Disk) PLQH[WHQWV (mindestens 3 Extents erstellen beim kreieren) SFWLQFUHDVH (auch 3. Extent soll 100M groß sein)

Segment Header Jedes Segment unterhält im Segment Header eine Liste der freien Blöcke.Beim Hinzufügen eines Extents werden alle Blocks dieser Liste zugefügt.Die Liste wird von Oracle verwaltet und ist nicht einsehbar. Bei INSERT’s

von Records muß diese Liste gelesen und modifiziert werden. Bei Tablesmit sehr vielen Insert’s kann dadurch ein Engpaß entstehen, was durch diedynamische Table 9:$,767$7 mit einem hohen Wert für EXIIHUEXV\ZDLWV angezeigt wird. Man kann in diesem Fall den LQLWRUD WertFREE_LIST_PROC erhöhen. (Anzahl Free Lists per Instance).

3 Extents auf 1 Table (300M) verteilt

100M 100M 100M

file1 file2 file3

3 physikalische Disks

Block 

Free List im Segment Header

Block  Block 

Page 30: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 30/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 28 von 86

6.1 Datensegmente

'DWHQVHJPHQW7DEOH

Der Aufbau der Tables, Indexe und Cluster ist praktisch identisch. Am Bei-spiel Table soll der dies erklärt werden. Im Zusammenhang mit diesenObjekten ist darauf zu achten, dass ein Record (Row) einer Table in einenBlock paßt. Ist dies nicht der Fall, so spricht man von «Block Chaining»

was die Performance verschlechtert.

Aufbau Block Eine Table besteht aus der logischen Größe «Segment», welche der logi-schen Einheit «Tablespace» zugeordnet ist. Logische Größen könnendurch den Oracle Benutzer direkt bearbeitet werden (create, alter drop).Die physikalischen Größen Extents, Blocks und Rows werden von Oracleintern verwaltet. Eine Table (Daten Segment) besteht aus einer AnzahlExtents (Optimal = 1 Extent). Oracle alloziert bei Bedarf immer ein weiteres

Extent Speicherplatz. Extents sind in gleich große Blocks zu 2 oder 4K ein-geteilt. Der Aufbau eines Oracle Blocks ist für Tables, Indexe und Clustergleich. Ein Table-Record ist schließlich in einer Row gespeichert.

Header: Der Header enthält generelle Informationen des Blocks wie Block Adresse,Segment Typ (Data, Index, Cluster oder Rollback).

Table Directory: Informationen zu «clustered tables». Nur Cluster enthält ein TableDirectory.

Row-Directory: Informationen zu den aktuellen Rows im Block wie beispielsweise die

Adresse jedes einzelnen Row Teils.

Free-Space: Freier Platz für UPDATES und INSERTS. Mittels PCTFREE kann definiertwerden wieviel ein Block gefüllt wird bevor ein neuer Block alloziert wird.Der Default Wert von PCTFREE ist 10, das heißt ein Block wird zu maximal90 % gefüllt.

Wahl des geeignetenPCTFREE

Ändern sich die Daten im normalen Umfang durch INSERT’s undUPDATE’s so kann der Defaultwert von 10 für Tables als optimal angenom-men werden. Bei Indexes kann ein tieferer Wert gewählt werden, da hierkaum Platz für spätere UPDATE’s benötigt wird.Ein PCTFREE von 0 bei Index-Segmenten ist angebracht.

Oracle-Block

      H    e    a      d    e    r

      T    a      b      l    e   -      D      i    r    e    c     t    o    r    y

      R    o    w   -      D      i    r    e    c     t    o    r    y

Row

Oracle-Row

Row-Overhead

Number ofColumns

ClusterKey Rowid

ColumnLength

ColumnData

ColumnLength

ColumnData

PCTFREE (Default 10%)

PCTUSED (Default 40%)

Page 31: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 31/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 29 von 86

Folgen eines kleinenPCTFREE:

• Wenig Platz für spätere Updates

• Blocks werden von Oracle gut ausgenutzt.

• Platzsparend

• Performance wird schlechter, wenn «Block Chaining» eintritt

Wahl des geeigneten

PCTUSED

Wird der Wert von PCTFREE in einem Block einmal überschritten, so fügt

Oracle keine neuen Rows in diesen Block ein, bis der Füllungsgrad wiederunterhalb PCTUSED fällt.. Oracle versucht jedoch den Block mindestensauf der Schwelle von PCTUSED gefüllt zu halten. Defaultwert vonPCTUSED = 40%

Regeln für PCTFREEund PCTUSED

• PCTUSED + PCTFREE <= 100%

• Ist PCTUSED + PCTFREE = 100 versucht Oracle den Block möglichstauf dem Maximum gefüllt zu halten.

• Je kleiner die Differenz zwischen PCTFREE und PCTUSED ist, destobesser wird der Block ausgenutzt auf Kosten der Performance.

Angabe der StorageParameter

Storage Parameter können auf zwei Stufen definiert werden. Tiefer lie-gende Angaben überschreiben höher gelegene. Nicht alle Parameterkönnen überall definiert werden.

Beachte:

create database ...Keine Angaben möglich !

create tablespacedefault storage (

initalnext

minextentsmaxextentspctincrease

)

create clusterpctusedpctfreeinitransmaxtransstorage (

initalnextminextentsmaxextents

pctincrease)

create indexinitransmaxtransstorage (

initalnextminextentsmaxextentspctincrease

)

pctfree

create tablepctusedpctfreeinitransmaxtransstorage (

initalnextminextentsmaxextents

pctincrease)

create rollback segmentstorage (

initalnextminextentsmaxextents

)

Stufe Tablespace

(«Schablone»)

Stufe Segment

Die Angabe der Storage Parameter sollte auf der Stufe «Segment»unbedingt angegeben werden. Man sollte sich nicht einfach mit denDefault Werten zufrieden geben, sondern überlegen welche Charak-

teristik die Daten haben. Insbesondere bei Tables ist das sehrwichtig.

Page 32: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 32/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 30 von 86

Aufbau Oracle Row Eine Oracle Row ist die kleinste physikalische Speichereinheit. Sie bestehtim optimalen Fall aus «einem Stück», ist also nicht auf mehrere Blocks ver-teilt. Oracle versucht wenn immer möglich Rows als Ganzes zu speichernund nicht zu splitten. Jede Row beginnt mit dem 5RZ+HDGHU . Von jederColumn wird auch deren Länge in der Row festgehalten.Primary Keys soll-ten beim create Statement zuerst angegeben werden. LONG-Daten ganzam Schluß.

«Block-Chaining»und dessen Nach-weis

Ist eine Row auf mehrere Blocks verteilt, so spricht man von «Block chai-ning». Dies ist ein unerwünschter Zustand, da die Performance dadurchbeeinträchtigt wird. Tritt dies oft auf, so muß PCTFREE verändert werden.Nach einem Export/Import verschwindet das unerwünschte «Block chai-ning». Zum Nachweis dient der Pseudo Datentyp ROWID. Jede Rowbesitzt eine eindeutige physikalische Adresse, welche durch ROWID reprä-sentiert wird. ROWID ist aus drei Teilen aufgebaut:

select rowid, ename from emp;

ROWID ENAME------------------ ----------000005DF.0000.0004 SMITH000005DF.0001.0004 ALLEN000005DF.0002.0004 WARD000005DF.0003.0004 JONES000005DF.0004.0004 MARTIN000005DF.0005.0004 BLAKE000005DF.0006.0004 CLARK000005DF.0007.0004 SCOTT000005DF.0008.0004 KING000005DF.0009.0004 TURNER000005DF.000A.0004 ADAMS

Block Statistik mitColumn ROWID

Um dies zu demonstrieren wird die sehr grosse SQL*Plus KHOS Tabellebenutzt. Sie beinhaltet ein HELP zu SQL Kommandos in SQL*Plus.

Anzahl Blocks einer Table die Daten enthalten:

VHOHFWFRXQWGLVWLQFWVXEVWUURZLG$Q]B%ORFNVIURPKHOS $1=B%/2&.6

Nr des Blocksim File

Nr der Rowim Block Nr des Files

Aufbau der Oracle-7 ROWID

Alle Row sind im gleichen File

Alle Rows sind im gleichen Block, kein «Block Chaining»Nummer der Row im Block

Page 33: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 33/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 31 von 86

Anzahl Rows proBlock:

VHOHFWVXEVWUURZLG%ORFNB1UFRXQW$Q]DKOB5RZVIURPKHOSJURXSE\VXEVWUURZLG

%/2&.B15$1=$+/B52:6')

Die Verteilung der Anzahl Rows pro Block sollte möglichst gleichmäßigsein, dann ist keine Reorganisation nötig:VHOHFWDYJFRXQW$YJPD[FRXQW0D[PLQFRXQW0LQIURPKHOSJURXSE\VXEVWUURZLG

$9*0$;0,1

Der Block mit der maximalem Anzahl Rows (48) steht im Gegensatz zumBlock mit der kleinsten Anzahl Rows (5), im Mittel besitzen die Blocks 31Rows.

Page 34: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 34/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 32 von 86

6.2 Indexsegmente

,QGH[VHJPHQW,QGH[

Index-Segmente sind optionale, zusätzliche Strukturen zu Tables und Clu-ster. Sie verbessern die Ausführungszeit eines Querys erheblich, da keineFulltable Scans mehr durchgeführt werden müssen. Zudem garantieren siemit der Option UNIQUE, dass garantiert jede Row in einer Table eindeutigist, also nur einmal vorkommt. Der Primary Key einer Table ist immer inde-

xiert. Indexe können aus einer oder auch mehreren Columns(Concatenated Index) gebildet werden. Die Verwendung von Indexen istnicht zwingend nötig, aber dringend empfohlen, vorallem bei Joins. Indexesind physikalisch unabhängig von der zugrunde liegenden Tabelle. Siekönnen jederzeit gedropped und wieder neu erstellt werden, ohne dass dieDaten dabei verändert werden. Wird ein Index gedropped, so läuft dieApplikation wie bisher, nur langsamer. Indexe unterstehen der Kontrollevon Oracle, das heißt: Ändern sich die Daten der Table durch INSERT’s,UPDATE’s, DELETE’s so werden die zugehörigen Index-Strukturen vomRDBMS automatisch mitgeführt. Sind auf einer Table sehr viele Indexevorhanden, so kann durch die Änderungen an den Daten eine gewissePerformance Verschlechterung eintreten, da die Index-Strukturen simultan

mitkorrigiert werden müssen. Bei Tables mit sehr vielen Veränderungen,müssen die Indexe gezielt auf die wichtigsten Columns gelegt werden.Jeder Index belegt ein eigenes Segment, kann also über Storage Parame-ter verfügen. Indexe sollten wenn möglich immer auf bereits bestehendeDaten angelegt werden, häufig modifizierte Indexe sollten periodischgedropped und neu erstellt werden. Dazu eignet sich die Möglichkeit desExports/Imports mit der Option INDEXFILE=y.

Anlegen der Index-Strukturen

Indexe sollten aus Performance Überlegungen nicht im gleichen Table-space wie die Daten selbst angelegt werden. Dies hat zwar den Nachteil,dass beim Offline stellen des Index Tablespace der Zugriff auf die Datenlangsamer wird.

Indexe als B-Trees Index Strukturen werden in Oracle aus sogenannten B-Trees aufgebaut.B-Trees können im Gegensatz zu normalen Binär-Bäumen optimal aufeinem sekundären Medium (zB Harddisk) gespeichert werden und von dortin den Hauptspeicher geladen werden. Binär-Bäume weisen gleich vieleKnoten wie Keys auf, im Gegensatz zu den B-Trees, wo eigentliche Infor-mationsblöcke mit mehreren Keys zu Knoten zusammengefaßt werden.

indx_ts data_ts system

IndexTablespace

DataTablespace

SystemTablespace

EMPIndex

EMPTable

PROJIndex

PROJTable Online

Data-Dictionary

rbs_temp

Daten und Indexe immer in unterschiedlichen Tablespaces erstellen

Page 35: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 35/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 33 von 86

Struktur von B-Trees B-Trees bestehen aus Index- und Sequenzblöcken. In den Sequenzblök-ken werden die ROWID’s der Records gespeichert:

Unique und Non-unique Indexes

Wird eine Column mit einem Unique Index versehen, dann muß jeder Wertder Column eindeutig sein. Dies trifft bei Primary Keys zu, auf diese wirdimmer ein Unique Index angelegt, was unter Oracle7 automatisch erfolgt.Doch auch nicht eindeutige Columns können indexiert werden, indem beim

Kreieren des Index das Schlüsselwort «unique» angegeben wird. DasAnlegen von Indexes auf non-unique Columns ist jedoch nur dann sinnvoll,wenn der Wertebereich groß ist. Eine Column, die z.B. nur die Werte«männlich», «weiblich» beinhalten kann, ist denkbar ungeeignet zum inde-xieren !

Ideale Columns zumIndexieren:

• Jeder Wert ist eindeutig (unique)

• Großer Wertebereich

• Columns, die viele Nulls haben und wenig Werte, dabei oft Abfragen aufdiese Werte vorkommen. Das Statement VHOHFWZKHUH[! ist demStatement sHOHFWZKHUH[LVQRWQXOO vorzuziehen, da dieses den Index

auf  [ benutzt.

Concatenated Index Aus mehreren Columns bestehende Indexe werden «Concatenated Index»genannt. Sie sind sehr ideal, wenn Eindeutigkeit über mehrere Columnsgefordert ist.

Die Columns «Tel.-Vorwahl» und «Telefon» sind zusammen unique unddeshalb für einen concatenated Index geeignet.

Index-Blöcke

Sequenz-Blöcke als «doubly-linked list»

Index-Blöcke: Baumstrukturierter Index-Satz zu den SequenzblöckenSequenz-Blöcke: «Leafs», enthalten die ROWID’s

9RUZDKO Telefon PLZ Ort Straße

033 45 29 75 3628 Uttigen Auweg 31

031 61 67 76 3000 Bern Ralligweg

Page 36: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 36/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 34 von 86

Storage Parametervon Indexes

Ist der Index unique, kann PCTFREE = 0 gewählt werden, da Updates anUnique Keys nicht vorkommen.FUHDWHXQLTXHLQGH[LBHPSRQHPSHQDPHLQLWUDQV PD[WUDQVWDEOHVSDFHLQG[BWVVWRUDJH

LQLWLDO. QH[W.  SFWLQFUHDVH

 SFWIUHH

Der ParameterLQLWUDQV definiert die Anzahl «Transaktion Entries», die in jedem Block reserviert werden. Das «Transaktion Entry» definiert wievieleTransaktionen gleichzeitig den Block verändern können. Oracle reserviertfür jedes Entry 23 Bytes im Free Space des Blocks. Bei Indexes ist LQLWUDQV per Default = 2.

      H    e    a      d    e    r

Free Space pctfree

Used Space

Transaktion Entries

Page 37: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 37/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 35 von 86

7. 2EMHNWHIm allgemeinen zählt man auch die Datenbank Segmente zu den Daten-bank Objekten, diesen liegen im Gegensatz zu den im folgenden Abschnitterläuterten Strukturen jedoch Daten zu Grunde.

$UWHQYRQ2EMHNWHQ Oracle kennt folgende Objekte, denen keine Daten zu Grunde liegen:

• Sequences• Views• Synoyme• Constraints

6HTXHQFHV Jede Tabelle muss über einen eindeutigen Key (UNIQUE KEY) verfügenum einen Datensatz zu referenzieren. Eignet sich kein Feld aus der realenWelt für einen Key, so verwendet man meist eine Sequence um einen sol-chen «versteckten» Key zu generieren. Insbesondere im Multiuser Betrieb,wenn viele Benutzer in einer Tabelle Datensätze unabhängig voneinandereinfügen, löschen oder ändern bilden Sequences ideale Datenstrukturen,da dadurch keine Wartezeiten entstehen.

Wichtigste Eigenschaften von Sequences:

• Unabhängig von einer Tabelle, eigenständiges Objekt• Auf Sequences können nur SELECT Statements angewendet werden.• Sequences können im Memory gehalten werden (cached) um sehr

rasch einen Key zu generieren.• Sequences können «Löcher» (Gaps) aufweisen, insbesondere bei sehr

vielen Transaktionen.• Sequences können von mehreren Tabellen benutzt werden.

• Sequences können nicht benutzt werden in Subqueries, Query in einerView, SELECT DISTINCT, SELECT mit GROUP BY und in der WHEREClause.

• Sequences werden beim Export / Import automatisch mit der Tabellemitgenommen.

Kreieren einerSequence

&5($7(6(48(1&(P\BVHTBDGUHVVH,1&5(0(17%<67$57:,7+0,19$/8(120$;9$/8(12&<&/(

12&$&+(25'(5

Generieren einer Se-quence Nummer

,16(57,172DGUHVVHDGUBQUDGUHVVH 9$/8(6P\BVHTBDGUHVVH1(;79$/¶+DQV0�OOHU¶

Abfragen der aktuellenSequence Nummer

6(/(&7P\BVHTBDGUHVVH&8559$/IURPGXDO

Page 38: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 38/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 36 von 86

9LHZV Views bilden lX�HUVWKLOIVUHLFKH'DWHQVWUXNWXUHQbei der Applikations-entwicklung. Views dienen vorallem dazu, Komplexizität zu verbergen, dasheißt Joins über viele Tabellen werden unsichtbar. Ein weiterer sehr großerVorteil von Views ist, dass sie auf dem Server installiert werden und damitkomplexe Abfragen über das Netz beschleunigen.Ausblenden von Columns

FUHDWHYLHZHPSBYLHZDVVHOHFWHPSQRHQDPHMREFRPPGHSWQRIURPHPS

VHOHFWIURPHPSBYLHZ

EMPNO ENAME JOB COMM DEPTNO----------------- -------- ------- ----------7369 SMITH CLERK 207499 ALLEN SALESMAN 300 307521 WARD SALESMAN 500 307566 JONES MANAGER 20

Ausblenden von Rows

Mittels Views und einer WHERE Bedingung können Rowsausgeblendet werden:

FUHDWHYLHZHPSBYLHZDVVHOHFWHPSQRHQDPHMREFRPPGHSWQRIURPHPS

ZKHUHGHSWQRVHOHFWIURPHPSBYLHZ

EMPNO ENAME JOB COMM DEPTNO-------------------- ---------------------- ------------7369 SMITH CLERK 207566 JONES MANAGER 20

HPSQR HQDPH MRE PJU KLUHGDWH VDO FRPP GHSWQR

 

:

empno ename job mgr hiredate sal comm deptno

10

30

10

25

10

Page 39: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 39/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 37 von 86

Verbergen vonKomplexizität

Damit können Joins «verborgen» werden, die Anwendungsentwicklungwird wesentlich einfacher.

Ohne die Verwendung einer View ....VHOHFWDHPSQRDHQDPHEGQDPHEORFIURPHPSDGHSWEZKHUHDGHSWQREGHSWQR

.... verwendet man mit einer View

FUHDWHYLHZP\BYLHZDVVHOHFWDHPSQRDHQDPHEGQDPHEORFIURPHPSDGHSWEZKHUHDGHSWQREGHSWQR

VHOHFWIURPP\BYLHZ

Ausblenden vonRecords, Columns ineiner View

Projektionen und Selektionen können nun auch auf Views angewendetwerden, das komplexe vollumfängliche SELECT Statement wird durchOracle intern generiert.

VHOHFWHQDPHGQDPHIURPP\BYLHZZKHUHGQDPH¶6$/(6¶

Einschränkungenauf Views

• Wenn das Query einer Views aus Joins, SET, DISTINCT oderGROUP_BY besteht, so können keine Rows mittels INSERT, UPDATEoder DELETE manipuliert werden.

• Enthält das Query die mächtige Expression DECODE, so können eben-falls keine Rows mittels INSERT, UPDATE oder DELETE manipuliertwerden.

empno e name job m gr hiredate sal comm deptno deptno dname loc

empno ename dname loc

Page 40: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 40/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 38 von 86

6\QRQ\PH Jedes Objekt in einer Oracle Datenbank hat einen Besitzer. Auf dieseWeise können sehr einfach gesamte Projekte von Datenbank zu Daten-bank gezügelt werden, indem der Applikationsowner exportiert und wiederimportiert werden. Um ein Objekt Datenbankweit eindeutig zu kennzeich-nen und allen anderen Benutzern zugänglich zu machen werdenSynonyme verwendet. Public Synonyme sind in der Datenbank eindeutigdurch das RDBMS kontrolliert vorhanden, dies im Gegensatz zu einem

normalen Objekt, das durchaus unter dem gleichen Namen mehrfach vor-kommen kann:

Tabelle  SURMHNW des Benutzer scott: scott.projectTabelle  SURMHNW des Benutzers watson: watson.project

Kreieren einesSynonyms

Um nun die Tabelle projekt allen Benutzern eindeutig zugänglich zumachen verwendet man ein Public Synonym.

FUHDWHSXEOLFV\QRQ\PHPSIRUVFRWWHPS

Damit können alle Benutzer die Tabelle HPS referenzieren.

Page 41: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 41/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 39 von 86

8. 2UDFOH3UR]HVVWUXNWXU 

8.1 Architektur

3UR]HVV7\SHQ Beim Datenbankstartup kreiert Oracle automatisch mehrere Prozesse. AusSicherheitsgründen sind diese eingeteilt in Userprozesse und Oracle Pro-

zesse. Ein Userprozess (z.B. sqlplus) hat nie direkten Zugriff auf dieDatenbank, sondern kommuniziert mit einem «Shadowprozess», welcherden Zugriff auf die Datenbank vornimmt. Bei UNIX Systemen sind Userpro-zess und Shadowprozess immer zwei reelle Prozesse (Two-TaskVariante), bei anderen Betriebssystemen kann der User- und Shadowpro-zess auch in einem reellen Prozess vereint sein (Single-Task Variante).Den Hintergrundprozessen sind klar definierte Aufgaben zugeteilt. Ineinem Client-Server Umfeld kommt zusätzlich noch ein Netzwerkserver-prozess hinzu der das Dispatching der Client-Requests übernimmt.Oracle7 unterstützt zusammen mit SQL*Net 2 auch das des MultithreadedServer Konzepts zur Unterstützung von sehr vielen Requests über dasNetzwerk.

7ZR7DVN$UFKLWHNWXU 

Ein Userprozess (zB SQL*Plus) hat nie direkten Zugriff auf die Datenbank.Er kommuniziert über eine definierte Schnittstelle mit seinem entsprechen-den Shadowprozess. Sind Userprozess und Shadowprozess physikalischauf der gleichen UNIX Workstation, so kommunizieren die beiden Pro-zesse via Pipe.

Shadowprozess Der Shadowprozess ist in drei Teile eingeteilt:

• Buffer-Manager: Komponente, welche von der Datenbank liest und in dieSGA schreibt.

• SQL-Prozessor: Dies ist der Teil, der die SQL Kommandos auflöst (Par-ser, Optimizer) sowie die Kernel-Zugriffs Mechanismenund Kernel Routinen beinhaltet.

• OPI: Oracle Prozess Interface, Schnittstelle zu UNIX Be-

triebssystem um via Pipe mit dem Userprozess kommu-nizieren zu können.

Shared SQL

System Global Area (SGA)

ShadowProzess

DB-Files

UserProzess

BufferManager

SQL-Prozessor

OPI

Applikation

UPI

OCISQLLIB

UNIX Pipe

Shadow- und UserProzessbefinden sich auf der gleichenWorkstation

Page 42: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 42/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 40 von 86

Userprozess Der Userprozess besteht im wesentlichen aus vier Komponenten:

• Applikation: Eigentliche Anwendung wie SQLPLUS, Forms usw.

• SQLLIB: Precompiler Schnittstelle (z.B. Pro*C). Library mit vorde-finierten Calls um auf Datenbank zugreifen zu können.(High-Level Interface).

• OCI: Oracle Call Interface, Low-Level Interface. Wird vom«normalen User» kaum verwendet.

• UPI: Zu OPI entsprechende Schnittstelle

6LQJOH7DVN$UFKLWHNWXU 

Mit der Einführung von Oracle7 auf DOS/Windows und MAC Systemen,hat diese Implementation an Bedeutung gewonnen. Da diese Betriebssy-steme keine Prozesskommunikation unterstützen sind User- undShadowprozess in einem Task vereint.

64/1HW,PSOHPHQWDWLRQ

SQL*Net ist eine Erweiterung zur lokalen Two Task Implementation. DieInterprozesskommunikation zwischen dem Userprozess und dem Shadow-

prozess ist dadurch erweitert, dass OPI und UPI auf verschiedenenRechnern sind. SQL*Net verwendet zur Interprozess Kommunikation beiUNIX das Berkeley Socket TCP/IP Interface.

ShadowProzess

DB-Files

UserProzess

BufferManager

SQL-Prozessor

OPI

Applikation

UPI

OCISQLLIB

Shadow- und UserProzess

befinden sich nicht auf dergleichen Workstation

SQL*Net Driver SQL*Net Driver

TCP/IP

Shared SQL

System Global Area (SGA)

Page 43: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 43/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 41 von 86

8.2 Hintergrundprozesse

Die nötigen Hintergrundprozesse werden beim Startup der Datenbankautomatisch gestartet (startup nomount). Sie sind keinem «Controlling Ter-minal» mehr zugeordnet, das heißt Fehlermeldungen dieser Prozesseerscheinen nicht auf der Console. Sie protokollieren in die Oracle Log-Files: ?/rdbms/log/xxx.trc und ?/rdbms/log/alert.log.

Diese Files sind bei Datenbank-Problemen zu konsultieren. Von Zeit zuZeit sollten die Logfiles im Directory ?/rdbms/log gelöscht werden.

GEZU  Der Database Writer GEZU schreibt alle modifizierten Daten-, Index- undRollbacksegment Buffer aus der SGA in die Datenbankfiles. ModifizierteBuffer werden nach dem LRU («Least recently used») Algorithmus verzö-gert (Deferred Write) auf die Disk geschrieben. Diejenigen Buffer welchesehr oft in der SGA benötigt werden, behält der RDBMS-Kernel in der SGAum einen schnellen Zugriff zu ermöglichen. Die Buffer, auf welche keinZugriff mehr erfolgt, werden geschrieben. Wären also nicht auch andereMechanismen vorhanden, so würden die viel benutzten Buffer gar nie

geschrieben. Dies darf aber nicht der Fall sein, deshalb ist der LRU Algo-rithmus nicht das einzige Kriterium zum Schreiben der Buffer.

Oracle trägt die geänderten Buffer («dirty Buffer») in der «Dirty-List» ein.Diese Buffer müssen vom GEZU in die Datenbankfiles geschrieben werden,wenn die Bedingungen zum Schreiben erreicht werden. In der «LRU-List»sind die Buffer entsprechend ihrer Anzahl Zugriffe geordnet. Wird ein Buf-fer benutzt, so wird er aus der «LRU-List» entfernt und in die «Dirty-List»eingetragen. Beide Listen sind doppelt verkettet. Die Anzahl Database Wri-ter kann mit dem LQLWRUD Parameter DB_WRITERS definiert werden. Sinddie Tablespaces auf mehrere Disks verteilt, sollte man gleich viele GEZU¶V 

definieren wie aktive Tablespace Disk’s vorhanden sind.

OJZU  Der Log Writer OJZU schreibt die Logbuffer in das aktive Redolog File. Ein«gespiegeltes» Schreiben auf zwei aktive Redolog Files ist in der Version 7möglich geworden. Verliert man alle aktiven Redolog Files, so verliert manin jedem Fall getätigte Transaktionen. Wie auch der Database Writerschreibt der Log Writer die Redo-Entries mehrerer Transaktionen gleich-zeitig in das Redolog File («Piggybacking»). Bei sehr vielen Transaktionenwelche «commited» werden, kann der Log Writer rasch zum aktivsten Pro-zess im System werden. Bei gespiegelten Redologfiles schreibt der OJZU  parallel auf alle aktiven Redologfiles gleichzeitig.

am meistenbenutzter Buffer

am wenigstenbenutzter Buffer

LRU-List

«Dirty»-List

HeaderListe der benutzten Buffer

Page 44: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 44/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 42 von 86

Deferred Write Um eine gute Performance zu erreichen, werden die Datenbuffer so langewie möglich in der SGA behalten. Um das Risiko der Daten Inskonsitenz zuvermindern müssen die modifizierten Buffer von Zeit zu Zeit in die Daten-bankfiles geschrieben werden.

Beachte:

SPRQ Der Prozess Monitor SPRQ führt die Rollbacks von «abgestürzten» undabgebrochenenTransaktionen durch. Er liest also die Rollback-SegmenteAuch das Freigeben von Locks nach einem Prozess Recovery ist die Auf-gabe des  SPRQ

VPRQ Der System Monitor ist verantwortlich für das Instance Recovery. EineInstance Recovery erfolgt nach einem SHUTDOWN ABORT. Der SystemMonitor VPRQ übernimmt im weiteren das Löschen von temporärenSegmenten

DUFK Archiviert die vollen Online Redolog Files. Ist nur im ARCHIVELOG Modeaktiv.

UHFR Der Recoverer Prozess UHFR versucht nicht erfolgreich durchgeführte2 Phasen Commits bei verteilten Datenbanken zu wiederholen. Gelingtdies nicht, so werden entsprechende Einträge in die «In-Doubt» Tabellenim Datendictionary geschrieben. Solche Transaktionen müssen manuell

korrigiert werden.

Online

Database Buffer Pool Redo LogBuffer

System Global Area (SGA)

LGWR

Tablespaces

Redolog

DBWR

Meldung an lgwrzum Schreibender Logbuffer

dbwr schreibt wenn:• Bei jedem Checkpoint• wenn DB_BLOCK_WRITE_BATCH / 2

in der Dirty-List erreicht wird• Wenn keine leeren Buffer in der LRU

mehr vorhanden sind

• lgwr schreibt wenn:• Wenn der GEZU einen

uncomitted Bufferschreiben muß,schreibt auch der OJZU  seinen entsprechen-den Redobuffer.

• Bei jedem Commit• Wenn keine freien Buf-

fer mehr in der SGAvorhanden sind.

Schreibt der Datenbase Writer GEZU einen «uncommited» Buffer indas Datenbankfile, so unterrichtet er den Log Writer OJZU auch sei-nen entsprechenden Redobuffer zu schreiben, selbst wenn nochkein Commit erfolgt ist. (VGDUIDOVRQLHHLQ'DWHQEXIIHULQGHU

'DWHQEDQNVHLQZHQQQLFKWDXFKGHUHQWVSUHFKHQGH5HGREXIIHULP5HGRORJ)LOHYRUKDQGHQLVW Das Redolog File gewährt in jedem Fall die Konsistenz der Daten-, Index- und RollbacksegmentBuffer

Page 45: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 45/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 43 von 86

9. 0XOWL7KUHDGHG6HUYHUXQG64/1HW

9.1 Multi-Threaded Server

Wird Oracle7 als «Dedicated Server» betrieben, so erzeugt jeder Benut-zerprozess einen ihm zugewiesenen Shadowprozess. Dies kann bei vielengleichzeitigen Benutzern zu Betriebssystem Engpässen führen.

Durch das Konzept des Multi-Threaded Server Konzepts können dieShadowprozess reduziert werden.

UserProzess

UserProzess

UserProzess

Clients

Listener

Dispatcher

TCP/IP

Dispatcher

DECnet

Dispatcher

IPX

1 2

3

Response Queuefür 

Dispatcher IPX

Response Queuefür 

Dispatcher TCP

Response Queuefür

Dispatcher DECnet

Request Queuefür

alle Dispatcher

6

Shared

Server

Database

5

4

7

8

Server

SGA

SQL*Net2

Page 46: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 46/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 44 von 86

Ablauf 1. Client stellt Request an den Listener. Dazu wird ein SQL*Net 2 Protokollverwendet wie beispielsweise TCP/IP, SPX/IPX, DECnet oder LU6.2.Um die protokollspezifischen Teile in ein einheiliches Format zu wandelnbenutzt Oracle TNS (Transparent Network Substrate). Für jedes einzel-ne Protokoll liefert Oracle einen separaten Adapter.

2. Listener weist dem Client den protokollspezifischen Dispatcher Prozess

zu. Pro SQL*Net2 Protokoll exitiert ein Dispatcher.3. Der Client stellt das SQL Kommando an den zugewiesenen Dispatcher

4. Der Dispatcher stellt das SQL Kommando in die Request Queue in derSGA. Es gibt genau eine einzige Request Queue.

5. Der erste freie Shared Server holt das SQL Kommando ab und führt esvia ein normaler Dedicated Server aus.

6. Der Shared Server stellt das Ergebnis in die Response Queue des ent-sprechenden Dispatchers. Jeder Dispatcher hat seine eigene ResponseQueue.

7. Der Dispatcher liefert schlussendlich das Ergebnis an den Client Pro-

zess zurück.

716XQG64/1HW$GDSWHUV

Wenn SQL*Net2 installiert wird, so werden die beiden Adapter BEQ undIPC automatisch installiert und konfiguriert.

BEQ: Prozesskommunikation über Unix Pipes. Dieser Adapter kann nichtmit dem MTS kommunizieren, er benutzt immer einen DedicatedServer Prozess.

IPC: Prozesskommunikation über UNIX Domain Name Sockets

SQL*Plus

SQL*Net2

Client

TNS

SPX/IPXAdapter

Herstellerspezifisch

Oracle

SQL*Net2

Server

TNS

TCP/IPAdapter

Herstellerspezifisch

SPX/IPXAdapter

DECNetAdapter

Page 47: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 47/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 45 von 86

Adapters Kommando Anzeigen welche Adapter installiert sind

$ adapters

Installed SQL*Net V2 Protocol Adapters are:V2 BEQ Protocol AdapterV2 IPC Protocol AdapterV2 TCP/IP Protocol Adapter

Anzeige welche Adapter in SQL*Plus gelinkt sind$ adapters sqlplus

SQL*Net V2 Protocol Adapters linked with sqlplus are:V2 BEQ Protocol AdapterV2 IPC Protocol AdapterV2 TCP/IP Protocol Adapter

.RQILJXUDWLRQ0XOWL7KUHDGHG6HUYHU 

1. MTS Parameter in INIT.ORA definieren

• MTS_LISTENER_ADDRESS

Mögliche Netzwerkprotokolle festlegen mit denen Datenbank via Liste-ner kommunizieren kann. Diese Adresse muss auch in der DateiOLVWHQHURUD definiert werden. Für UNIX Ports braucht es keinen Eintragmehr in  HWFVHUYLFHV, die Portnummer kann seleber gewählt werden.

MTS_LISTENER_ADDRESS = "(ADDRESS=(PROTOCOL) (PORT=5555) (HOST=wizard)"MTS_LISTENER_ADDRESS = "(ADDRESS=(decnet) (OBJECT=OUTA) (HOST=wizard)"

• MTS_DISPATCHERS

Hier wird definiert, welche Dispatcher beim aufstarten der Instance ge-startet werden müssen. Pro Protokoll können ein oder mehrere Dispat-cher gestartet werden.

MTS_DISPATCHERS = "ipc, 1"# Run exactly one IPC DispatcherMTS_DISPATCHERS = "tcp, 2"# Run two TCP Dispatchers

Damit werden die Prozess RUDBGB0<6,',RUDBGB0<6,',RUDBGB0<6,', RUDBGB0<6,', RUDBGB0<6,' undRUDBGB0<6,' gestartet.

• MTS_SERVICE

Dies definiert den sogenannten 6HUYLFH1DPH, mit dem ein User beimCONNECT auf eine Instance einen Dispatcher benutzen kann. Oraclekontrolliert bei jedem Datenbank Connect ob ein Dispatcher für diesenService vorhanden ist. Gemäss Oracle Manual (Admin Guide Version7.1.4 Seite A-32) sollte 6HUYLFH1DPH dem ORACLE_SID entsprechen.Wenn ein Dispatcher aus irgend einem Grund kein Connect durchführen

kann, so connected Oracle via Dedicated Server.'HU6HUYLFH1DPH muss mit (SID = xxx ) im File WQVQDPHVRUD übereinstimmen.

MTS_SERVICE =  0<6,' 

analog in tnsnames.ora:

(CONNECT_DATA = (SID =  0<6,' ))

Die anderen MTS Parameter sind selbsterklärend.

Page 48: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 48/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 46 von 86

9.2 SQL*Net Version2

hEHUVLFKW Mit SQL*Net2 können Datenbanken in unterschiedlichen Netzen transpa-rent angesprochen werden.

Domain: Hierarchischer Aufbau von Rechnersystemen analog demDomain Name System im Internet wie beispielsweise  $JOXHFK Für flache Hierarchien verwendet Oracle den Default Domain-namen «ZRUOG ».

Community:Bezeichnung eines Netzes mit gleichem Netzwerkprotokoll wiebeispielsweise «tcpcom»

.RQILJXUDWLRQVILOHV Sowohl Client wie auch Server benötigen verschiedene Konfigurationsfilesdamit die Zuordnungen möglich werden.

Da auf einem Server in der Regel auch Client Applikationen benutzt wer-den, verfügt der Server auch über das Client Konfigurationsfile«tnsnames.ora».

SPX/IPX TCP/IP

Oracle Multiprotocol Interchange

Clients in Community «spxcom»

Server in Community «spxcom»

Community «spxcom»

Clients in Community «tcpcom»

Server in Community «tcpcom»

Community «tcpcom»

Domain

A B

TCP/IP

Clients in Community «tcpcom»

Server in Community «tcpcom»

• Client Konfigurationsfiles:• tnsnames.ora• sqlnet.ora

• Server Konfigurationsfiles:

• listener.ora

Page 49: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 49/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 47 von 86

/LVWHQHU  Für den Betrieb des Multi-Threaded Servers ist SQL*Net 2 erforderlich.SQL*Net 2 setzt einen Listener Prozess ein, der in der Lage ist ClientRequests von verschiedenen Netzwerkprotokollen zu bearbeiten. Er ver-bindet den Client Prozess mit dem protokollspezifischen Dispatcher dergewünschten Datenbank. Der Listener Prozess läuft nur auf dem Daten-bank Server, die Clients benötigen keinen Listener.

• Der Default Name des Listeners ist /,67(1(5 Da der Listener Namepro Host eindeutig sein muss hängt der Oracle Network Manager demListener Name den Host- und Domainnamen an:

/,67(1(5!/,67(1(5BKRVWQDPHGRPDLQ

• Pro Host können mehrere Listener konfiguriert werden, jeder Listenerkann mehrere Datenbanken verwalten:

• Listener kann mit einem Dedicated Server, einem Multithreaded Serveroder einem Prespawned Shadow Prozess kommunizieren

Host

Listener 1 Listener 2 Listener 3

SGA

DedicatedServer

MTS PrespwnedShadow

ListenerClient

Database

Page 50: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 50/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 48 von 86

/LVWHQHURUD Der Aufbau des Files listener.ora (ein File pro Host) besteht aus:

• dem oder den Namen des Listeners.• den Adressen (IPC,TCP,DECNET etc) auf die der Listener horcht.• den Datenbanken (SID’s) die der Listener verwaltet.• diversen Parametern

Beachte Der Service Name in ADRESS_LIST muss mit SERVICE_NAME im FileTNSNAMES.ORA übereinstimmen.

GLOBAL_DBNAME muss mit Eintrag in INIT.ORA übereinstimmen.

SID_NAME muss mit Oracle SID übereinstimmen.

Die Adressen ADRESS_LIST müssen auvh im INIT.ORA für den MTS Ser-ver definiert werden.

LISTENER =

(ADDRESS_LIST =

(ADDRESS=

  (PROTOCOL=IPC)

  (KEY = A.glue.ch)

  )

  (ADDRESS=

(PROTOCOL = IPC)

(KEY = A )

)

(ADDRESS =

(COMMUNITY = tcp.glue.ch)

  (PROTOCOL = TCP)

(Host = wizard.glue.ch)

(Port = 1526)

)

(ADDRESS=

  (PROTOCOL=IPC)

  (KEY=B.glue.ch)  )

  (ADDRESS=

(PROTOCOL=IPC)

(KEY= B)

)

(ADDRESS =

(COMMUNITY = tcp.glue.ch)

  (PROTOCOL = TCP)

(Host = wizard.glue.ch)

(Port = 1526)

)

)

STARTUP_WAIT_TIME_LISTENER = 0

CONNECT_TIMEOUT_LISTENER = 10

LOG_DIRECTORY_LISTENER = /ora716/network/log

LOG_FILE_LISTENER = listener.log

TRACE_LEVEL_LISTENER = ADMIN

TRACE_DIRECTORY_LISTENER = /ora716/network/log

TRACE_FILE_LISTENER = listener.trc

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = A.glue.ch)

(SID_NAME = A )

(ORACLE_HOME = /ora716)

)

(SID_DESC =

(SID_NAME = B)

(ORACLE_HOME = /ora716)

(PRESPAWN_MAX = 10)

(PRESPAWN_LIST =

(PRESPAWN_DESC =

(PROTOCOL = TCP)(POOL_SIZE = 0)

(TIMEOUT = 10))

)

)

)

SQL*Net Protokolleauf die Listenerhorcht

T r � � v p r I h � r t r � l � � U I T I 6 H @ T P S 6  

 

Lokale Adresse des ListenersFür lokale Client Connections, also für Cli-ents auf dem Server selbst werden dielokalen Interprozess Kommunikationsproto-kolle definiert. Dies sind für Unix IPC (UnixDomain Name Socket) und für VMS MBX(Mailbos Adapter). Jeder mögliche

T r � � v p r à  

I h � r  

wird mit der lokalen Adresseverbunden.

P � h p y r T D 9 s � q r � 9 v � � h � p u r �  

Mit dieser Adresse identifiziert der Dispatcherdiesen Listener

Q � � � 6 q � r � � r  

Port-Adresse auf dem der Listener auf exter-nen Client Requests horcht.

Control Parameter

Beschreibung der

Datenbank SID’s

für welche der

Listener horcht

Q � r � � h � � r q à 9 r q v p h � r q à T r � � r � à Q � � p r � � r �  

Damit wird für die datenbank B ein oder meh-rere Dedicated Server Prozesse gestartet.

I h � r à q r � à 9 h � r � i h � x à v � à v � v � T D 9 � � h  

T D 9 Ã q r � Ã 9 h � r � i h � x  

Page 51: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 51/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 49 von 86

WQVQDPHVRUD Das Client Konfigurationsfiles tnsnames.ora weist den Weg zu vorhande-nen Listener Prozessen, damit eine Verbindung zu einer Datenbankhergestellt werden kann. Der Userprozess wird mit einem sogenannten6HUYLFH1DPH aufgerufen, der dann im Konfigurationsfile in einen &RQQHFW'HVFULSWRU umgewandelt wird. Dieser Connect Descriptor wird dann überdas Netz an den definierten Listener geschickt.

Beispiel: sqlplus scott/tiger@A 

• Der zweite eingetragene 6HUYLFH1DPH  $ZRUOG ist ein $OLDV für $JOXHFK, er definiert den genau gleichen Connect Descriptor. BeimAufruf eines Clients muss der Default Domain Name ZRUOG nicht ange-geben werden (VTOSOXVVFRWWWLJHU#$ oder VTOSOXVVFRWWWLJHU#$JOXHFK). Das Konfigurationsfile kann mit dem Oracle Tools QHWPDQ erstellt werden.

• Man beachte nochmals, dass TNS den &RQQHFW'HVFULSWRU dem Liste-ners am definierten Server überreicht. Dieser weist aufgrund des

(SID =P\VLG ) die Datenbank dem Client zu. Im Parameterfile INIT.ORAmuss der Multi-Threaded Server mittels mts_service =P\VLGzugewie-sen werden.

• Service Name muss mit DB_NAME im INIT.ora File des betreffendenServers übereinstimmen. Jeder Service muss einen Connect Descriptoraufweisen. Der Connect Descriptor beschreibt den Listener und dessenDatenbank SID die benutzt werden soll.

A.glue.ch =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS =

(COMMUNITY = tcp.glue.ch)

(PROTOCOL = TCP)

(Host = wizard.glue.ch)

(Port = 1526)

)

)

 

(CONNECT_DATA =

(SID = A)

(GLOBAL_NAME = A.glue.ch)

)

)

A.world =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS =

(COMMUNITY = tcp.glue.ch)

(PROTOCOL = TCP)

(Host = wizard.glue.ch)

(Port = 1526)

)

)

(CONNECT_DATA =

(SID = A)

(GLOBAL_NAME = A.glue.ch)

)

)

Service Name6 q � r � � r à q r � à G v � � r � r � �   im Netz.In diesem Fall verfügt der Host

� v � h � q  

übereinen Listener, der auf das Protokoll TCP/IPhorcht. Der UNIX Port ist frei wählbar er mussnicht mehr in

  r � p � r � � v p r �  

definiert werden.

TNS ConnectDescriptor

6 G D 6 T à q r � à T r � � v p r à I h � r  

Damit kann die Datenbank auch unter diesemALIAS angesprochen werden. Der TNS Con-nect Descriptor ist genau der selbe wie oben.

T D 9 Ã q r � Ã 9 h � r � i h � x  

, die mit dem Listener ver-bunden ist. Dieses SID muss mit dem MTSParameter MTS_SERVICE im INIT.ORA fileübereinstimmen

Page 52: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 52/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 50 von 86

VTOQHWRUD Das Konfigurationsfile sqlnet.ora wird von allen Clients im Netzwerk benö-tigt. Es beinhaltet die folgenden Angaben:

• Dead Connection Dedection. In zeitlichen Abständen wird die Verbin-dung zum Server kontrolliert.SQLNET.EXPIRE_TIME

• Default Domains.

DEFAULT_DOMAIN• Verwendung eines Dedicated Servers anstelle des MTS (Default). Man

beachte, dass ein Shutdown / Startup nur über einen Dedicated Servergemacht werden kann. Oracle OEM benötigt diesen Eintrag.USE_DEDICATED_SERVER=YES

• Automatische Verwendung von IPC’sFür den Oracle OEM wird die automatische Verwendung von IPC’s de-aktiviert:AUTOMATIC_IPC=OFF

#######################################################################

# Filename......: sqlnet.ora

# Purpose.......: Configuration File for SQL*Net2# Node..........: ASUS (OEM-Console)

# Date..........: 15.2.1997 / Martin Zahn

#######################################################################

#

AUTOMATIC_IPC = OFF

TRACE_LEVEL_CLIENT = OFF

SQLNET.EXPIRE_TIME = 0

NAMES.DIRECTORY_PATH = (TNSNAMES)

NAMES.DEFAULT_DOMAIN = world

NAME.DEFAULT_ZONE = world

#

# OEM Konsole, to allow Startup/Shutdown

# of the Remote Database

#

USE_DEDICATED_SERVER = on

Auffinden derDatenbank

Damit der Client die gewünschte Datenbank auf dem Server findet und dortder entsprechende MTS Dispatcher gestartet werden kann müssen dieDatenbank Identifiers in den Files,1,725$, WQVQDPHVRUD und OLVWHQHURUD übereinstimmen.

INIT.ORA

.............

.............

mts_service =  MYSID

.............

.............

(CONNECT_DATA =(SID = 0<6,')

)

(SID_DESC =(SID_NAME = 0<6,')

............

listener.ora

tnsnames.ora

Datenbank Server

Listener auf Datenbank Server

Client

Page 53: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 53/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 51 von 86

10. 2UDFOH'DWHQGLFWLRQDU\Das Datendictionary (DD) besteht aus einer Reihe von readonly Tabellen,die alle beim Kreieren der Datenbank durch die Scripts VTOEVT und FDWDORJVTO erstellt werden. Nicht nur für Oracle selbst ist das Datendictionaryvon Bedeutung, sondern für jeden Datenbankbenutzer enthält es vieleInformationen die für ihn wichtig sein können. Änderumgen an den Daten-dictionary Tabellen dürfen auf keinen Fall durchgeführt werden (etwas alsUser SYS). Das Datendictionary ist strukturiert in Tabellen und Views wienormale Datenbankdaten.

,QIRUPDWLRQHQLP'' • Namen aller Datenbankbenutzer mit ihren Rechten

• Privilegien und Rollen jedes Benutzers

• Namen der Schema Objekte (Tables, Views, Snapshots, Indexes, Clu-sters, Synonyms, Sequences, Procedures, Functions. Packages, Trig-gers, etc).

• Informationen zu Integrity Constraints

• Beanspruchter Platz durch die Datenbankobjekte

Viele Tabellen des Datendictionary werden in die SGA geladen um einensehr raschen Zugriff zu ermöglichen.

=XJULIIDXIGDV'' Der Zugriff erfolgt «dosiert», je nach Benutzerart. So hat beispielsweise einDBA mehr Einsicht als ein normaler Benutzer. Es existieren folgende DD-Views

Beispiel Dynamisch ein SQL Script generieren, das die Inhalte in den eigenenTabellen löscht.

select ’delete from ’||table_name||’;’from user_tablesorder by table_name;

delete from BONUS;delete from CUSTOMER;

delete from DEPT;........

Spezielle User All DBA

DICTIONARYZeigt alle Tables,Views etc die fürBenutzer zugäng-lich sind

USER_xxxZugriff auf eigeneObjekte

ALL_xxxZugriff auf Objektedie der GruppePUBLIC zugeord-net wurden. Eben-so Zugriff auf Ob- jekte die explizitgegranted wur-den.

DBA_xxxZugriff nur fürDBA’s, zeigenalle Informatio-nen

DUALPseudotabelle dieimmer ein Resul-tat liefert.

Page 54: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 54/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 52 von 86

11. 'DWHQLQWHJULWlW,QWHJULW\&RQVWUDLQWVIn einem relationalen Datenbankmodell werden auf logischer EbeneRegeln definiert, welche die zugrunde liegenden Daten erfüllen müssen.Zur Implementierung dieser Regeln bietet Oracle zwei grunsätzlich ver-schiene Metoden an, die deklarative und programmtechnische Integrität.

'HNODUWLYH,QWHJULWlW Ein Grund für den Erfolg von Oracle ist bestimmt dem äusserst mächtigenKonzept der deklartiven Integritätskontrolle zuzuschreiben. Gerade im Cli-ent / Server Konzept spielt dieses Konzept heute eine grosse Rolle. Beimdeklartiven Konzept werden die Regeln bereits beim Kreieren der Objektevergeben, dies bedeutet später bei der Applikationsprogrammierung einewesentliche Zeitersparnis. Zudem sind diese Regeln immer auf dem Ser-ver angesiedelt was in einem Client / Server Konzept grosse Vorteile aufdie Performance hat. Zudem gelten diese so definierten Regeln unabhän-gig von der Applikation.

Folgende Regeln können deklartiv vergeben werden:• NOT NULL constraint• UNIQUE constraint• PRIMARY KEY constraint• FOREIGN KEY constraint• CHECK constraint

Beispiele CREATE TABLE kanton (kanton_nr NUMBER(2) PRIMARY KEY,kanton_name VARCHAR2(5)  NOT NULL,datum_mut DATE);

CREATE TABLE bezirk (bezirk_name VARCHAR2(5) PRIMARY KEY,kanton_nr NUMBER(2) REFERENCES

kanton(kanton_nr)ON DELETE CASCADENOT NULL,

datum_mut DATE);

CREATE TABLE etappe (etappe_nr NUMBER(10 PRIMARY KEY,projekt_nr NUMBER(10) REFERENCES

projekt(projekt_nr)

ON DELETE CASCADENOT NULL,

subv_nr_projekt NUMBER(5),subv_nr_etappe NUMBER(2) NOT NULL,

UNIQUE(projekt_nr,subv_nr_projekt,subv_nr_etappe));

Page 55: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 55/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 53 von 86

3URJUDPPWHFKQLVFKH,QWHJULWlW

Komplexere Integritätsregeln, die deklarativ nicht realisiert werden könnenmüssen programmtechnisch realisiert werden. Oracle7 bietet auch hiersehr effiziente Methoden an wie

• Datenbank Trigger• Stored Procedures• Applikatorische Überprüfung

Datenbank Trigger Datenbank Trigger «feuern» unabhängig von der Applikation auf dem Ser-ver. Dadurch können komplexe Integritätsregeln implementiert werdenbeispielsweise für ein Auditing.

Beispiel:

PROMPT Auditing of Table KANTONCREATE TRIGGER audit_kanton_chBEFORE INSERT OR UPDATE ON kantonFOR EACH ROWBEGIN

:NEW.kurz_mut := USER;:NEW.datum_mut := SYSDATE;END;

Stored Procedures Proceduren und Functionen können ausserhalb der Client Applikationdirekt auf dem Server implementiert werden und dort von dieser aufgerufenwerden. Dadurch wird ein grosser Performancegewinn erzielt.

Applikation

StoredProcedure

SQL

ProceduralProceduralStatementEngin

PL/SQL Engin

SQL Engin

Oracle ServerOracle Client

LAN

Page 56: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 56/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 54 von 86

12. 'LVWULEXWHG'DWDEDVHV

12.1 Verteilungsarten

Verteilte Datenbanken gewinnen zunehmend an Bedeutung, man holt sichInformationen dort wo sie vorhanden sind. Dies setzt jedoch ein wesentlichanspruchsvolleres Konzept voraus als bisher behandelt. Moderne Daten-

banksysteme wie Oracle 7.2 verfügen über mächtige Mechanismen zurUnterstützung von verteilten Datenbanken. Grundsätzlich befinden sich dieDaten eines grossen Systems (Data Warehouse) nicht mehr allein lokal aufdem zentralen Server, sondern können (theoretisch) weltweit verteilt sein.

Man unterscheidet dazu folgende Verteilungsarten:

'LVSHUVLRQ Tabellen sind UHGXQGDQ]IUHLDXIGHQ1HW]NQRWHQYHUWHLOW, jede Tabellekommt nur einmal auf genau einem Knoten im System vor. Dieser (opti-male) Zustand wird zur Zeit kaum angestrebt, da die Netzzugriffe nochzulange dauern. Doch in Zukunft (ATM) wird dieser Zustand wohl mehr und

mehr Realität, Anwendungen dazu sind zuhauf vorhanden (Reservations-systeme, Informationssysteme etc).

5HSOLNDWLRQ Bei der Replikation werden gewisse Tabellen auf weitere Netzknotenkopiert (repliziert). Dies selbstverständlich nicht durch ein simples Kopie-ren, sondern unter strenger Kontrolle. Eine Variante der Replikation stellen6QDSVKRWV dar, die von Oracle7 unterstützt werden.

)UDJPHQWLHUXQJ Fragmente sind Teile einer Tabelle (bestimmte Anzahl Datensätze) auf dieNetzknoten verteilt.

12.2 TransparenzUnter Transparenz versteht man das gezielte «Verstecken von Komplexizi-tät». Dem Anwender soll der Eindruck von Einfachheit vermittelt werden.Erstaunlicherweise gelingt dies bereits in vielen Fällen.

/RNDOH7UDQVSDUHQ] Der Benutzer kann auf einer Tabelle auf einem entfernten Netzknotengenau gleich arbeiten wie wenn diese lokal vorhanden wäre. Dies ist inOracle7 vollständig möglich durch 'DWDEDVH/LQNV und 6\QRQ\PH

1HW]ZHUN7UDQVSDUHQ]

Teilnetze des Gesamtsystems können aus unterschiedlichen Netzprotokol-len aufgebaut sein (TCP/IP, IPX, DECnet etc). Dies ist in Oracle7 praktisch

vollständig implementiert mittels 64/1HW und dem Oracle 7UDQVSDUHQW1HWZRUN6XEVWUDWH (TNS) sowie dem 0XOWLSURWRFRO,QWHUFKDQJH Zusatz.

'%067UDQVSDUHQ] Datenbanken unterschiedlicher Hersteller sollen in einem Informationssy-stem benutzt werden können, das heißt auf den Netzknoten könnenverschiedene DBMS residieren. Oracle7 unterstützt dies bereits auch fürsehr viele Datenbanken durch das Konzept der Oracle 2SHQ7UDQVSDUHQW*DWHZD\V

Page 57: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 57/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 55 von 86

12.3 Manipulationen mit verteilten Daten

Mittels Database Links können von der lokalen Datenbank aus auf dieTables auf einer Remote Datenbank zugegriffen werden.

Folgende Funktionen sind möglich:

• Connecting auf Remote Datenbank• Kopieren von Tables von / zu Remote Datenbank• Queries von Tables auf der Remote Datenbank

&RQQHFWLQJDXI5HPRWH'DWHQEDQN

Dazu «logged» man sich auf der entfernten Datenbank ein(analog TELNET) und kann dann mit der Remote Datenbank arbeiten.

VTOSOXVVFRWWWLJHU#&211(&7B675,1*VHOHFWIURPHPS

(UVWHOOHQHLQHV'DWHQEDQN/LQNV

Ein explizites Connecting auf die Remote Datenbank ist nicht mehr erfor-derlich. Die Verbindung wird durch einen Datenbank Link erstellt. Damitkann permanent auf die Remote Tabelle zugegriffen werden. Die Tabelleexistiert nur auf der Remote Datenbank. Unter Oracle6 konnten nur

SELECTS durchgeführt werden, in Oracle7 sind auch INSERTS,UPDATES und DELETES möglich, selbstverständlich werden dabei dieZugriffsrechte überprüft.

'52338%/,&'$7$%$6(/,1.%:25/'(Remote DB-Name = «%»)&5($7(38%/,&'$7$%$6(/,1.%:25/'&211(&772RWD,'(17,),('%<RWD86,1*27$ (Connecct-Sting in tnsnames.ora = OTA)

&5($7(38%/,&6<121<066&25'(5)2566&25'(5#%:25/'

Global Naming Der INIT.ORA Parameter GLOBAL_NAMES = TRUE erzwingt den glei-chen DB-Link Namen wie die DB auf welche der DB-Link zeigt. Enforcethat a dblink has same name as the db it connects to).

JOREDOBQDPHV758(

remote SGA «B»

remote Database «B»

local SGA «A»

local Database «A»

LAN

System: eiger

System: napf

Connecting Table «emp»

Page 58: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 58/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 56 von 86

7DEOHYRQ5HPRWH'DWDEDVHNRSLHUHQ

Mit dem SQL*Plus Kommando COPY können gesamte Tabellen vonDatenbank zu Datenbank kopiert werden

VTOSOXVVFRWWWLJHUFRS\IURPVFRWWWLJHU#%WRVFRWWWLJHU#$FUHDWHHPSXVLQJVHOHFWIURPHPS

7DEOH]X5HPRWH'DWDEDVHNRSLHUHQ

Hier in umgekehrter RichtungVTOSOXVVFRWWWLJHUFRS\WRVFRWWWLJHU#$

UHSODFHHPSXVLQJVHOHFWIURPHPS

remote SGA «B»

remote Database «B»

local SGA «A»

local Database «A»

LAN

System: eiger

System: napf

KopierenTable «emp»

Page 59: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 59/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 57 von 86

13. 7UDQVDNWLRQVNRQWUROOHEine Transaktion ist eine logisch zusammen hängende Einheit von einemoder mehreren SQL Kommandos. Am einfachsten stellt man sich eineUmbuchung eines Geldbetrags von einem Konto auf das andere vor. DieTransaktion umfaßt hier das Abbuchen und Aufbuchen. Ein Abbuchenohne Aufbuchen ist absolut unzulässig. Um diese atomaren Vorgänge zusichern stellt jedes DBMS Kommandos zur Transaktionskontrolle zur Ver-fügung (Commit und Rollback).

7UDQVDNWLRQVEHJLQQ • Beim Logon (CONNECT) eines Benutzers auf die Datenbank• Nach einem Transaktionsabschluss mit Commit.

7UDQVDNWLRQVHQGH • Beim Logoff (DISCONNECT) eines Benutzers (Implizites Commit).• Bei einem DDL Kommando (create, alter, drop)• Bei einem DCL Kommando (grant, revoke)• Bei implizitem oder explizitem Rollback• Bei implizitem oder explizitem Commit

([SOL]LWHV&RPPLW Das explizite Commit wird auf ausdrücklichen SQL Befehl ausgelöst, wäh-rend das implizite Commit ein «verstecktes», durch Oracle gesteuertesCommit ist.

DML Kommandos wieupdate, insert, delete benötigen immer einexplizites Commit.

,PSOL]LWHV&RPPLW Nach jedem DDL und DCL Kommando erfolgt ein automatisches Commitdurch Oracle ausgelöst:

([SOL]LWHV5ROOEDFN Das explizite Rollback wird auf ausdrücklichen SQL Befehl ausgelöst.Damit wird die gesamte angefangene Transaktion rückgängig gemacht.Oracle führt ein implizites Rollback nach einem Fehler während der Aus-führungsphase eines SQL Kommandos durch. Zum Beispiel nach einemORA-0001 ‘duplicate key in index’. Bei einem Rollback werden die bereitsgeschriebenen Blocks anhand der Rollbacksegmente wieder erstellt, wie

update emp set dept = ‘xxx’ where dept = ‘sales‘;

Weitere DML Kommandos wie z.B. update, insert, delete, select

commit;Transaktionsende

Transaktionsbeginn

create table emp (

..............);Transaktionsende

Transaktionsbeginn

Page 60: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 60/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 58 von 86

zum Zustand vor Transaktionsbeginn. Bestehende Locks werden aufgeho-ben. Das Kommando rollback macht immer die gesamte Transaktionrückgängig.

6DYHSRLQWV Manchmal ist es wünschenswert, die Transaktion nur zum Teil rückgängigzu machen. Oracle bietet dazu die sogenannten Savepoints an, dies sindFlags, welche mit dem Kommando rollback to «savepoint»angesprungen werden können.

,PSOL]LWHV5ROOEDFN Oracle setzt vor jedes SQL Kommando einen «versteckten» Savepoint(impliziter Savepoint). Tritt ein Fehler ZlKUHQG der EXECUTE Phase desKommandos auf, so wird automatisch mittels implizitem Rollback zum«versteckten» Savepoint gesprungen.

update emp set dept = ‘xxx’ where dept = ‘sales‘;

Weitere DML Kommandos wie z.B. update, insert, delete, select

rollback;Transaktionsabbruch

Transaktionsbeginn

update emp set dept = ‘xxx’ where dept = ‘sales‘;savepoint save_1;

Weitere DML Kommandos wie z.B. update, insert, delete, select

rollback to save_1;Transaktionsabbruch

Transaktionsbeginn

«versteckter, impliziter Savepoint»update emp set dept = ‘xxx’ where dept = ‘sales‘;ORA-1457 ‘failed to allocate extents of size ...’Execute Fehler

Page 61: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 61/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 59 von 86

14. 'DWDEDVH$FFHVV

14.1 Privilegien

Das Konzept der System- und Objektprivilegien sowie das Rollenkonzeptwurde in Oracle7 komplett neu implementiert um Zugriffsrechte sehr gezielterteilen zu können. Die Zugriffsrechte werden auf drei Ebenen vergeben:

• Auf Datenbankebene (System Privilegien)• Auf Objektebene (Objekt Privilegien)• Auf Befehls-, Toolsebene

6\VWHP3ULYLOHJLHQ System Privilegien definieren welche globalen Datenbankrechte einemBenutzer zugestehen. Zur Zeit unterscheidet Oracle7 mehr als 80 ver-schiedene Rechte (siehe System Administrator Guide Seite 12-2). Aushistorischen Gründen wurden die drei Privilegien von Oracle6CONNECT, RESOURCE und DBA neu in Form von vordefinierten Rollenweitergeführt.

CONNECT Privileg Damit hat ein Benutzer das Recht:

• In Datenbank einzuloggen (CREATE / ALTER SESSION).• Queries auf Tables oder Views anderer Benutzer, sofern «SELECT» für

den User erteilt wurde. Es reicht auch, wenn die Rechte auf das Objectfür den speziellen Datenbank Benutzer 383/,& erteilt wurden.

• Durchführung von INSERT’s, UPDATE’s und DELETE’s auf die Tables,Views anderer Benutzer, sofern der Inhaber des Objects dies erlaubthat. (Jedes Objekt hat einen Owner!)

• Erstellen von Views, Synonyms und Database-Links.• Exports / Imports der eigenen Datenbank Objekte.• Das Erstellen von Tables, Cluster, Sequences oder Indexes ist nicht

möglich.

RESOURCE Privileg Mit dem Resource Privileg kann ein User auch Objekte erstellen. Vom DBAkann das Resource Privileg auf die gesamte Datenbank oder nur auf einenbestimmten Tablespace erteilt werden.

• Beinhaltet alle «CONNECT» Rechte• Das Erstellen von Tables, Cluster, Sequences oder Indexes

DBA Privileg Man unterscheidet zwei DBA Privilegien, einem 6\VWHP'%$ und 1RQ6\VWHP'%$ Privileg. Die Unterscheidung erfolgt auf BetriebssystemEbene, unter UNIX wird dazu die GED Gruppenzugehörigkeit verwendet.

Page 62: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 62/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 60 von 86

1RQ6\VWHP'%$3ULYLOHJ

Ein 1RQ6\VWHP'%$hat alle CONNECT und RESOURCE Privilegien. Erdarf zusätzlich:

• Eröffnen eines neuen Datenbank Benutzers• SQL-Access auf alle Datenbank Objekte außer denjenigen des Daten-

bank Besitzers SYS.• Erteilen von Privilegien an Datenbank Benutzer (GRANT, REVOKE)

• Kreieren von PUBLIC Synonyms. Diese sind allen Benutzern zugäng-lich.

• Full Export / Import• Database Recovery• CREATE, ALTER Tablespaces, Rollbacksegmente• Kein «CONNECT INTERNAL»• Kein STARUP / SHUTDOWN der Datenbank• Kein CREATE DATABASE• Durchführung von GRANTS im Namen anderer Datenbank Benutzer

sind nicht möglich.Meistens gibt es einige DBA’s mit diesen Rechten, ihnen ist es jedoch nicht

erlaubt eine Datenbank zu kreieren, eine Datenbank zu starten/stoppenoder den hochprivilegierten Befehl «CONNECT INTERNAL» abzusetzen.

6\VWHP'%$ Der 6\VWHP'%$ besitzt alle Rechte, grundsätzlich sollte nur ein einzigerBenutzer diese Rechte haben, dies ist der Besitzer der Datenbank.

Unterscheidung System-DBA und Non-System-DBA:

Dem 6\VWHP'%$ ist die UNIX Group GED als Default Gruppe zugeteilt.Non-System-DBA’s können mittels newgrp in diese Gruppe wechseln, sieerhalten dann die gleichen Rechte wie ein 6\VWHP'%$.

Wenn ein Benutzer gleichzeitig mehreren UNIX Gruppen angehören kann(zB SUN-OS oder HP-UX mit HWFORJLQJURXS), so entfällt das Kommando newgrp.

Beispiel: Einträge in  HWFSDVVZG und  HWFJURXS für System PrivilegedDBA «oracle» und Non-System Privileged DBA «mzahn»

 

mzahn:M7y3DrTfC4XFU:101:1:Martin Zahn:/home/mzahn:/bin/kshoracle:1XBdI9ZV.fpXQ:103:100:Oracle RDBMS Owner:/home/oracle:/bin/ksh

 /etc/passwd:

daemon:*:1:dba:*:100:root,mzahn

 /etc/group:• «oracle» ist in 6\VWHP'%$, seine Default Gruppe ist dba

• «mzahn» ist in der dba Gruppe, er ist ein 1RQ6\VWHP'%$.Er kann mittels UNIX Kommando newgrp ohne Group-Passwort Abfrage in die Gruppe «dba» wechseln und so einSystem-DBA werden

Page 63: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 63/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 61 von 86

2EMHNW3ULYLOHJLHQ Datenbank Objekte wie Tables, Views, Synonyme, Sequences und Proce-duren usw. müssen durch unsachgemäße Benutzung geschützt werden.Die folgende Tabelle zeigt eine Übersicht der möglichen Objekt Privilegienund Objekte:

Objekt Privilegienauf Tables

Einige Beispiele:

1. SELECT an User Scott auf Table emp:JUDQWVHOHFWRQHPSWRVFRWW

2. SELECT, INSERT, UPDATE an jedermann:JUDQWVHOHFWLQVHUWXSGDWHRQHPSWRSXEOLF

3. Alle Rechte an jedermann:JUDQWDOORQHPSWRSXEOLF

4. SELECT, INSERT, UPDATE von mzahn.emp für jedermann entfernenUHYRNHVHOHFWLQVHUWXSGDWHRQHPSIURPSXEOLF

5. SELECT von mzahn.emp für User Scott entfernen:UHYRNHVHOHFWRQHPSIURPVFRWW

6. UPDATE auf die spezifischen Columns sal und comm der Table emp:JUDQWXSGDWHVDOFRPPRQHPSWRVFRWW

Object Privilegien

auf Views

Einige Beispiele:

7. SELECT an User Scott auf View emp_view:JUDQWVHOHFWRQHPSBYLHZWRVFRWW

8. Überprüfung von INSERT und UPDATE in View mittelsWITH CHECK OPTIONFUHDWHYLHZHPSBYLHZ

DVVHOHFWIURPHPSZKHUHMRELQ¶6$/(60$1¶¶0$1$*(5¶¶35(6,'(17¶DQGVDOVHOHFWPD[VDOIURPHPSZKHUHMRE¶35(6,'(17¶DQGGHSWQRLQVHOHFWGHSWQRIURPGHSWZLWKFKHFNRSWLRQ

Im obigen Beispiel werden bei einem INSERT oder UPDATE die Bedingun-gen (Constraints) getestet.

Privileg Table View Sequence Procedure

ALTER object ja ja

DELETE FROM object ja ja

EXECUTE object (Procedure oder Function).Referenzieren von public Package Variablen

 ja

CREATE INDEX ON object ja

INSERT INTO object ja ja

REFERENCES, CREATE or ALTER eines FOREIGN Key Inte-grity Constraints.

 ja

SELECT ... FROM object ja ja ja

UPDATE object ja ja

Page 64: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 64/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 62 von 86

UPDATE auf TableColumns verhindern

Soll verhindert werden, dass bestimmte Columns der Table verändert wer-den können, muß nicht zwingendermassen eine View erstellt werden. Fürdas UPDATE Privileg kann definiert werden, welche Columns verändertwerden dürfen.

UPDATE’s sollen nur auf den Columns HPSQR, HQDPH,  MRE und GHSWQR erlaubt sein.

JUDQWXSGDWHHPSQRHQDPHMREGHSWQRRQHPSWRWHVW (Scott)

XSGDWHVFRWWHPSVHWGHSWQRZKHUHHPSQR (Test)

1 row updated.

XSGDWHVFRWWHPSVHWVDOZKHUHHPSQR (Test)

ORA-01031: insufficient privileges

Die Column VDO kann durch den Benutzer WHVW nicht verändert werden.

empno ename job mgr hiredate sal comm deptno

Page 65: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 65/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 63 von 86

14.2 Roles

Mit Oracle7 wurden Datenbank Roles eingeführt. Damit können mehrerePrivilegien und Roles zusammengefaßt werden und dann als Ganzes einerGruppe von Benutzern zugeteilt werden. Auf diese Weise wird es möglicheine komplexe Applikation leicht zu verwalten. Es ist nicht mehr notwendig jedem einzelnen Benutzer die Rechte separat zu erteilen.

hEHUVLFKW Die folgende Übersicht zeigt, wie die Rollen «Clerks», «Financiers» und«Engineers» an reale Datenbankbenutzer weitergegeben werden können.

Privilegien für Rolle«Clerk»

Privilegien für Rolle«Financier»

Privilegien für Rolle«Engineer»

Privilegien für Rolle«Admin»

Objekt-

Rolle«Clerk»

Rolle«Financier»

Rolle«Engineer»

Rolle«Admin»

grant

grant grant grant

privilegien

System-privilegien

grant

«Clerks»

«Financiers»«Engineers»

«Administrator»

Page 66: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 66/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 64 von 86

Ablauf zur Erstellung: REM

REM Create Roles

REM

FUHDWHUROHDSOBFOHUN

REM

REM Grant "System" Privileges to Roles

REM

JUDQWFUHDWHVHVVLRQWRDSOBFOHUN

REM

REM Grant "Object" Privileges to Roles

REM

JUDQWVHOHFWRQ(03WRDSOBFOHUN

REM

REM Grant Roles to real DB Users

REM

FUHDWHXVHURSVEHLGHQWLILHGH[WHUQDOO\GHIDXOWWDEOHVSDFHXVHUV

WHPSRUDU\WDEOHVSDFHWHPSJUDQWFRQQHFWWRRSVEHJUDQWDSOBFOHUNWRRSVEHDOWHUXVHURSVEHGHIDXOWUROHDSOBFOHUN

14.3 Datenbank Benutzer als OPS$User einrichten

Führt ein Benutzer das UNIX Kommando ps -ef durch, so wird ihm dasPasswort unverschlüsselt angezeigt (mzahn 5306 2152 ttyp3 0:00sqlplus mzahn/mzahn). In SQL Scripts muß meistens mittels «connectuser/passwort» eine Verbindung zur Datenbank hergestellt werden,dadurch steht das Passwort im Script. Bei Scripts, welche das Data Dictio-

nary abfragen steht somit das Passwort des Users «SYSTEM» oder des6\VWHP'%$ «oracle» unverschlüsselt im Script. Damit dies verhindertwerden kann, erlaubt Oracle einen sogenannten OPS$User. Dieser Usermuß unter dem gleichen Datenbanknamen auch unter UNIX vorhandensein.

Page 67: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 67/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 65 von 86

15. ([SRUW,PSRUWDaten aus einer Datenbank können mittels Export in ein File geschriebenwerden und von dort mittels Import wieder geladen werden. Bei einemExport/Import File handelt es sich QLFKWXPHLQHHGLWLHUEDUH$6&,,'DWHL,sondern um ein plattformunabhängiges Fileformat. Exports und Importswerden immer dann verwendet um Daten von einer Plattform auf eineandere zu zügeln.

hEHUVLFKW

([SRUW,PSRUW0RGHV

Export kennt drei Exportarten (Modes):

• Table Exportieren einzelner Tabellen• User Exportieren aller Objekte eines Benutzers• Full Database Exportieren einer gesamten Datenbank

([SRUW3DUDPHWHU  Durch die Angabe von Export Parametern kann der Export gesteuert wer-den. So ist es zum Beispiel möglich das CREATE Table .... Statement zugenerieren, ohne dass Daten auch exportiert werden.

,PSRUW3DUDPHWHU  Wie der Export, kann auch der Import Parametergesteuert ablaufen.

exp ...

Export DateiDatabase (binär)

imp ...

Database

HP9000 PC

Table Mode User Mode Database Mode

FULL=Y FULL=Y FULL=Y

OWNER=... OWNER=... OWNER=...

TABLES=... TABLES=... TABLES=...

Ermöglicht das Exportie-

ren von Tables mit Inhaltoder nur deren Struktu-ren.DBA kann Tabellen einesanderen Benutzers ex-portieren.

Backup eines gesamten

Benutzers, zum Beispielum gelöschten Benutzerzu archivieren oder Ta-bles von einem Benutzerauf den anderen zu über-tragen.

Gesamter Datenbankex-

port ohne die Tabellendes Benutzers SYS. Wirdvorallem angewendet umgesamte Datenbankenvon System zu Systemzu transferieren.

Page 68: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 68/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 66 von 86

7\SLVFKH%HLVSLHOH Im Table Mode kann ein Benutzer seine Tabellen exportieren / importieren.Ein DBA hat das Recht Tabellen anderer Benutzer zu exportieren / impor-tieren, dazu muss er das Privileg EXP_FULL-DATABASE haben.Wird der Parameter rows=n gesetzt, so wird nur das CREATE TABLEStatement exportiert ohne die Daten.

Tabelle mit Datenexportieren / importieren

H[SXVHULGVFRWWWLJHUWDEOHV?HPS?ILOHHPSGPSLPSXVHULGVFRWWWLJHUWDEOHV?HPS?ILOHHPSGPS

Tabellenstrukturen (ohneDaten) exportieren

H[SXVHULGVFRWWWLJHUURZVQWDEOHV?HPS?ILOHHPSGPSLPSXVHULGVFRWWWLJHUWDEOHV?HPS?ILOHHPSGPS

Indexfile erstellen Sollen die Indexe einer Tabelle neu erstellt werden, so ist es am einfach-sten wenn man ein Indexfile mittels Import erstellt. Dieses generierteIndexfile kann dann benutzt werden um die Indexe neu anzulegen.

H[SXVHULGVFRWWWLJHUILOHHPSGPSLPSXVHULGVFRWWWLJHULQGH[ILOH\ILOHHPSGPS

Damit ist das Indexfile y.sql kreiert worden, es enthält alle CREATE INDEXStatements. Um die Indexe neu anzulegen muss nur noch das Script y.sqlmittels sqlplus scott/tiger @y.sql gestartet werden.

Export / Import inkomprimiertes File

Bei sehr großen Export-Dateien kann es vorkommen, dass der Platz aufder Disk nicht ausreicht; es muß komprimiert werden. Das Export-Utilitybietet jedoch keine Option zum Komprimieren der Datei an. Eine Möglich-keit bietet sich mittels UNIX Named Pipe an. Man kreiert eine Named Pipeund veranlaßt H[S hineinzuschreiben. Auf der anderen Seite der Pipe liest

FRPSUHVV die Daten und komprimiert sie.

 PNQRGILIRSQRKXSFRPSUHVVILIR!IXOOBH[SRUWGPSH[SV\VWHPIXOO\ILOHILIRJUDQWV\FRPSUHVV\LQGH[HV\

QRKXSXQFRPSUHVVIXOOBH[SRUWGPS!ILIRLPSV\VWHPIXOO\ILOHILIRLJQRUH\JUDQWV\

Export / Import via namedPipe direkt auf Tape

 PNQRGILIRSQRKXSGGLIILIRRIGHYUPWPREV!GHYQXOO!

H[SV\VWHPIXOO\ILOHILIRJUDQWV\FRPSUHVV\LQGH[HV\

QRKXSGGLIGHYUVWRIILIRLEV!GHYQXOO!LPSV\VWHPIXOO\ILOHILIRLJQRUH\JUDQWV\

exp ... compress

named pipe (fifo)

compressed exportDatabase

Page 69: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 69/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 67 von 86

Einzelne Table abFull-Export zurücklesen

LPSXVHULGV\VWHPWDEOHV+%.2172IURPXVHU(5:ILOHIXOOBH[SGPS

Tabellen in anderenTablespace verschieben

Export/Import eignet sich sehr gut um Storage Parameter zu optimieren.Sind zB die Anzahl Extents zu klein, so müssen diese auf den DatenbankObjekten geändert werden. Im folgenden Beispiel wird der Tablespace-

name geändert.

1. Datenbank exportieren:

H[SV\VWHPRZQHUVFRWWQGH[HV\JUDQWV\FRPSUHVV\ILOHGEIXOOGPS

2. Indexfile erstellen:

LPSV\VWHPIXOO\LQGH[ILOHGEIXOOVTOILOHGEIXOOGPS

3. «CREATE TABLE ...» Statements kreieren aus Indexfile. Dazu kann dassed ScriptFUHDWHBWDEOHBIURPBLQGH[ILOHVKverwendet werden. DiesesScript filtert die CREATE TABLE Statements heraus. Manuell muss

noch das CONNECT user/pw nachgetragen werden. Anschließend wirdder Tablespacename geändert.

# Generieren der CREATE TABLE Statements aus Indexfile## sed Kommandos## "/̂ REM/!d" Loesche alle Zeilen die nicht ein ’REM’ am Anfang# der Zeile haben# "s/̂ REM //" Loesche String ’REM ’# "/rows/d" Loesche alle Zeilen mit ’rows’# "/;/a\\ Fuege nach jedem ’;’ ein ’DISCONNECT;’ ein# DISCONNECT;"\# "/CONNECT.*/s//&;/" Fuege ein ’;’ an jede Zeile die ’CONNECT’ enthaelt# am Ende der Zeile an: CONNECT SYSTEM --> CONNECT

# ---------------------------------------------------------------------

echo "Edit Output-File ’create_tables.sql’ with Passwords for Users:"sed -e "/̂ REM/!d"\-e "s/̂ REM //"\-e "/rows/d"\-e "/;/a\\DISCONNECT;"\-e "/CONNECT.*/s//&;/" $1 > create_tables.sql

echo "Output-File ’create_tables.sql’ created"

4. Tabellen in altem Tablespace löschen

5. Tables in neuem Tablespace vorkreieren

VTOSOXVVFRWWWLJHU#FUHDWHBWDEOHV

6. Usertabellen importieren. Es empfiehlt sich die Datenbank ohne Indexezu importieren, da Fehler auftreten können. Die Indexe werden anschlie-ßend aus dem Indexfile erstellt:

LPSXVHULGV\VWHPRVLULVIURPXVHUVFRWWWRXVHUVFRWWLJQRUH\LQGH[HVQILOHGEIXOOGPS

7. Indexe aus Indexfile erstellen. Dazu wird das IndexfileGEIXOOVTO editiert.

Auf diese Weise können auch andere Storage Parameter verändertwerden.

Page 70: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 70/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 68 von 86

3UREOHPHPLW([SRUW,PSRUW

Für viele DBA’s bedeutet ein Export / Import unter Oracle ein Spiel mit demFeuer. Immer wieder stellt sich die Frage, was exportiert Oracle standard-mäßig ? Im obigen Output von Export sieht man, welche Datenbankobjekteexportiert werden, man beachte, dass unter Oracle 7.1.4 die DatenbankRoles (noch) nicht exportiert werden. Ignoriert man diese Tatsache, so gibtes nach einem Import eine böse Überraschung. Um das Schlimmste zuverhindern empfiehlt sich folgendes Vorgehen.

1. Objekte vor dem Export dokumentieren

VTOSOXVVFRWWWLJHUVHOHFWREMHFWBW\SHFRXQWIURPXVHUBREMHFWVJURXSE\REMHFWBW\SH

OBJECT_TYPE COUNT(*)------------- ----------INDEX 4SEQUENCE 3TABLE 10VIEW 1

2. Roles des Benutzers dokumentierenVTOSOXVVFRWWWLJHUVHOHFWIURPVHVVLRQBUROHV

ROLE------------------------------CONNECTRESOURCEAPL_CLERK

Die Tabelle XVHUBREMHFWV und VHVVLRQBUROHV sind sehr wichtige Datendictio-nary Tables. Die Tabelle XVHUBREMHFWV enthält die Definitionen der Objekteeines Benutzers. Die Tabelle VHVVLRQBUROHV enthält die aktive Role eines

Benutzers wenn er sich auf die Tabelle connected.

:LFKWLJVWH3XQNWH]X([SRUW,PSRUW

• Daten werden immer in gleichen Tablespace zurückgeladen. Existiertdieser Tablespace nicht, so muss er vorkreiert werden, dies wird durchImport nicht gemacht. Soll in einen anderen Tablespace importiert wer-den so müssen die Tabellen in diesem Tablespace vorkreiert werden(siehe Beispiel).

• Wird FRPSUHVV\ beim Export angegeben so werden die Daten in einenExtent geladen (Möglichkeit um fragmentierte Extents zu reorganisieren).

• Mit LJQRUH\ ist es möglich bestehende Rows zu ignorieren, es bestehtaber die Gefahr, dass gleiche Rows mehrfach geladen werden.

• Mit FRPPLW\ wird am Ende eines Array Fetches ein Commit durchge-führt. Dadurch können auch größte Tabellen geladen werden, ohne dieFehlermeldung CAN NOT ALLOCATE .... zu erhalten. Allerdings dauertder Importvorgang dann etwas länger.

• Die Tabellen des Users SYS werden nie exportiert. Diese werden beimErstellen einer Datenbank neu angelegt. Nur so ist eine Migration von ei-ner alten Version auf eine Neue möglich.

Page 71: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 71/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 69 von 86

16. %DFNXSXQG5HFRYHU\Die Notwendigkeit einer Datensicherung einer Datenbank ist sicher unbe-stritten. Oracle bietet verschiedene Möglichkeiten zur Datensicherung an,eine übersicht zeigt die folgende Zusammenstellung.

hEHUVLFKW

Wie bereits gesehen sichern die Redologfiles die Konsistenz der Daten-bank. Diese Redologfiles werden zyklisch immer wieder neu beschrieben.Der einzige Unterschied zwischen Online Backup (ARCHIVELOG) und Off-line Backup (NOARCHIVELOG) besteht also darin, bei einem Logswitch

das Redologfile zu sichern. Eine Umstellung auf eine der Betriebsartenkann jederzeit erfolgen.

Backup-Methoden

Export (logisch) Datensicherung (physisch)

Online Offline

• Sicherung des Daten-bank Inhalts (Tables, In-dexe, Grants, Cons-traints, Synonyme usw)

• Sicherung der Struktu-ren (Indexfile)

• Datenbank muß onlinesein

• Häufigste Anwendun-gen sind die Migrationauf neue Versionen,Datentransport von

Datenbank zu Daten-bank und Daten-reorganisation

• Oracle Tool exp / imp

• Physische Sicherungder Daten während deslaufenden Betriebs.

• Sicherung auf Table-space-Ebene

• Datenbank befindet sichim ARCHIVELOGMode.

• Sicherstellung der Da-tenbankfiles mittelsUNIX Kommandos

• Wiedererstellung derDaten bis zur letzten ab-geschlossenen Transak-tion mittels Rollforward / Rollback

• Physische Sicherungder Daten wenn Daten-bank gestoppt ist.

• Datenbank befindet sichim NOARCHIVELOGMode.

• Sicherstellung der Da-tenbankfiles mittelsUNIX Kommandos.

• Transaktionen seit letz-ter Sicherung sindverloren.

• Sicherung nur nachtsmöglich wenn Daten-bank gestoppt werdenkann.

Page 72: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 72/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 70 von 86

8PVWHOOXQJDXI$5&+,9(/2*

Bei der Umstellung auf ARCHIVELOG Mode sind zwei Sachen zu tun:

• Änderung des Log Modes• Automatische Archivierung der Redologfiles

Vorgehen:

1. Datenbank stoppen.2. Datenbankparameter setzen in: LQLWRUD und FRQILJRUD

ORJBDUFKLYHBVWDUWWUXHORJBDUFKLYHBGHVWRUDFOHNXUVDUFKORJ

Mit dem Parameter ORJBDUFKLYHBVWDUW wird das automatische Archivie-ren der Redologfiles aktiviert. Der Parameter ORJBDUFKLYHBGHVW definiertdas Archivelogdirectory.

3. ARCHIVELOG Mode im Datadictionary aktivieren

VYUPJUO

FRQQHFWLQWHUQDOVWDUWXSPRXQWDOWHUGDWDEDVHDUFKLYHORJDOWHUV\VWHPDUFKLYHORJVWDUWDUFKLYHORJOLVW

Page 73: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 73/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 71 von 86

16.1 Online Backup

)XQNWLRQ Im ARCHIVELOG Mode erfolgt der Backup der Datenbank während deslaufenden Betriebes, die Datenbank wird nicht mehr gestoppt. Jeder Table-space wird einzeln gesichert mit den zugehörigen Datenbankfiles.Während des Online Backups werden die «Checkpoint Timestamps» nichtmehr in die Header der Datenbankfiles geschrieben. Alle Datenbank-

Objekte welche gesichert werden weisen also die Zeit (Timestamp) desletzten Checkpoints auf. Damit kann Oracle bei einem Recovery automa-tisch feststellen, welche Offline Redolog Files zurückappliziert werdenmüssen.

,QKDOWGHV2QOLQH%DFNXSV

Nebst den Datenbankfiles müssen auch die archivierten Offline Redolog-files und ein Controlfile gesichert werden. 'LH2QOLQH5HGRORJILOHVVLQGQLFKW]XVLFKHUQGDGLHVHQLFKWLQHLQHPNRQVLVWHQWHQ=XVWDQGVLQG.

Sie dürfen grundsätzlich nicht verloren gehen, deshalb sind diese äusserstwichtigen Files allenfalls auf eine andere Disk zu duplizieren (DuplexedRedolog Files). Verliert man die Online Redologfiles, so verliert man immerTransaktionen, ein Cancel based Recovery muss angewendet werden.

Ein Online Backup besteht also aus

• Allen Datenbankfiles (sämtliche Tablespaces)• Allen archivierten offline Redologfiles• Einem archivierten Controlfile• Parameterfile init<SID>.ora• Passwortfile

      c       h      e      c       k      p      o       i      n       t

       b      e

      g       i      n

       b      a

      c       k     u      p

      e      n

       d

       b      a

      c       k     u      p

Backup der DB-Files

Transaktionen undCheckpoints gehen wäh-rend Datensicherungweiter. Alle Header dergesicherten Objekte wei-sen Timestamp des

Checkpoints zum Zeit-punkt EHJLQEDFNXS auf

Timestamps derCheckpoints werdenwieder in die Headergeschrieben.

Transaktionen

Alle DB-Objekte des gesicherten Table-spaces weisen den Timestamp desletzten Checkpoints auf

Online

Tablespaces

 

Redolog

OfflineRedolog

SavedControl

Tape

ControlOnline

init.oraPasswort

File

Buffer Pool Redolog Buffer Pool

SGA

DBWR LGWR ARCH

Page 74: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 74/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 72 von 86

/RJ6HTXHQFH1XPPHU 

Jede Redologfile das archiviert wird bekommt eine Log-Sequence Num-mer, die fortlaufend numeriert ist. Diese Nummer ist für ein Recovery vongroßer Bedeutung, sie muss deshalb zusammen mit dem OnlineBackup protokolliert werden.

Current log sequence:Redologfile das aktuell online ist (Online Redolog)

Oldest online log sequence:Redologfile das zuletzt archiviert wurde.

Wenn der Online Backup mit BEGIN BACKUP gestartet wird muss dieNummer «Oldest online log sequence» protokolliert werden. Sie definiertden Beginn der archivierten Redologfiles. Alle älteren archivierten Redo-logfiles können nach dem Backup auf der Harddisk gelöscht werden.Die Online Redologfiles dürfen im Online Backup Mode nicht mitgesichertwerden, da sie keinen definierten Zustand aufweisen. Ein konsistenterOnline Backup weist zudem immer ein mitALTER DATABASE BACKUP CONTOLFILE gesichertes Controlfile auf.Die Durchführung des Online Backups kann vollautomatisch erfolgen wenndazu das folgende Script verwendet wird.

Online

 

OfflineRedolog

System Global Area (SGA)

LGWR ARCH

RedologOnline

47 46

45

43

44Current log sequence = 47

Oldest online log sequence = 46

Page 75: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 75/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 73 von 86

/RJJLQJGHV2QOLQH%DFNXS

Im DOHUWORJ wird der Online Backup durch das RDBMS protokolliert. Vongroßer Wichtigkeit ist, dass zu einem BEGIN BACKUP ... auch immer einEND BACKUP gehört, damit der Online Backup konsistent ist.

Tue Oct 10 12:16:38 1995Thread 1 advanced to log sequence 588Current log# 2 seq# 588 mem# 0: /oracle7/kurs/log_group2_1B.dbfCurrent log# 2 seq# 588 mem# 1: /oracle7/kurs/log_group2_2B.dbf

Tue Oct 10 12:16:38 1995alter tablespace system begin backup  <------ Start Online Backup für SYSTEM TablespaceTue Oct 10 12:16:38 1995Completed: alter tablespace system begin backupTue Oct 10 12:16:38 1995alter tablespace rbs begin backupCompleted: alter tablespace rbs begin backupTue Oct 10 12:16:38 1995alter tablespace temp begin backupCompleted: alter tablespace temp begin backupTue Oct 10 12:16:39 1995alter tablespace tools begin backupCompleted: alter tablespace tools begin backupTue Oct 10 12:16:39 1995alter tablespace users begin backupCompleted: alter tablespace users begin backupTue Oct 10 12:16:39 1995

alter database backup controlfile to’/oracle7/kurs/back_ctrlfile.ctl’ reuseCompleted: alter database backup controlfile to’/oracle7/kur...Tue Oct 10 12:17:20 1995alter tablespace system end backup  <------ End Online Backup für SYSTEM TablespaceCompleted: alter tablespace system end backupTue Oct 10 12:17:20 1995alter tablespace rbs end backupCompleted: alter tablespace rbs end backupTue Oct 10 12:17:20 1995alter tablespace temp end backupCompleted: alter tablespace temp end backupTue Oct 10 12:17:20 1995alter tablespace tools end backupCompleted: alter tablespace tools end backup

Tue Oct 10 12:17:20 1995alter tablespace users end backupCompleted: alter tablespace users end backup

Damit hat man einen konsistenten Online Backup, der für ein Recoverybenötigt wird. Man beachte nochmals, dass der Online Backup währenddem laufenden Betrieb erfolgen kann. Durch die Checkpoint Timestampskann Oracle bei einem Recovery die notwendigen Offline Redologfilesanfordern.

Page 76: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 76/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 74 von 86

16.2 Recovery

Es existieren verschiedene Recoverymethoden, abhängig davon welcheDatenbankfiles verloren gehen.

hEHUVLFKW

Recovery-Methoden

Instance Recovery Media Recovery

Complete Incomplete

• Verlust der SGA infolgeSystem-Crash. SMONProzess führt Instance Re-covery durch.

• Zuerst werden die SGA-Buffer aus dem Online Re-dologfile rekonstruiert. An-

schließend erfolgt ein Roll-back der uncommitedTransaktionen und alleLocks werden freigegeben

• Nach einem 6KXWGRZQDERUW wird automatisch einInstance Recovery durch-geführt !

• Verlust eines Table-spaces

• Datenbank befindetsich im ARCHIVELOGMode.

• Datenbank ist geöff-net

• Tablespace darf kei-ne Rollbacksegmen-te haben

• SYSTEM Tablespa-ce darf nicht betrof-fen sein.

• Recovery stoppt au-tomatisch, wenn alleOffline Redologfilesappliziert sind.

• Erfolgen Fehlermel-dungen, so muß Off-line Recovery durch-geführt werden.

• recover tablespaceQDPH

• Verlust SYSTEM-Tablespace oder Ta-blespace mit aktivenRollbacksegmenten

• Gesamte Datenbankoder einzelne Daten-bankfiles können inRecovery einbezo-gen werden.

• Datenbank ist ge-schlossen

• Datenbank befindetsich im ARCHIVELOGMode.

• Recovery stoppt au-tomatisch, wenn alleOffline Redologfilesappliziert sind.

• Häufigste Methode !• startup mount

connect internalrecover database ...

• Verlust Online Redo-logfile, Controlfile

• Immer dann durch-führen, wenn infolgeeines korrupten Off-line Redologfiles Re-covery vor demEnde abgebrochenwerden muß.

• Datenbank ist ge-schlossen

• Datenbank befindetsich im ARCHIVELOGMode.

• Abbruch des Reco-very mittels CANCEL

• DBA muß wissen,wann Abbruch erfol-gen soll !

• startup mountconnect internalrecover database ...cancelalter database openresetlogs

• Verlust Online Redo-logfile, Controlfile

• Immer dann durch-führen, wenn Zeit-punkt des Crashesgenau bekannt ist.

• Recovery wird biskurz vor diesen Zeit-punkt durchgeführt

• Datenbank ist ge-

schlossen• Datenbank befindetsich im ARCHIVE-LOG Mode.

• Eher selten benutzt.• startup mount

connect internalrecover databaseuntil WLPH

• Verlust eines oder mehre-ren Datenbankfiles, Con-trolfiles, Redologfiles

Online Offline Cancel Point-in-Time

Page 77: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 77/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 75 von 86

5ROOIRUZDUGXQG5ROOEDFN

Bei einem Recovery werden die archivierten Redologfiles zurückappliziert,dieser Vorgang nennt man Rollforward. Alle Transaktionen werden auf-grund der Redoeinträge rekonstruiert, dabei werden auch uncommitedTransaktionen ausgeführt. In einer zweiten Phase werden die uncommitedTransaktionen mit einem Rollback zurückgesetzt, so dass sich die Daten-bank nach einem Recovery wieder in einem konsistenten Zustandbefindet.

Phase 1 Das verlorene Datenbankfile wird zurückkopiert. Jeder Datenfileheaderenthält eine tiefere Logsequence Nummer (12) als die aktuelle Logs-equence, die im Controlfile vermerkt ist (31).

Phase 2 Nun werden der Reihe nach sämtliche archivierten Redologfiles zurückap-pliziert (12 ... 30), dieser Vorgang heißt Rollforward. Vorhandeneabgeschlossene Transaktionen in anderen Datenbankfiles werden nichtneu generiert, es werden nur Transaktionen rekonstruiert, die verloren gin-gen, dadurch ist ein Recoveryvorgang in der Regel sehr rasch.

Phase 3 Sobald alle Redologfiles appliziert sind, werden die uncommited Transak-tionen mit einem Rollback aus den Rollbacksegmenten zurückgesetzt.

Wenn dieser Vorgang abgeschlossen ist haben alle Datenbankheader wie-der die gleich aktuelle Logsequence Nummer (31).

Beim complete Media Recovery werden alle Offline Redologfiles zurückap-pliziert, beim uncomplete Media Recovery stoppt man das Recoveryfrüher, beispielsweise bei Logsequence 16. Damit kann auf einen älterenZustand «gefahren» werden.

OnlineControl

System Global Area (SGA)

DBWR PMON SMON LGWR ARCH

DataRedolog

OfflineRedolog

12

3131

12

30

Tape

....

13

aktuell gültige Logsequence Nummerzurückgelesenes Datenbankfile

Page 78: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 78/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 76 von 86

&RPSOHWH0HGLD5HFRYHU\Beim Complete Media Recovery können alle commited Transaktionen wie-dererstellt werden. Auf den uncommited Transaktionen werden währenddem Recovery ein Rollback durchgeführt.

9HUOXVWHLQHV

QRUPDOHQ7DEOHVSDFHV

Die Datenbank wird im ARCHIVELOG Mode betrieben, es ist ein

RECOVER TABLESPACE durchzuführen. Es müssen nur die DB-Files,welche zum verlorenen Tablespace gehören zurückgeladen werden.Ein Online Complete Media Recovery kann benutzt werden wenn ein odermehrere Datenfiles eines Tablespaces verloren gehen, die keine Rollback-segmente enthalten. 'HU6<67(07DEOHVSDFHNDQDXIGLHVH$UWQLFKWUHNRQVWUXLHUWZHUGHQ.

Die Datenbank muss nicht gestoppt werden, die Transaktionen laufen aufden nicht beteiligten Tablespaces weiter.

1. Datenbank braucht QLFKW gestoppt zu werdenVYUPJUOFRQQHFWLQWHUQDO

2. Tablespace offline nehmen

DOWHUWDEOHVSDFHXVHUVRIIOLQHLPPHGLDWH

Wenn dies nicht mehr möglich ist alle betroffenen Datenfiles desTablespace offline stellen. Die Option «immediate» schreibt keineCheckpoints.

DOWHUGDWDEDVHGDWDILOH¶[[[[GEI¶RIIOLQHLPPHGLDWH

3. Verlorene Datenfiles und Offline Redologfiles ab Online Backup zurück-kopieren mittels UNIX tar, cp. Ebenso alle Archivefiles bereithalten.

4. Recovery starten

UHFRYHUWDEOHVSDFHXVHUV

Nun alle Offline Redologfiles angeben oder Option AUTO

DXWR

5. Tablespace online schalten

DOWHUWDEOHVSDFHXVHUVRQOLQH

Online

DBWR

Normaler

 

OfflineRedolog

Control

LGWR ARCH

Online

 

Redolog

TablespaceSYSTEM

Tablespace

AktivesOnline

Redolog

InaktivesOnline

Buffer Pool Redolog Buffer Pool

SGA

Page 79: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 79/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 77 von 86

9HUOXVWGHV6<67(0RGHU52//%$&.6HJPHQW7DEOHVSDFHV

Die Datenbank muss in diesem Fall mit SHUTDOWN ABORT gestopptwerden, es müssen sämtliche DB-Files zurückgeladen werden, es reichtnicht nur die DB-Files des SYSTEM bzw ROLLBACK Tablespaces zurück-zuladen. %HDFKWHGDVVGDVJHVLFKHUWH&RQWUROILOH1,&+7]XU�FNJHODGHQZHUGHQGDUIEin Offline Complete Media Recovery kannimmer dann benutzt werden wenn ein oder mehrere Datenfiles einesTablespaces verloren gehen, sowie wenn der Rollbacksegment- oder SYS-

TEM Tablespace verloren geht.

1. Die Datenbank muss gestoppt werden !VYUPJUOFRQQHFWLQWHUQDOVKXWGRZQDERUW

2. Instance mit EHVWHKHQGHQ Controlfiles starten

VWDUWXSPRXQW

3. Verlorene Datenfiles des SYSTEM- und Rollback Tablespace sowie die

Offline Redologfiles ab Online Backup zurückkopieren (tar, cp ...).'LH&RQWUROILOHV1,&+7]XU�FNODGHQ.

4. Recovery starten

UHFRYHUGDWDEDVH

5. Nun alle Offline Redologfiles angeben oder Option AUTO

DXWR

6. Datenbank wieder online nehmen

DOWHUGDWDEDVHRSHQ

Damit ist die Datenbank wieder konsistent.

Online

DBWR

Normaler

 

OfflineRedolog

Control

LGWR ARCH

Online

 

Redolog

TablespaceSYSTEM

Tablespace

AktivesOnline

Redolog

InaktivesOnline

Buffer Pool Redolog Buffer Pool

SGA

Page 80: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 80/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 78 von 86

&UDVKZlKUHQG2QOLQH%DFNXS

Der Online Backup wird bekanntlich mit BEGIN BACKUP gestartet. Nachdem Backup muss die Datenbank zwigend wieder in den END BACKUPZustand versetzt werden. Was passiert jedoch wenn während dem OnlineBackup ein Crash erfolgt oder die DB mit shutdown abort heruntergefahrenwird. Beim nächsten Startup meldet Oracle, dass die betroffenden Filesnoch im BEGIN BACKUP Mode sind. Mit dem Kommando alter databasedatafile 'dbfile(s)' end backup; wird manuell auf END BACKUP geschaltet

und der Backup muss wiederholt werden.

1. Beim Startup meldet OracleFRQQHFWLQWHUQDO

ORA-01113: Fur Datei ’5’ ist Datentrager-Recovery notwendigORA-01110: Datendatei 5: ’/opt/oracle/oradata/TOL2/tab/TOL2_tab1.dbf’

2. Kontrolle welche DB-Files im BEGIN Backup Mode sind

VHOHFWVXEVWUDQDPH'E)LOHDILOH)LOHEVWDWXV6WDWXVIURPYGDWDILOHDYEDFNXSEZKHUHDILOHEILOHRUGHUE\DILOH

DbFile File# Status------------------------------ ---------- ------------------/opt/oracle/oradata/TOL2/sys/T 1 NOT ACTIVE/opt/oracle/oradata/TOL2/rbs/T 2 NOT ACTIVE/opt/oracle/oradata/TOL2/tmp/T 3 NOT ACTIVE/opt/oracle/oradata/TOL2/usr/T 4 NOT ACTIVE/opt/oracle/oradata/TOL2/tab/T 5  $&7,9(

/opt/oracle/oradata/TOL2/cdr/T 6 NOT ACTIVE/opt/oracle/oradata/TOL2/cre/T 7 NOT ACTIVE/opt/oracle/oradata/TOL2/idx/T 8 NOT ACTIVE/opt/oracle/oradata/TOL2/tab/T 9  $&7,9(

3. Die beiden Files des TAB Tablespace auf END BACKUP schalten.

DOWHUGDWDEDVHGDWDILOHRSWRUDFOHRUDGDWD72/WDE72/BWDEGEIHQGEDFNXSDOWHUGDWDEDVHGDWDILOHRSWRUDFOHRUDGDWD72/WDE72/BWDEGEIHQGEDFNXS

4. Datenbank öffnen

DOWHUGDWDEDVHRSHQ

    c      h    e    c      k    p    o      i    n     t

      b    e    g      i    n

      b    a    c      k    u    p

    e    n      d

      b    a    c      k    u    p

Backup der DB-Files

Transaktionen

&UDVK

Page 81: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 81/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 79 von 86

,QFRPSOHWH0HGLD5HFRYHU\In speziellen Fällen muss man einen Recoveryvorgang manuell an einemdefinierten Punkt abbrechen und die Datenbank so auf einen älterenZustand setzen. Dies ist der Fall, wenn man alle Online Redologfiles ver-liert, was bei gespiegelten Redos eigentlich nie vorkommen sollte. Manunterscheidet mehrere Arten wie der Recoveryvorgang abgebrochen wer-

den kann:

Cancel Based Beim Cancel Based Recovery wird das Recovery an einem definiertenPunkt mittels RECOVER CANCEL abgebrochen. Anschließend wird diegesamte Datenbank auf einen älteren Zustand synchronisiert mittelsALTER DATABASE OPEN RESETLOGS.

Time Based Beim Time Based Recovery wird das Recovery zu einem definierten Zeit-punkt abgebrochen. Diese Art wird vorallem angewendet wenn auf einenälteren Zustand «zurückgefahren» werden soll. Bedingung ist, dass manden Zeitpunkt kennt.

Bedingungen für In-complete Recovery $OOH'DWHQILOHVP�VVHQYRP%DFNXS]XU�FNJHODGHQZHUGHQDa man auf einen älteren Zustand zurückkehrt müssen sämtliche Daten-bankfiles ab einem definierten Online Backup auf den Abbruchpunktgefahren werden. Die aktuellen Datenbankfiles sind wertlos, da sie einen jüngeren Zustand aufweisen als der Abbruchpunkt. Man sieht, dass man indiesem Fall mit Sicherheit Transaktionen verliert, bzw. verlieren will.

Im obigen Beispiel sind alle Transaktionen des Redologfiles mit derSequencenummer = 31 definitiv verloren. Man führt nun ein Cancel BasedRecovery bis und mit Sequencenummer = 30 durch. Die Sequencenum-mer im Controlfile wird mittels ALTER DATABASE OPEN RESETLOGSkorrigiert.

Control

System Global Area (SGA)

DBWR PMON SMON LGWR ARCH

Data

OfflineRedolog

12

31 12

30

Tape

....

13

aktuelle Logsequence Nummer

$OOH'DWHQEDQNILOHV]XU�FNOHVHQ

SYSTEM

12

Rollback

12

bis Log-Sequence 30zurückapplizieren

Page 82: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 82/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 80 von 86

&DQFHO%DVHG0HGLD5HFRYHU\

Beim Cancel Based Recovery wird der Recovery Vorgang bei einem defi-nierten Punkt mit CANCEL abgebrochen. Bei einem Verlust aller currentOnline Redologfiles muss immer ein Cancel Based Media Recovery durch-geführt werden. Verliert man die inaktive bereits archivierte Redolog Groupso muss kein Recovery durchgeführt werden, es genügt die RedologGroup neu zu kreieren. Man muss sich also zuerst vergewissern welcherZustand vorliegt, dazu dienen Informationen im Controlfile die abgefragt

werden können (Tabelle v$log).

9HUOXVWGHULQDNWLYHQ5HGRORJILOHV

Die inaktiven Redologfiles werden vom Logwriter Prozess OJZU bis zumnächsten Logswitch nicht beschrieben.

Die Datenbank stürzt beim nächsten Logswitch sofort ab, die Rekonstruk-tion der Redolog Group muss im NOARCHIVELOG Mode durchgeführtwerden. (VZHUGHQNHLQHJHVLFKHUWHQ'DWHQEDQNILOHV]XU�FNNRSLHUW

1. Datenbank stoppenVYUPJUO

FRQQHFWLQWHUQDOVKXWGRZQDERUW

2. Instance mit Controlfiles starten

VWDUWXSPRXQW

3. Status der Logfiles kontrollieren (aus Controlfile)

6(/(&7JURXSPHPEHUVVWDWXVDUFKLYHG)520YORJ

GROUP# MEMBERS STATUS ARC---------- ---------- -------- ---

1 2 CURRENT NO <-- diese existiert noch2 2 INACTIVE YES  GLHVHLVWYHUORUHQ

4. Datenbank in NOARCHIVELOG Mode setztenDOWHUGDWDEDVHQRDUFKLYHORJ

5. Neue Redolog Group anlegen.

DOWHUGDWDEDVHDGGORJILOHJURXSRUDFOHNXUVORJBJURXSB%GEIRUDFOHNXUVORJBJURXSB%GEIVL]H0

6. Alte, verlorene Redolog Group löschen

DOWHUGDWDEDVHGURSORJILOHJURXS

7. Datenbank wieder in ARCHIVELOG Mode setzen

DOWHUGDWDEDVHDUFKLYHORJ

Online

DBWR

Normaler

 

OfflineRedologControl

LGWR ARCH

Online

 

Redolog

TablespaceSYSTEM

Tablespace

AktivesOnlineRedologInaktivesOnline

Buffer Pool Redolog Buffer Pool

SGA

Page 83: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 83/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 81 von 86

9HUOXVWGHUDNWLYHQ5HGRORJILOHV

Die inaktiven Redologfiles werden vom Logwriter Prozess OJZU bis zumnächsten Logswitch nicht beschrieben.

Die Datenbank stürzt sofort ab, es muss ein Cancel Based Recovery biszum letzten Offline Redologfile durchgeführt werden. Die Datenbank mussin diesem Fall mit SHUTDOWN ABORT gestoppt werden, es müssen

sämtliche DB-Files zurückgeladen werden, es reicht nicht nur die DB-Filesdes SYSTEM bzw ROLLBACK Tablespaces zurückzuladen. %HDFKWHGDVVGDVJHVLFKHUWH&RQWUROILOH1,&+7]XU�FNJHODGHQZHUGHQGDUI

1. Datenbank stoppenVYUPJUOFRQQHFWLQWHUQDOVKXWGRZQDERUW

2. Instance mit bestehenden Controlfiles startenVWDUWXSPRXQW

3. Status der Logfiles kontrollieren (aus Controlfile)

6(/(&7JURXSPHPEHUVVWDWXVDUFKLYHG)520YORJ

GROUP# MEMBERS STATUS ARC---------- ---------- -------- ---

1 2 CURRENT NO  GLHVHLVWYHUORUHQ2 2 INACTIVE YES <-- diese existiert noch

4. Alle oben gelöschten Datenbankfiles ab Online Backup zurückkopieren(tar, cp ...), diese weisen alle einen älteren Zusatnd auf. Controlfiles nichtzurückladen.

5. Nun erfolgt das Cancel Based RecoveryUHFRYHUGDWDEDVHXQWLOFDQFHO

0LW$872! alle Offline Redologfiles applizieren bis Recoveryautomatisch stoppt, dann ein "Dummy" Recovery durchführen nur um Ora-cle mitzuteilen, dass ein CANCEL based Recovery durchgeführt wurde.

DXWRUHFRYHUGDWDEDVHXQWLOFDQFHOFDQFHO

2KQH$872! bis zum letzten Redologfile des vorhandenen OnlineBackups zurückapplizieren. Das Ende kann von Oracle nicht selbsterkannt werden.

FDQFHO

6. Nun wird die Datenbank geöffnet, das verlorene Online Redologfile wirdautomatisch aufgrund des Controlfile Eintrages wieder erstellt.DOWHUGDWDEDVHRSHQUHVHWORJV

Online

DBWR

Normaler

 

OfflineRedolog

Control

LGWR ARCH

Online

 

Redolog

TablespaceSYSTEM

Tablespace

AktivesOnline

Redolog

InaktivesOnline

Buffer Pool Redolog Buffer Pool

SGA

Page 84: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 84/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 82 von 86

9HUOXVWGHU&RQWUROILOHVHYDXFKGHV6<67(0XQGRGHU52//%$&.6HJPHQW7DEOHVSDFHV

Verliert man alle Controlfiles, so bestehen grundsätzlich zwei Möglichkei-ten diese wieder zu erstellen.

• Recovery mit Controlfile, das mittels $/7(5'$7$%$6(%$&.83&21752/),/( gesichert wurde, sofern dieses existiert.

• Controlfile mit dem Kommando &5($7(&21752/),/( neuerstellen, dazu muss die gesamte Datenbankstruktur bekannt sein.

Die Datenbank muss in diesem Fall mit SHUTDOWN ABORT gestopptwerden, es müssen sämtliche DB-Files zurückgeladen werden, es reichtnicht nur die DB-Files des SYSTEM bzw ROLLBACK Tablespaces zurück-zuladen. Beachte, dass auch das gesicherte Controlfile NICHTzurückgeladen werden muss. Nun erfolgt das Cancel Based Recovery,man muss die Option USING BACKUP CONTROLFILE verwenden, damitwird Oracle mitgeteilt, dass Inkonsistenzen bestehen zwischen dem Con-trolfile und den bestehenden Redologfiles. Nach dem Zurückapplizierender Offline Redolog Files wird ein "Dummy" Recovery gemacht und dieDatenbank mit RESETLOGS geöffnet.

1. Datenbank stoppenVYUPJUOFRQQHFWLQWHUQDOVKXWGRZQDERUW

2. Zurückladen aller DB-Files &RQWUROILOHVDXFK]XU�FNODGHQ

3. Archive Files bereithalten

4. Point-in-Time Recovery der gesamten Datenbank mitzurückgeladenem Controlfile. Mit <AUTO> alle Offline Redologfilesapplizieren bis Recovery automatisch stoppt.

VYUPJUOFRQQHFWLQWHUQDOVWDUWXSPRXQWUHFRYHUGDWDEDVHXVLQJEDFNXSFRQWUROILOHXQWLOFDQFHODXWR

5. "Dummy" Recovery durchführen. Man bricht das Recovery mit<CANCEL> sofort wieder ab, nur um Oracle mitzuteilen, dass einCANCEL based Recovery durchgeführt wurde.

UHFRYHUGDWDEDVHXVLQJEDFNXSFRQWUROILOHXQWLOFDQFHOFDQFHO

6. Datenbank mit RESETLOGS öffnen.

DOWHUGDWDEDVHRSHQUHVHWORJV

Online

DBWR

Normaler

 

OfflineRedolog

Control

LGWR ARCH

Online

 

Redolog

TablespaceSYSTEM

Tablespace

AktivesOnline

Redolog

InaktivesOnline

Buffer Pool Redolog Buffer Pool

SGA

Page 85: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 85/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 83 von 86

:HLWHUHKLOIUHLFKH5HFRYHU\7LSVXQG.RPPDQGV

Datenbank mit fehlen-dem (normalen) Table-space starten

Die Datenbank kann ohne diesen fehlenden Tablespace gestartet werden.

1. Datenbank mounten

VYUPJUO

FRQQHFWLQWHUQDOVWDUWXSPRXQW

2. Datenfiles aus Datendictionary und Controlfile entfernen

DOWHUGDWDEDVHGDWDILOHRSWRUDGDWD5$%WDE5$%BWDEGEIRIIOLQHGURS

DOWHUGDWDEDVHGDWDILOHRSWRUDGDWD5$%WDE5$%BWDEGEIRIIOLQHGURS

3. Datenbank öffnen

DOWHUGDWDEDVHRSHQ

4. Tablespace droppen

GURSWDEOHVSDFHWDELQFOXGLQJFRQWHQWV

5. Kontrolle der Einträge in DD (dba_data_files) und Controlfile (v$dbfile)

VHOHFWIURPGEDBGDWDBILOHVRUGHUE\ILOHBLGVHOHFWQDPHILOHIURPYGEILOH

Archivelog Destinationwechseln im laufendenBetrieb

Wird der vorhandene Diskplatz für die Offline Redologfiles auf der Diskknapp, und die Zeit reicht nicht mehr aus um die Offline Redologfiles weg-zukopieren, so kann die Archivelog Destination während dem Betriebgewechselt werden. Mit STOP / START kann das automatische Archivierendurch den ARCH Prozess angehalten werden und wieder gestartet werden

DOWHUV\VWHPDUFKLYHORJVWRSDOWHUV\VWHPDUFKLYHORJVWDUWWRGLVNGDWD$5.DOWHUV\VWHPDUFKLYHORJVWDUW

Man beachte, dass der String 'ARK' bei der Angabe der neuen Destinationkein Directory ist, sondern der Filename-Prefix.

$UFKLYHORJ.RPPDQGRV

Alle momentan nicht archivierten Online Redologfiles manuell archivierenDOWHUV\VWHPDUFKLYHORJDOO

Online Redolog Swich erzwingenDOWHUV\VWHPVZLWFKORJILOH

Status der Redologfiles abfragen (Logsequence)DUFKLYHORJOLVW

Manueller Checkpoint durchführen. Damit werden alle DB Buffer auf dieDisk geschrieben.DOWHUV\VWHPFKHFNSRLQW

Flush des Shared Pools

Nicht direkt mit dem Recovery zu tun hat der Flush des Shared Pools, zurVervollständigung der wichtigsten ALTER SYSTEM Kommandos trotzdeman dieser Stelle dokumentiert. Damit werden alle cached Informationenaus dem Shared Pool (Data Dictionary Informationen, Shared PL/SQL undSQL, Stored Proceduren, Functions und Packages) entfernt.DOWHUV\VWHPIOXVKVKDUHGBSRRO

Page 86: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 86/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 84 von 86

(LQIDFKHV6KHOOVFULSW]XP7HVWHQGHV2QOLQH%DFNXSV

#!/bin/ksh

ORACLE_HOME=/oracle/product/8.0.5; export ORACLE_HOMEORACLE_SID=RAB1; export ORACLE_SIDTNS_ADMIN=/home/oracle/config/v805; export TNS_ADMINNLS_LANG=GERMAN_GERMANY.WE8ISO8859P1; export NLS_LANGORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33PATH=/bin:/sbin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin; export PATH

BACKUPLOG=backuplog_${ORACLE_SID}.log

# Mark Tablespaces for the START of Online-Backup

svrmgrl <<-EOF >$BACKUPLOGconnect internal;alter system switch logfile;archive log listalter tablespace rbs begin backup;alter tablespace system begin backup;alter tablespace tab begin backup;alter tablespace temp begin backup;alter tablespace users begin backup;alter database backup controlfile to ’/data/ctrlRAB1.con’ reuse;alter system switch logfile;alter system archive log all;disconnect;exit;EOF

# Do the Backup

cp /data/rbs/RAB1_rbs1.dbf /data/rbs/RAB1_rbs1.dbf.backupcp /data/sys/RAB1_sys1.dbf /data/sys/RAB1_sys1.dbf.backupcp /data/tab/RAB1_tab1.dbf /data/tab/RAB1_tab1.dbf.backupcp /data/tmp/RAB1_temp1.dbf /data/tmp/RAB1_temp1.dbf.backupcp /data/usr/RAB1_users1.dbf /data/usr/RAB1_users1.dbf.backup

# Mark Tablespaces for the END of Online-Backup

svrmgrl <<-EOF >>$BACKUPLOGconnect internal;alter tablespace rbs end backup;alter tablespace system end backup;alter tablespace tab end backup;alter tablespace temp end backup;alter tablespace users end backup;disconnect;exit;EOF

exit 0

Page 87: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 87/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide.fm Seite 85 von 86

:LFKWLJVWH3XQNWH]XP5HFRYHU\

DOWHUGDWDEDVHRSHQUHVHWORJV

Dies ist ein sehr gefährliches Kommando und muss unbedingt verstandenwerden. Wird es falsch angewendet, so kann eine Datenbank irreparabelwerden. Es wird nur in Cancel Based Incomplete Recoveries benutzt, alsoimmer dann wenn bei einem Recovery nicht alle Redologfiles zurückappli-

ziert werden. Das Kommando setzt die Logsequence des aktuellenRedologfiles = 1, alle folgenden Offline Redologfiles sind somit wertlos.

1RWIDOO6FHQDULR Ist eine Datenbank nach einem korrekten Recovery auch nach mehrerenVersuchen mit ALTER DATABASE RESETLOGS nicht zu öffnen, so mussder LQLWRUD Parameter  BDOORZBUHVHWORJVBFRUUXSWLRQWUXHgesetzt werden. Ist es dann möglich die Datenabk zu starten. so muss mansofort einen Datenbank Export machen, die Datenbank neu kreieren unddas Exportfile importieren.

2IIOLQH'DWHQILOHV Es muss darauf geachtet werden, dass alle Datenfiles der Tabespaces diein ein Recovery einbezogen werden RQOLQH sind. Wird dies missachtet, sokönnen diese Offline Datenbakfiles später nach dem Recovery nicht mehronline genommen werden, da sie einen älteren Zustand aufweisen.

EHJLQXQGHQGEDFNXS

Beim Online Backup muss zu jedem BEGIN BACKUP auch ein END BAK-KUP ausgeführt werden.

'8/7RRO Oracle verfügt über ein Tool mit dem Namen DUL.

DUL stands for Data UnLoader and is a VSHFLDOWRRODYDLODEOHRQO\IRU2UDFOHHPSOR\HHV. Configured, DUL work correctly with your database,get the file-numbers and file-names out of the mounted database setup theconfiguration file to work correctly with Oracle7, unloads the data dictionaryunloads the data out of the database in a directory. The provided loader

files have a format RZQHU!BWDEOHQDPH!GDW (data) andRZQHU!BWDEOHQDPH!FWO (loader control file).

Online

 

Nr 234 Online

 

Nr 235 Online

 

Nr 236 Online

 

Nr 237 Online

 

Nr 238

Online

 

Nr 1 Online

 

Nr 2 Online

 

Nr 3

Recovery

ALTER DATABASE OPEN RESETLOGS

Page 88: Oracle Survival Guide

5/10/2018 Oracle Survival Guide - slidepdf.com

http://slidepdf.com/reader/full/oracle-survival-guide 88/88

 

Oracle Survival Guide Akadia AG Information Technology

OracleSurvivalGuide fm Seite 86 von 86

:LFKWLJVWH99LHZV Wichtigste V$Views Beschreibungen

,QIRUPDWLRQHQEH]�JOLFK7UDQVDNWLRQHQV$THREAD Ein Thread kennzeichnet eine bestimmte Instance

in einem Oracle Parallel Server Umfeld. Da jedeInstance eines Parallel Servers ihre eigenen On-line Redolog Files hat, kann in dieser View Infor-

mationen zu den Log-Group Members, der SCNNummer des letzten Checkpoints etc eingesehenwerden.

V$TRANSACTION Zeigt die offenen Transaktionen (zB SCN-Num-mer der Transaktion)

,QIRUPDWLRQHQEH]�JOLFK5HGRORJ)LOHVV$LOG Informationen aus dem Controlfile zu den Redolog

Files. Interessant sind lowest SCN und time of firstSCN. Man erkennt auch ob ein Redologfile bereitsarchiviert wurde (ARCHIVED=TRUE) und ob esfür ein Instance Recovery noch gebraucht wird(STATUS=ACTIVE).

V$LOGFILE Namen der Redolog MembersV$LOG_HISTORY History der archivierten Redolog FilesV$ARCHIVE Group-Nr, Sequence-Nr, First SCN-Nr der archi-

vierten Redologs,QIRUPDWLRQHQEH]�JOLFK%DFNXSXQG5HFRYHU\V$BACKUP Stati der DB-Files (BEGIN / END Backup). Kann

sehr hilfreich sein um herauszufinden, welche DB-Files im BEGIN BACKUP Mode sind.

V$DATAFILE Informationen zu den DB-Files aus dem Controlfi-le

V$CONTROLFILE Namen und Status der Controlfiles

V$DATABASE Informationen zur DB-Instance wie last SCNcheckpointed und last SCN archived sowie Anga-ben ob DB im Archivelog Mode ist.

V$RECOVERY_LOG Redologfiles welche für ein Complete Media Re-covery benötigt werden

V$RECOVER_FILE Welche Files brauchen ein Media Recovery ?V$RECOVERY_STATUS Informationen zum aktuellen Recovery Prozess