Oracle Datenbank Architektur - nicht nur für Einsteiger · Oracle Datenbank Architektur - nicht...

Preview:

Citation preview

Oracle Datenbank Architektur -nicht nur für Einsteiger

Martin Klier

Performing Databases GmbHMitterteich

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 2/37

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 3/37

Referent

● Martin Klier● Lösungsarchitekt und

Datenbankspezialist

● Fachliche Schwerpunkte:– Performanceoptimierung / Tuning– hochverfügbare Systeme– Cluster und Replikation

● Linux seit 1997● Oracle Database seit 2003

Referent

● Vorträge

● Kontakt: martin.klier@performing-db.com

● Weblog: http://www.usn-it.de

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 4/37

Regionalgruppen

Unternehmen

● Spezialisten für Datenbanktechnik– Konzeptberatung und Vergabekompetenz– Architektur- und Systemplanung– Lizenzierung– Realisierung und Troubleshooting

● Kontakt– Performing Databases GmbH

Wiesauer Straße 2795666 Mitterteich

– Web: http://www.performing-databases.com

– Twitter: @PerformingDB

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 5/37

Dieser Vortrag ...

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 6/37

● Transaktionsprinzip A.C.I.D.

● Oracle Datenbank-Architektur– Verbindung, Namespace(s) und Abschottung– Instanz und Datenbank– Alles Blöcke, oder was?– Redo, Undo und was man damit macht– Die Basis für moderne Features

● Stets das Ziel: „Das Konzept dahinter“ verstehen

● Primär für Einsteiger = Vertiefung für Erfahrene

Transaktionen

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 7/37

● Atomicity „Alles oder nichts“

● Consistency „Kein undefinierter Zustand“

● Isolation „Read Committed“

● Durability „Zugesicherte Speicherung“

Basics ->

Wie wird das technisch gelöst?

Host (=Server)

GrundbegriffeIn

stan

ceD

atab

ase

SchemaSchema

Object XObject X

Listener:1521

Processes

Memory Segment(s)

Registrieren

Anwender mit Clients

SERVICE_NAME=INTRANET

SERVICE_NAME=DWH

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 8/37

Host (=Server)

Connection + SessionIn

stan

ceD

atab

ase

SchemaSchema

Object XObject X

Listener:1521

Session

12

45

3Mem.S.

Processes

„TNS“1. Verbindungsaufbau2. Anforderung Session3. Start Session4. Übergabe Verb.5. Kommunikation

Client

SERVICE_NAME=DWH

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 9/37

Host (=Server)

Abschottung / Schemas

Inst

ance

Dat

abas

e

BOB

SessionMem.S.

Processes

User„ALICE“

ALICE

EMPLOYEES EMPLOYEES

select *from BOB.EMPLOYEESwhere ...;

grant selecton EMPLOYEESto ALICE;

Schemas

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 10/37

DBserver1

Datenbank-Link

EMP

Anwender mit Clients

DBserver2

Listener:1521

EMPDB_LNK

Listener:1521

Aufbau einer Session

select *from EMP@DB_LNKwhere ... ;

speichert / impliziertZugangsdaten

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 11/37

TEMP

Architekturschema (vereinfacht)

Listener:1521

PMON

SGA

SessionSession

Buffer Cache

Shared Pool

Log Buffer

ARCnSMON

LGWR

DBWn

PGAs

CKPT

Session

Online

Redo

Logs

ArchivedRedoLogs

Tablespace Undo Tbs.

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 12/37

TEMP

Lesevorgang

Listener:1521

SGA

PGAs

Session

Tablespace

Blöcke

Sort,Hash,Merge

Shared Pool

select ... ;

Buffer Cache

„Buffer“

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 13/37

TEMP

Daten-Änderung,Database Writer

Listener:1521

SGA

PGAs

Session

Tablespace

Blöcke

PMON

ARCnSMON

LGWRCKPT

Shared Pool

DBWnAber:Database Writerist ein Lazy Writer!

Schreibvorgang auf HDDkann extrem nachhängen!

Buffer Cache

update ...;

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 14/37

TEMP

Daten-Änderung(nur Redo)

Listener:1521

SGA

Buffer Cache

Log Buffer

PGAs

Session

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

PMON

ARCnSMON DBWn

CKPT

commit;

LGWR

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 15/37

Crash

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

commit;

!

TEMP

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 16/37

Crash Recovery(nur Redo)

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

?SGA

Buffer Cache

Log Buffer

PMON

ARCn

LGWR

DBWn

CKPT

SMON

TEMP

Listener:1521

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 17/37

INACTIVE

Detail: Online Redo Logs

„Group“ 1

„Members“

„Group“ 4

„Group“ 3

„Group“ 2

UNUSED

CURRENT

ACTIVE

LGWR

● darf überschrieben werden

● darf NICHT überschrieben w.● DBWn synchronisiert auf TBS

● LGWR befüllt gerade aus Log Buffer

● war noch nie CURRENT

„Log Switch“

DBWn

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 18/37

● Schreibt den Log Buffer ins Online Redo Log

– bei jedem Commit

– wenn Log Buffer voll

– nach spätestens 3 Sekunden● Laufzeit bestimmt Commit-Zeit

● Läuft mit höchster Priorität

Log Writer

OnlineRedoLogs

Log Buffer

LGWR

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 19/37

● dienen der Absicherung des Cache

● müssen aufbewahrt werden so lange DBWn nicht in Tablespace geschrieben hat

● müssen aufbewahrt werden so lange ARCn nicht in Archived Redo Log geschrieben hat

● werden später zyklisch überschrieben

Online Redo Logs

OnlineRedoLogs

ArchivedRedoLogs

ARCn

Log Buffer

LGWR

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 20/37

● werden pro RL-“Group“ vom Archiver (ARCn) erzeugt

– frühestens: nach Log Switch– spätestens: vor Überschreiben Online Redo Log

● dienen dem Nachfahren von verlorenen Operationenbeim Recovery aus einem Backup

– Complete Recovery– Point-in-Time-Recovery

● werden min. bis zum nächsten Backup aufbewahrt

– nie überschrieben– später gelöscht

Archived Redo Logs

OnlineRedoLogs

ArchivedRedoLogs

ARCn

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 21/37

Das war aber nur die halbe Wahrheit ...

Das benötigte Transaktionsverfahren macht die Sache etwas komplizierter.

Was ist UNDO...?

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 22/37

TEMP

Undo-Konzept

Listener:1521

SGA

Buffer CachePGAs

Session

Tablespace Undo Tbs.

Blöcke

PMON

ARCnSMON

LGWRCKPT

Shared Poolrollback;

DBWn

update ...;

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 23/37

● dienen dem Zurückrollen von Änderungen

● kein „Undo-“Hintergrundprozess (Session / Job / etc. schreibt selbst)

● werden später überschrieben („Ringpuffer“)

– frühestens: nach Abschluss der Transaktion– meist: nach Ablauf der Undo Retention

– spätestens: bei Platzbedarf● weitere Verwendung

– für konsistentes Lesen (stets)– Flashback-Technologien (optional)

Undo Records

Undo Tbs.

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 24/37

Undo: Konsistentes Lesen

select * from TABLE where ... ;

geänderte, abernicht commitete

Rows

ITL Eintrag

Undo Tbs.

Consistent ReadClone

Undo Records

Session

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 25/37

TEMP

Daten-Änderung (komplett)

Listener:1521

SGA

Buffer CachePGAs

Session

Tablespace Undo Tbs.

Blöcke

PMON

SMON

CKPT

Shared Pool

update ...;

DBWn

Log Buffer

Online

Redo

Logs

ArchivedRedoLogs

LGWR

ARCn

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 26/37

Crash

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

Undo Tbs.

TEMP

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 27/37

SMON

Crash Recovery

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

?SGA

Buffer Cache

Log Buffer

PMON

ARCn

LGWR

DBWn

CKPT TEMP

Listener:1521

Undo Tbs.

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 28/37

SMON nach Crash Recovery

Online

Redo

Logs

ArchivedRedoLogs

Tablespace

Blöcke

SGA

Buffer Cache

Log Buffer

PMON

ARCn

LGWR

DBWn

CKPT

SMON

TEMP

Listener:1521

Undo Tbs.

rollback by SMONSession

Shared Pool

Konkurr. Abfrage select ... ;

PGAs

X@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 29/37

Architektur 11.2(Oracle Doc)

Que

lle:

http

://d

ocs

.ora

cle

.co

m/c

d/E

118

82_

01/

serv

er.1

12

/e16

508

/intr

o.h

tm#i

623

45

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 30/37

Architektur 12.1(Oracle Doc)

Que

lle:

http

://w

ww

.ora

cle.

com

/web

fold

er/te

chne

twor

k/tu

toria

ls/o

be/d

b/12

c/r1

/pos

ter/

OU

TP

UT

_pos

ter/

img/

Ora

cle%

2012

c%20

Arc

hite

ctur

e_no

rmal

.png

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 31/37

„New“ Features

● F lashback Querybasiert auf Undo● Flashback Databasebasiert auf F.-Logs = Undo

● Dataguard (Standby Database)= Logwriter (Redo)

● Active Dataguard= Dataguard + Flashback

● Real Application Clusters

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 32/37

Shared Pool

select ... ;

Buffer Cache

Lesen im RAC

Listener:1521

Session

Tablespace

Blöcke

Buffer Cache

Block Shipping

Interconnect?

Buffer lokalisieren

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 33/37

Replikation mit Dataguard

Buffer Cache

Session

Log Buffer

Online

Redo

Logs

LGWR

TMONBuffer Cache

Standby

Redo

Logs

RFSTTnn

MRP

X

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 34/37

Feedback - wie war's?

@MartinKlierDBA Oracle Datenbank Architektur - nicht nur für Einsteiger 35/37

● Transaktionsprinzip A.C.I.D.

● Oracle Datenbank-Architektur– Verbindung, Namespace(s) und Abschottung– Instanz und Datenbank– Alles Blöcke, oder was?– Redo, Undo und was man damit macht– Die Basis für moderne Features

● Stets das Ziel: „Das Konzept dahinter“ verstehen

● Primär für Einsteiger = Vertiefung für Erfahrene

Recommended