RAC und Standby Datenbanken: - Trivadis
RAC und Standby Datenbanken: - Trivadis
RAC und Standby Datenbanken: - Trivadis
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
| DOAG Konferenz 2003 | Dr. Martin W<strong>und</strong>erli | <strong>Trivadis</strong> AG |<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong>:<br />
Dienste <strong>und</strong> Daten hochverfügbar<br />
www.trivadis.com
©<br />
Agenda<br />
A. Positionierung im Oracle HA Umfeld<br />
B. Kombination aus <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
C. Fazit: <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
2
©<br />
High Availability Optionen von Oracle<br />
� Verhinderung von Ausfallzeiten mit Oracle9i Release 2:<br />
Ungeplante Downtime<br />
Geplante Downtime<br />
System<br />
Fehler<br />
Datenfehler<br />
Desaster<br />
Menschliches<br />
Versagen<br />
System<br />
Wartung<br />
Datenbank<br />
Wartung<br />
Real Application Clusters (<strong>RAC</strong>)<br />
Fast Restart<br />
RMAN, Data Guard<br />
<strong>RAC</strong>, Data Guard<br />
Log Miner, RMAN, Data Guard<br />
Dynamic Reconfiguration,<br />
Data Guard, <strong>RAC</strong><br />
Online Redefinition,<br />
Partitioning<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
3
©<br />
Dienst vs. Datenverfügbarkeit<br />
� Verfügbarkeit des Dienstes<br />
– Real Application Clusters<br />
– Failover Cluster Systeme (SUN Cluster, Veritas Cluster, etc.)<br />
– (Data Guard)<br />
� Verfügbarkeit der Daten<br />
– Raid Systeme<br />
– Data Guard<br />
� Konsequenz:<br />
– Es müssen – gerade bei sehr hohen Verfügbarkeitsanforderungen –<br />
oftmals Kombinationen der HA Optionen eingesetzt werden<br />
– Zum Beispiel <strong>RAC</strong> System mit einer Data Guard Konfiguration zur<br />
Absicherung<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
4
©<br />
Was ist <strong>RAC</strong>? – Verfügbarkeit des Dienstes<br />
� Shared Disk Architektur<br />
Data<br />
A-Z<br />
� Relativ problemlos beim Ausfall eines Knotens,<br />
problematisch der Abgleich der Instanz Caches<br />
� Client Connects können (automatisch) über Instanzen<br />
verteilt werden <strong>und</strong> sich bei Knotenausfall neu verbinden<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
5
©<br />
Real Application Clusters:<br />
Die wichtigsten Neuerungen gegenüber Oracle8i OPS<br />
� Cache Fusion (write/write Conflicts)<br />
� Server Parameter File Support (spfile)<br />
� Global Service Daemon<br />
� Server Side Load Balancing<br />
Data<br />
A-Z<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
6
©<br />
Was ist Data Guard? – Verfügbarkeit der Daten<br />
� Data Guard verwaltet <strong>Standby</strong> <strong>Datenbanken</strong><br />
� <strong>Standby</strong> <strong>Datenbanken</strong> Gr<strong>und</strong>konzepte:<br />
Primary Site<br />
Primary<br />
Database<br />
Online<br />
Log Files Local<br />
Archiving<br />
Remote<br />
Archiving<br />
Log Transport<br />
<strong>Standby</strong> Site<br />
Online<br />
Log Files<br />
<strong>Standby</strong><br />
Database<br />
Archived<br />
Log Files<br />
� Knoten können weit entfernt plaziert werden, sind sonst unabhängig<br />
� Konzept erlaubt Schutz vor User-/Adminfehlern durch verzögertes Nachführen<br />
der <strong>Standby</strong> Datenbank<br />
� Aktivieren der <strong>Standby</strong> Datenbank erfordert manuellen Eingriff<br />
Log Apply<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
7
©<br />
Data Guard <strong>und</strong> <strong>Standby</strong> 9i:<br />
Die wichtigsten Neuerungen gegenüber <strong>Standby</strong> 8i<br />
� Automatisches Close Gap<br />
� Switchover (Rollentausch)<br />
� Bis zu 9 <strong>Standby</strong> <strong>Datenbanken</strong> pro Primary<br />
� Verzögertes Applizieren von Redo Logs<br />
� Protection Levels<br />
� Logische <strong>Standby</strong><br />
Datenbank (Datenbank<br />
während Nachfahren zum<br />
Lesen offen)<br />
Data<br />
A-Z<br />
Primary <strong>Standby</strong><br />
Data<br />
A-Z<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
8
©<br />
Zusammenfassung<br />
� Wir unterscheiden zwischen Daten- <strong>und</strong><br />
Dienst(hoch)verfügbarkeit<br />
� <strong>RAC</strong> addressiert in erster Linie die Hochverfügbarkeit des<br />
Dienstes (Skalierungsaspekte wurden hier nicht betrachtet,<br />
dürfen aber in einer Gesamtbetrachtung aber natürlich nicht<br />
fehlen)<br />
� Data Guard addressiert primär die Hochverfügbarkeit der<br />
Daten<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
9
©<br />
Agenda<br />
A. Positionierung im Oracle HA Umfeld<br />
B. Kombination aus <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
C. Fazit: <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
10
©<br />
Wie spielen <strong>RAC</strong> <strong>und</strong> Dataguard zusammen? (1)<br />
� Architektur im Vergleich<br />
– <strong>RAC</strong><br />
- (Shared) Disk =<br />
Single Point of Failure<br />
– Data Guard/<strong>Standby</strong><br />
- Downtime bei Ausfall des<br />
Primary Node<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
11
©<br />
Wie spielen <strong>RAC</strong> <strong>und</strong> Dataguard zusammen? (2)<br />
� Variante 1 erlaubt No-Data-<br />
Loss Szenarien<br />
� Variante 2 ist billiger<br />
� Die üblichen <strong>Standby</strong><br />
Operationen sind bei<br />
beiden Varianten möglich<br />
1)<br />
2)<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
12
©<br />
Wie spielen <strong>RAC</strong> <strong>und</strong> Dataguard zusammen? (3)<br />
� Sie spielen eigentlich noch nicht so zusammen…<br />
� Data Guard kennt keinen <strong>RAC</strong>:<br />
create<br />
create<br />
configuration<br />
configuration<br />
'TriRep'<br />
'TriRep'<br />
as<br />
as<br />
primary<br />
primary<br />
site<br />
site<br />
is<br />
is<br />
'donar_site'<br />
'donar_site'<br />
resource<br />
resource<br />
is<br />
is<br />
'PREP_donar'<br />
'PREP_donar'<br />
hostname<br />
hostname<br />
is<br />
is<br />
'donar'<br />
'donar'<br />
...<br />
...<br />
� Daher muss man alles manuell konfigurieren:<br />
– FAL Konfiguration (Close Gap)<br />
– <strong>Standby</strong> Archive Destination Konfiguration<br />
– Log Archive Destination Konfiguration<br />
– usw.<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
13
©<br />
<strong>RAC</strong> <strong>und</strong> Single Instance: Demo Hardware<br />
� 3 Knoten: castor, pollux, venus<br />
� Pentium II 750, 384 MByte RAM, SLES-8<br />
mit aktuellem Online Update (Service<br />
Pack 3), OCFS Support <strong>und</strong> Tools<br />
1.0.9.-9 von www.ocfs.org<br />
� Shared Disk: Firewire attached 80 GByte,<br />
PCMCIA Firewire Karten<br />
� Netzwerk: Cluster Interconnect mit zwei 100 MBit PCMCIA Karten,<br />
Client Netzwerk über interne Netzwerkkarte der Notebooks<br />
� Allgemeine Hinweise zu einem Firewire basierten Cluster auf<br />
www.trivadis.com (DOAG Vortrag November 2002)<br />
Data<br />
A-Z<br />
Data<br />
A-Z<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
14
©<br />
Demo Setup<br />
Client<br />
Connects<br />
Archive<br />
Transport<br />
Client<br />
Connects<br />
Archive<br />
Transport<br />
1528<br />
1521<br />
1528<br />
1521<br />
Castor<br />
Pollux<br />
Cluster Interconnect<br />
Netzwerk<br />
Archive<br />
Transport<br />
1521<br />
Venus<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
15
©<br />
Setup: Backup der Primary Datenbank<br />
� Der Setup beginnt am einfachsten mit einer Primary <strong>RAC</strong> Datenbank<br />
� Für die <strong>Standby</strong> Datenbank kann ein Server Managed (RMAN) oder User<br />
Managed Backup verwendet werden. Bei RAW Devices auf der <strong>RAC</strong> Datenbank ist<br />
ein Server Managed Backup eigentlich zwingend<br />
� Initiale Komponenten für <strong>Standby</strong> Datenbank:<br />
– Online- oder Offline Backup der Primary Datenbank<br />
– <strong>Standby</strong> Controlfile<br />
– Archiviertes Online Redo Log<br />
– Admin Baum plus spfile<br />
� Alle 4 Komponenten auf den Single Node kopieren<br />
� Falls ausser dem Backup auch die RDBMS Software von einem der <strong>RAC</strong> Knoten<br />
auf den Singel Node kopiert wird, die <strong>RAC</strong> Option auf dem Single Node<br />
deinstallieren<br />
� Ansonsten beim Start der Instanz:<br />
Connect to DIAG Service failed!<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
16
©<br />
Setup: Netzwerkkonfiguration (1)<br />
� Direkte Verbindungen:<br />
DB9A.trivadistraining.COM<br />
DB9A.trivadistraining.COM<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
castor)(PORT<br />
castor)(PORT<br />
=<br />
=<br />
1521))<br />
1521))<br />
(CONNECT_DATA<br />
(CONNECT_DATA<br />
=<br />
=<br />
(SID<br />
(SID<br />
=<br />
=<br />
DB9A)<br />
DB9A)<br />
))<br />
))<br />
DB9B.trivadistraining.COM<br />
DB9B.trivadistraining.COM<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
pollux)(PORT<br />
pollux)(PORT<br />
=<br />
=<br />
1521))<br />
1521))<br />
(CONNECT_DATA<br />
(CONNECT_DATA<br />
=<br />
=<br />
(SID<br />
(SID<br />
=<br />
=<br />
DB9B)<br />
DB9B)<br />
))<br />
))<br />
DB9venus.trivadistraining.COM<br />
DB9venus.trivadistraining.COM<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
venus)(PORT<br />
venus)(PORT<br />
=<br />
=<br />
1521))<br />
1521))<br />
(CONNECT_DATA<br />
(CONNECT_DATA<br />
=<br />
=<br />
(SID<br />
(SID<br />
=<br />
=<br />
DB9)<br />
DB9)<br />
))<br />
))<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
17
©<br />
Setup: Netzwerkkonfiguration (2)<br />
� Verbindungen zu <strong>RAC</strong>:<br />
DB9<strong>RAC</strong>.trivadistraining.com<br />
DB9<strong>RAC</strong>.trivadistraining.com<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(FAILOVER=ON)<br />
(FAILOVER=ON)<br />
(LOADBALANCE=ON)<br />
(LOADBALANCE=ON)<br />
(ADDRESS_LIST<br />
(ADDRESS_LIST<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
castor)(PORT<br />
castor)(PORT<br />
=<br />
=<br />
1521))<br />
1521))<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
pollux)(PORT<br />
pollux)(PORT<br />
=<br />
=<br />
1521))<br />
1521))<br />
)<br />
)<br />
(CONNECT_DATA<br />
(CONNECT_DATA<br />
=<br />
=<br />
(SERVICE_NAME<br />
(SERVICE_NAME<br />
=<br />
=<br />
DB9.trivadistraining.com)<br />
DB9.trivadistraining.com)<br />
(FAILOVER_MODE<br />
(FAILOVER_MODE<br />
=<br />
=<br />
(TYPE<br />
(TYPE<br />
=<br />
=<br />
SELECT)<br />
SELECT)<br />
(METHOD<br />
(METHOD<br />
=<br />
=<br />
BASIC)<br />
BASIC)<br />
(RETRIES<br />
(RETRIES<br />
=<br />
=<br />
3600)<br />
3600)<br />
(DELAY<br />
(DELAY<br />
=<br />
=<br />
1)<br />
1)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
18
©<br />
Setup: Netzwerkkonfiguration (3)<br />
� TNS Eintrag für Clients:<br />
DB9.trivadistraining.com<br />
DB9.trivadistraining.com<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(FAILOVER=ON)<br />
(FAILOVER=ON)<br />
(LOADBALANCE=ON)<br />
(LOADBALANCE=ON)<br />
(ADDRESS_LIST<br />
(ADDRESS_LIST<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
castor)(PORT<br />
castor)(PORT<br />
=<br />
=<br />
1528))<br />
1528))<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
pollux)(PORT<br />
pollux)(PORT<br />
=<br />
=<br />
1528))<br />
1528))<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
venus)<br />
venus)<br />
(PORT<br />
(PORT<br />
=<br />
=<br />
1528))<br />
1528))<br />
)<br />
)<br />
(CONNECT_DATA<br />
(CONNECT_DATA<br />
=<br />
=<br />
(SERVICE_NAME<br />
(SERVICE_NAME<br />
=<br />
=<br />
DB9.trivadistraining.com)<br />
DB9.trivadistraining.com)<br />
(FAILOVER_MODE<br />
(FAILOVER_MODE<br />
=<br />
=<br />
(TYPE<br />
(TYPE<br />
=<br />
=<br />
SELECT)<br />
SELECT)<br />
(METHOD<br />
(METHOD<br />
=<br />
=<br />
BASIC)<br />
BASIC)<br />
(RETRIES<br />
(RETRIES<br />
=<br />
=<br />
720)<br />
720)<br />
(DELAY<br />
(DELAY<br />
=<br />
=<br />
5)<br />
5)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
19
©<br />
Setup: Netzwerkkonfiguration (4)<br />
� Listener (Beispiel castor):<br />
LISTENER<br />
LISTENER<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
castor)(PORT<br />
castor)(PORT<br />
=<br />
=<br />
1521)))<br />
1521)))<br />
SID_LIST_LISTENER<br />
SID_LIST_LISTENER<br />
=<br />
=<br />
(SID_LIST<br />
(SID_LIST<br />
=<br />
=<br />
(SID_DESC<br />
(SID_DESC<br />
=<br />
=<br />
(SID_NAME<br />
(SID_NAME<br />
=<br />
=<br />
DB9A)(O<strong>RAC</strong>LE_HOME<br />
DB9A)(O<strong>RAC</strong>LE_HOME<br />
=<br />
=<br />
/u00/app/oracle/product/9.2.0)<br />
/u00/app/oracle/product/9.2.0)<br />
)<br />
)<br />
)<br />
)<br />
LISTENER_DB9<br />
LISTENER_DB9<br />
=<br />
=<br />
(DESCRIPTION<br />
(DESCRIPTION<br />
=<br />
=<br />
(ADDRESS<br />
(ADDRESS<br />
=<br />
=<br />
(PROTOCOL<br />
(PROTOCOL<br />
=<br />
=<br />
TCP)(HOST<br />
TCP)(HOST<br />
=<br />
=<br />
castor)(PORT<br />
castor)(PORT<br />
=<br />
=<br />
1528)))<br />
1528)))<br />
SID_LIST_LISTENER_DB9<br />
SID_LIST_LISTENER_DB9<br />
=<br />
=<br />
(SID_LIST<br />
(SID_LIST<br />
=<br />
=<br />
(SID_DESC<br />
(SID_DESC<br />
=<br />
=<br />
(SID_NAME<br />
(SID_NAME<br />
=<br />
=<br />
DB9A)(O<strong>RAC</strong>LE_HOME<br />
DB9A)(O<strong>RAC</strong>LE_HOME<br />
=<br />
=<br />
/u00/app/oracle/product/9.2.0)<br />
/u00/app/oracle/product/9.2.0)<br />
)<br />
)<br />
)<br />
)<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
20
©<br />
Setup: Beide <strong>Datenbanken</strong><br />
� Sinnvolle Settings im (<strong>Standby</strong>-) Datenbank Umfeld<br />
alter<br />
alter<br />
database<br />
database<br />
force<br />
force<br />
logging;<br />
logging;<br />
alter<br />
alter<br />
database<br />
database<br />
add<br />
add<br />
supplemental<br />
supplemental<br />
log<br />
log<br />
data;<br />
data;<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
log_archive_format='DB9_%t_%s.arc'<br />
log_archive_format='DB9_%t_%s.arc'<br />
scope=spfile;<br />
scope=spfile;<br />
� Vor Setup-Backup der Primary oder für <strong>Standby</strong> nach dem 1.<br />
Switchover durchzuführen<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
21
©<br />
Setup: Modifikation Primary<br />
� Anpassungen am SPFILE<br />
– Setup des Close Gap Features falls die Datenbank zur <strong>Standby</strong> wird<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
fal_server='DB9venus.trivadistraining.com';<br />
fal_server='DB9venus.trivadistraining.com';<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
fal_client='DB9B.trivadistraining.com';<br />
fal_client='DB9B.trivadistraining.com';<br />
– Wer empfängt die archivierten Redo Logs?<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
log_archive_dest_2='SERVICE=DB9venus.trivadistraining.com<br />
log_archive_dest_2='SERVICE=DB9venus.trivadistraining.com<br />
OPTIONAL<br />
OPTIONAL<br />
REOPEN=60';<br />
REOPEN=60';<br />
– Anmeldung bei allen Listenern (hier castor, pollux analog):<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
local_listener='(ADDRESS_LIST=<br />
local_listener='(ADDRESS_LIST=<br />
(ADDRESS=(PROTOCOL=TCP)(HOST=castor)(PORT=1521))<br />
(ADDRESS=(PROTOCOL=TCP)(HOST=castor)(PORT=1521))<br />
(ADDRESS=(PROTOCOL=TCP)(HOST=castor)(PORT=1528))<br />
(ADDRESS=(PROTOCOL=TCP)(HOST=castor)(PORT=1528))<br />
)';<br />
)';<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
22
©<br />
Setup: Aufbau Single Node <strong>Standby</strong> (1)<br />
� Backup auspacken, admin Baum installieren, spfile File<br />
plazieren <strong>und</strong> Link aus $O<strong>RAC</strong>LE_HOME/dbs erstellen<br />
� Anpassungen am SPFILE<br />
– Es ist keine Cluster Datenbank<br />
alter<br />
alter<br />
system<br />
system<br />
reset<br />
reset<br />
cluster_database_instances<br />
cluster_database_instances<br />
scope=spfile<br />
scope=spfile<br />
sid='*';<br />
sid='*';<br />
alter<br />
alter<br />
system<br />
system<br />
reset<br />
reset<br />
cluster_database<br />
cluster_database<br />
scope=spfile<br />
scope=spfile<br />
sid='*';<br />
sid='*';<br />
– Setup des Close Gap Features<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
fal_server='DB9<strong>RAC</strong>.trivadistraining.com';<br />
fal_server='DB9<strong>RAC</strong>.trivadistraining.com';<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
fal_client='DB9venus.trivadistraining.com';<br />
fal_client='DB9venus.trivadistraining.com';<br />
– Falls die Datenbank zur Primary wird: Wer empfängt die archivierten<br />
Redo Logs?<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
log_archive_dest_2='SERVICE=DB9B.trivadistraining.com<br />
log_archive_dest_2='SERVICE=DB9B.trivadistraining.com<br />
OPTIONAL<br />
OPTIONAL<br />
REOPEN=60';<br />
REOPEN=60';<br />
– Anmeldung bei allen Listenern<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
23
©<br />
Setup: Aufbau Single Node <strong>Standby</strong> (2)<br />
� <strong>Standby</strong> initial starten:<br />
startup<br />
startup<br />
nomount<br />
nomount<br />
alter<br />
alter<br />
database<br />
database<br />
mount<br />
mount<br />
standby<br />
standby<br />
database;<br />
database;<br />
recover<br />
recover<br />
automatic<br />
automatic<br />
standby<br />
standby<br />
database;<br />
database;<br />
recover<br />
recover<br />
managed<br />
managed<br />
standby<br />
standby<br />
database<br />
database<br />
disconnect;<br />
disconnect;<br />
� Don't panic:<br />
SQL><br />
SQL><br />
recover<br />
recover<br />
managed<br />
managed<br />
standby<br />
standby<br />
database<br />
database<br />
disconnect;<br />
disconnect;<br />
Media<br />
Media<br />
recovery<br />
recovery<br />
complete.<br />
complete.<br />
� Alles ist ok:<br />
Starting<br />
Starting<br />
datafile<br />
datafile<br />
5<br />
5<br />
recovery<br />
recovery<br />
in<br />
in<br />
thread<br />
thread<br />
1<br />
1<br />
sequence<br />
sequence<br />
88<br />
88<br />
Datafile<br />
Datafile<br />
5:<br />
5:<br />
'/u00/oradata/DB9/users01DB9'<br />
'/u00/oradata/DB9/users01DB9'<br />
Media<br />
Media<br />
Recovery<br />
Recovery<br />
Waiting<br />
Waiting<br />
for<br />
for<br />
thread<br />
thread<br />
1<br />
1<br />
seq#<br />
seq#<br />
88<br />
88<br />
Sun<br />
Sun<br />
Apr<br />
Apr<br />
6<br />
6<br />
13:49:47<br />
13:49:47<br />
2003<br />
2003<br />
Completed:<br />
Completed:<br />
ALTER<br />
ALTER<br />
DATABASE<br />
DATABASE<br />
RECOVER<br />
RECOVER<br />
managed<br />
managed<br />
standby<br />
standby<br />
database<br />
database<br />
d<br />
d<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
24
©<br />
Setup: File Locations<br />
� In unserem Beispiel: <strong>RAC</strong> Datenbankdateien unter<br />
/u11/oradata/DB9 (OCFS), Single Node Datenbankdateien<br />
unter /u00<br />
� Andere Lokation der Controlfiles muss explizit im spfile<br />
definiert werden<br />
� Pfad Mapping muss auf <strong>Standby</strong> <strong>und</strong> auf Primary definiert<br />
sein (wegen Rollenwechsel aka Switchover)<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
db_file_name_convert="u11","u00"<br />
db_file_name_convert="u11","u00"<br />
scope=spfile;<br />
scope=spfile;<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
log_file_name_convert="u11","u00"<br />
log_file_name_convert="u11","u00"<br />
scope=spfile;<br />
scope=spfile;<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
db_file_name_convert="u00","u11"<br />
db_file_name_convert="u00","u11"<br />
scope=spfile;<br />
scope=spfile;<br />
alter<br />
alter<br />
system<br />
system<br />
set<br />
set<br />
log_file_name_convert="u00","u11"<br />
log_file_name_convert="u00","u11"<br />
scope=spfile;<br />
scope=spfile;<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
25
©<br />
Switchover<br />
� Da Data Guard mit <strong>RAC</strong> nicht klarkommt: Back to the roots<br />
of Oracle9i Release 1!<br />
� D.h. auf Primary:<br />
alter<br />
alter<br />
database<br />
database<br />
commit<br />
commit<br />
to<br />
to<br />
switchover<br />
switchover<br />
to<br />
to<br />
physical<br />
physical<br />
standby;<br />
standby;<br />
--<br />
--<br />
nur<br />
nur<br />
einmal<br />
einmal<br />
shutdown<br />
shutdown<br />
immediate<br />
immediate<br />
startup<br />
startup<br />
nomount<br />
nomount<br />
alter<br />
alter<br />
database<br />
database<br />
mount<br />
mount<br />
standby<br />
standby<br />
database;<br />
database;<br />
recover<br />
recover<br />
managed<br />
managed<br />
standby<br />
standby<br />
database<br />
database<br />
disconnect;<br />
disconnect;<br />
--<br />
--<br />
falls<br />
falls<br />
es<br />
es<br />
sich<br />
sich<br />
um<br />
um<br />
die<br />
die<br />
--<br />
--<br />
recoverng<br />
recoverng<br />
instance<br />
instance<br />
handelt<br />
handelt<br />
� D.h. auf <strong>Standby</strong>:<br />
alter<br />
alter<br />
database<br />
database<br />
commit<br />
commit<br />
to<br />
to<br />
switchover<br />
switchover<br />
to<br />
to<br />
primary;<br />
primary;<br />
shutdown<br />
shutdown<br />
immediate<br />
immediate<br />
startup<br />
startup<br />
� Client Listener nicht vergessen zu stoppen bzw. zu starten!<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
26
©<br />
Agenda<br />
A. Positionierung im Oracle HA Umfeld<br />
B. Kombination aus <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
C. Fazit: <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
27
©<br />
Fazit: <strong>RAC</strong> <strong>und</strong> <strong>Standby</strong> <strong>Datenbanken</strong><br />
� Schöner wäre: <strong>RAC</strong> <strong>und</strong> Data Guard<br />
� Nicht so tragisch, da ein DBA, der <strong>RAC</strong> <strong>und</strong><br />
Dataguard/<strong>Standby</strong> beherrscht, in der Regel kein Problem<br />
mit sqlplus hat ☺<br />
Das Ziel muss aber sein: Data Guard ist <strong>RAC</strong>-aware<br />
(zumindest dgmgrl)<br />
� Gr<strong>und</strong>sätzlich funktioniert das System wie erwartet<br />
� Mit zwei <strong>RAC</strong> <strong>Datenbanken</strong> hätte man sogar No-Data-Loss<br />
Fähigkeiten (Einschränkung laut Oracle Manual)<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
28
©<br />
Ausblick auf Oracle 10 g<br />
� Ab dem nächsten Oracle Release kommt Data Guard mit<br />
<strong>RAC</strong> <strong>Datenbanken</strong> klar: Der Hostname wird in der<br />
Configuration nicht mehr benötigt<br />
CREATE CREATE CONFIGURATION CONFIGURATION 'Galaxy' 'Galaxy' AS AS<br />
PRIMARY PRIMARY DATABASE DATABASE IS IS 'DB9' 'DB9'<br />
CONNECT CONNECT IDENTIFIER IDENTIFIER IS IS DB9<strong>RAC</strong>.trivadis.com;<br />
� Wann kommt der nächste Oracle Release? ☺<br />
<strong>RAC</strong> <strong>und</strong> <strong>Standby</strong><br />
29