Data Guard durch Firewalls? Kein Problem mit Connection Manager! Mathias Zarick Principal Consultant BASEL 1 BERN BRUGG LAUSANNE ZÜRICH 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN Vorstellung – Mathias Zarick Principal Consultant bei Trivadis Delphi GmbH in Wien Trainer Data Guard, Architektur und Interna für fortgeschrittene DBAs, Maximum Availability Architecture Workshop E-Mail: [email protected] Hauptthemen: Oracle Datenbank Oracle Hochverfügbarkeitsprojekte (Real Application Clusters, Data Guard, Maximum Availability Architecture, Replikation mit Streams und GoldenGate) Backup/Recovery Entwicklungsleiter der Trivadis Toolbox Entwickler von TVD-Standby Forschungsprojekte im Trivadis Technology Center (TTC) 2 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Unser Unternehmen Trivadis ist führend bei der IT-Beratung, der Systemintegration, dem Solution-Engineering und der Erbringung von IT-Services mit Fokussierung auf und Technologien im D-A-CH-Raum. Unsere Leistungen erbringen wir aus den strategischen Geschäftsfeldern: BETRIEB Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme. 3 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Mit über 600 IT- und Fachexperten bei Ihnen vor Ort 12 Trivadis Niederlassungen mit über 600 Mitarbeitenden Hamburg 200 Service Level Agreements Mehr als 4'000 Trainingsteilnehmer Düsseldorf Forschungs- und Entwicklungsbudget: CHF 5.0 / EUR 4 Mio. Frankfurt Finanziell unabhängig und nachhaltig profitabel Stuttgart Wien Freiburg München Erfahrung aus mehr als 1'900 Projekten pro Jahr bei über 800 Kunden Basel Brugg Bern Zürich Lausanne 4 4 4 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Stand 12/2012 BASEL 5 BERN BRUGG LAUSANNE ZÜRICH 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN Data Guard durch Firewalls 1. Einführung 2. Data Guard und Connection Manager 3. Observer 4. Fazit 6 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Oracle Datenbank Infrastruktur beim Kunden Herausforderung Vorher: Kunde Broadcasting in Österreich Technologien und Produkte Vorher: - 5 Databanken Oracle Enterprise Edition 11.2 - Oracle Streams Jetzt: - Data Guard - Connection Manager 7 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Errichten und Betreiben einer 5 Wege Multimaster Replikation Jetzt: Clients in verschiedenen durch Firewalls abgeschotteten Netzwerksegmenten Lösung wird hier vorgestellt Streams Setup war ein nettes Pentagramm Oracle Streams Schema Level Replication User: PILOT 1 Capture 4 Propagations 4 Applies 1 Capture 4 Propagations 4 Applies 1 Capture 4 Propagations 4 Applies 1 Capture 4 Propagations 4 Applies 1 Capture 4 Propagations 4 Applies 8 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Keine Angst! ☺ Warum Streams hier doch ein Problem wurde Die Streams Replikation lief perfekt Konflikte konnten in der Multimaster Replikation vermieden werden Aber – der asynchrone Message Austausch wurde zum Problem Die Applikation braucht auch Advanced Queuing (AQ) In seltenen Fällen konnte eine AQ Message die dazugehörenden Schemadaten überholen AQ: “Es gibt einen neuen Datensatz in der Playlist!” Applikation: Query des Datensatz 9 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 no data found Datenbank Charakteristiken Oracle Database 11.2.0.3 Oracle Windows Patch Bundle 13 for 11.2.0.3 (Nov. 2012) Windows Server 2008 R2 Oracle Data Guard Oracle Connection Manager (CM) Lizenzen: Oracle Enterprise Edition Keine weiteren Optionen Kein Tuning / Diagnostics Pack (Keine Installation der OEM Database Console) 10 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard durch Firewalls 1. Einführung 2. Data Guard und Connection Manager 3. Observer 4. Fazit 11 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard Kommunikation (1) Client Primary Standby Client verbindet zum Primärserver, z.B. Port 1521 LNS/NSS Prozess verbindet sich zum Standby Server (RFS), z.B. Port 1521 Nach einem Rollenwechsel muss sich der Client zum ehemaligen Standby-, jetzt Primärserver verbinden Die Verbindung kann durch Oracle Net Failover Mechanismen und TAF transparent verschoben werden 12 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard Kommunikation (2) Client Primary Standby Anderer Client Eine Firewall zwischen Primär- und Standbyserver ist kein Problem für die Basis Funktionalität (Log Transport, Broker Kommunikation) Wenn man bereit ist einige bekannte Verbindungen durch die Firewall zuzulassen (Firewall Holes) Aber Was ist, wenn wir die Rolle wechseln müssen? Was ist, wenn wir mehrere Clients von verschiedenen Subnetzten zugreifen lassen müssen? 13 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Connection Manager Oracle Net Proxy Arbeitet auf Session-Level Benutzer verbinden sich auf den CM Listener der CM Gateway Prozess verbindet auf die DB oder einen anderen CM Installation wird mit dem Client Paket gemacht: custom installation Oracle Connection Manager Oracle Net Listener Oracle Database Utilities Kann für Security-Zwecke verwendet werden Erlauben / Verweigern von spezifischen Clients, Servern, Services Kann zum Umgehen verschiedener Netzwerkeigenschaften verwendet werden, z.B. IPV4 IPV6 Oder um verschiedene separate Netzwerke zu verbinden 14 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard Setup Details Physical standby database Konfiguration Primary Datenbank: Server1, DB_UNIQUE_NAME VIZRTDB_SITE1 Standby Datenbank: Server3, DB_UNIQUE_NAME VIZRTDB_SITE2 Log Transport, lokaler Listener Port 1522 Maximum Availability Synchroner Log Transport Zero data loss Fast Start Failover ist aktiviert Observer ist im Produktions Netzwerk (Server4) Ein Backup Observer ist im Office Netzwerk vorbereitet (Server2) 15 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard durch eine Firewall Es gibt eine Firewall zwichen Office- und Produktionsnetzwerk 4 CM Instanzen sind installiert, um diese Herausforderung zu lösen: Auf dem Primären Datenbank Server (Server1, Produktionsnetzwerk) Auf dem Standby Datenbank (Server 3, Office-Netzwerk) Auf 2 zusätzlichen Servern (Server2, Server 4) um die Verfügbarkeit pro Netzwerk zu erhöhen CM Listener sind auf Port 1521 konfiguriert Offene Ports (Firewall Holes): Port 1521 und 1522 für den Primärdatenbankserver, den Standbydatenbankserver und die 2 anderen CMs (bzw. Observer) 16 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Infrastruktur – Big Picture 17 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Oracle Datenbank Services für kontrollierten Zugriff (1) Oracle Datenbank Instanzen registrieren ihre Services auf alle 4 CMs remote_listener ist folgendermaßen gesetzt SQL> ALTER SYSTEM SET remote_listener = ' (ADDRESS_LIST= (ADDRESS=(HOST=SERVER1)(PROTOCOL=TCP)(PORT=1521)) (ADDRESS=(HOST=SERVER2)(PROTOCOL=TCP)(PORT=1521)) (ADDRESS=(HOST=SERVER3)(PROTOCOL=TCP)(PORT=1521)) (ADDRESS=(HOST=SERVER4)(PROTOCOL=TCP)(PORT=1521)) )' ; VIZRTDB ist der primäre Service VIZRTDB_RO, falls die Standby read only geöffnet wird VIZRTDB_SNAP, falls sie als Snapshot Standby read write geöffnet wird TAF ist für alle diese Services eingeschaltet Failover Method BASIC, Failover Type SELECT Failover Retries 3600, Failover Delay 1 18 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Oracle Datenbank Services für kontrollierten Zugriff (2) Benutzer verbinden über die CMs auf Port 1521 Jeder CM verbindet zur Primärdatenbankinstanz über den Port 1522 (Proxy Forward) Der CM arbeitet also als Oracle Net Proxy Services und lokale Listener werden den CMs bekannt gegeben VIZRTDB_SITE1: SQL> ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=SERVER1)(PORT=1522))'; VIZRTDB_SITE2: SQL> ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=SERVER3)(PORT=1522))'; 19 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Verbindungsaufbau durch den Connection Manager 1521 2 Connection Request CM Client 2 CM 1521 Connection Request CM CM 3 3 1522 Proxy Connection Forwarding 1 1521 Service Registration by PMON Log XFer Primary VIZRTDB_SITE1 20 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 1522 Proxy Connection Forwarding 1522 Standby VIZRTDB_SITE2 Client Korrekte Verbindungen sind wichtig (1) Die beschriebene Konnektivität ist wichtig für die Umgebung und darf nicht umgangen werden Daher wird das direkte Verbinden auf den DB Server verweigert sqlnet.ora des Datenbankserver Listeners: SQLNET.EXPIRE_TIME = 5 # Dead Connection Detection # Keep Alive Packets TCP.VALIDNODE_CHECKING=yes TCP.INVITED_NODES=(SERVER1,SERVER2,SERVER3,SERVER4) Falls eine Verbindung von einer anderen Maschine versucht wird, wird folgender Fehler geworfen: SQL> connect system@VIZRTDB_SITE1 Enter password: ERROR: ORA-12537: TNS:connection closed 21 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Korrekte Verbindungen sind wichtig (2) Der CM erlaubt nur bekannte Services, cman.ora cman_SERVER1.domain = (configuration= (address=(protocol=tcp)(host=SERVER1)(port=1521)) (parameter_list = ... ) (rule_list= (rule=(src=*)(dst=*)(srv=cmon)(act=accept)) (rule=(src=*)(dst=SERVER1)(srv=VIZRTDB)(act=accept)) (rule=(src=*)(dst=SERVER3)(srv=VIZRTDB)(act=accept)) (rule=(src=*)(dst=SERVER1)(srv=VIZRTDB_RO)(act=accept)) (rule=(src=*)(dst=SERVER3)(srv=VIZRTDB_RO)(act=accept)) (rule=(src=*)(dst=SERVER1)(srv=VIZRTDB_SNAP)(act=accept)) (rule=(src=*)(dst=SERVER3)(srv=VIZRTDB_SNAP)(act=accept)) ) ) 22 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Verbindungen aus Office- und Produktionsnetzwerk TNS Connect Deskriptoren # office network VIZRTDB = (DESCRIPTION = (ADDRESS_LIST= (LOAD_BALANCE=OFF) (CONNECT_TIMEOUT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER1 )(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER3 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = VIZRTDB))) # production network VIZRTDB = (DESCRIPTION = (ADDRESS_LIST= (LOAD_BALANCE=OFF) (CONNECT_TIMEOUT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER2 )(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER4 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = VIZRTDB))) 23 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Active Data Guard wird vermieden, Services werden dynamisch gesetzt Ein „After startup on database“ trigger Verweigert das Read-Only-Öffnen der Standbydatenbank auf normale Art und Weise Vermeidet daher die Benutzung der Real-Time Query und den Bedarf der Lizenz für die Active Data Guard Option Übernimmt das Starten der korrekten Services nach Evaluierung der aktuellen Rolle (VIZRTDB, VIZRTDB_RO, VIZRTDB_SNAP) Für weitere Details, siehe Blog http://blog.trivadis.com/b/mathiaszarick/archive/2012/09/07/active-dataguard-s-real-time-query-avoid-usage-if-not-licensed.aspx 24 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Trigger Code Auszug / nur der Teil der Vermeidung von ADG ist hier dargestellt CREATE OR REPLACE TRIGGER service_trigger_no_adg AFTER STARTUP ON DATABASE DECLARE v_sql v$sql.sql_text%TYPE; BEGIN IF sys_context('userenv','database_role') = 'PHYSICAL STANDBY' THEN SELECT sql_text INTO v_sql FROM v$sql sq, v$session se WHERE sq.sql_id = se.sql_id AND se.sid = sys_context('userenv','sid'); IF v_sql NOT LIKE '%FORCE%' THEN EXECUTE IMMEDIATE '/* do not open as we do not have adg licensed */ ALTER DATABASE CLOSE'; /* restart DMON */ EXECUTE IMMEDIATE('ALTER SYSTEM SET dg_broker_start=FALSE SCOPE=MEMORY'); EXECUTE IMMEDIATE('ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=MEMORY'); END IF; END IF; END; / 25 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Aber es geht noch besser In einem Blog von Uwe Hesse wurde ein besserer Weg vorgestellt, ADG zu vermeiden http://uhesse.com/2013/10/01/parameter-to-prevent-license-violationwith-active-data-guard/ SQL> ALTER SYSTEM SET "_query_on_physical" = FALSE SCOPE=SPFILE Aber: es ist ein undokumentierter Parameter, also habe ich Oracle Support gefragt, ob es unterstützt ist. „SR 3-7930233621 : support of parameter _query_on_physical”: Is it supported to set the _query_on_physical to false? NO - it is not supported. Ich habe im selben SR einen Enhancement Request eingegeben, um einen unterstützten Weg zu bekommen: “Work in Progress” 26 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard durch Firewalls 1. Einführung 2. Data Guard und Connection Manager 3. Observer 4. Fazit 27 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Observer Konfiguration Server: SERVER4, SERVER2 (Observer Service ist nur vorbereitet) Script: observer.cmd SrvAny aus dem Windows Resource Kit (http://support.microsoft.com/kb/137890) wird für die Konfiguration des Windows Service verwendet C:\Users\Administrator>sc qc OracleObserver [SC] QueryServiceConfig SUCCESS SERVICE_NAME: OracleObserver TYPE : START_TYPE : ERROR_CONTROL : BINARY_PATH_NAME : TAG : DISPLAY_NAME : DEPENDENCIES : SERVICE_START_NAME : 28 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 10 WIN32_OWN_PROCESS 2 AUTO_START 1 NORMAL C:\..\Win Resource Kits\..\srvany.exe 0 OracleObserver LocalSystem Observer CMD Script nutzt TVD-BasEnv observer.cmd Oracle Home wird mit dem CM geteilt Umgebung wird durch Trivadis BasEnv gesetzt @ECHO OFF REM source the environment CALL basenv.cmd CALL %BE_HOME%\bin\oraenv.cmd VIZRTDB CD /D c:\oracle\admin\%ORACLE_SID%\log REM we write the stop to another logfile as it may be locked by last run SET LOGFILE=c:\oracle\admin\%ORACLE_SID%\log\observer_stop.log DATE /T >>%LOGFILE% TIME /T >>%LOGFILE% %ORACLE_HOME%\bin\dgmgrl -silent "sys/***********@VIZRTDB" "stop observer" >>%LOGFILE% SLEEP 10 >>%LOGFILE% 2>&1 SET LOGFILE=c:\oracle\admin\%ORACLE_SID%\log\observer.log ECHO observer script start >>%LOGFILE% %ORACLE_HOME%\bin\dgmgrl -silent "sys/***********@VIZRTDB" "start observer" >>%LOGFILE% 29 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 SrvAny Konfiguration Service wurde folgendermaßen angelegt: sc.exe create OracleObserver ^ binPath= "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe" SrvAny Konfiguration in der Registry: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\OracleObserver\Par ameters] "Application"="C:\\Windows\\System32\\cmd.exe" "AppParameters"="/c C:\\oracle\\local\\dba\\bin\\observer.cmd" 30 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Data Guard durch Firewalls 1. Einführung 2. Data Guard und Connection Manager 3. Observer 4. Fazit 31 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Fazit Hochverfügbarkeit durch Data Guard Strenges Servicekonzept mit Zugriffsregeln Erfolgreiches Projekt Zufriedener Kunde Sparen von Lizenzkosten Einsparen bei der Komplexität und im Betrieb Einige Herausforderungen bezüglich Netzwerk wurden mit Connection Manager gelöst 32 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Keine ADG Lizenz Vermeidung der Real-Time Query Observer und FSFO auf Windows: kein Problem mit Microsoft Windows Resource Kit und Trivadis Toolbox Weitere Informationen... Data Guard Concepts and Administration http://docs.oracle.com/cd/E11882_01/server.112/e41134/toc.htm Net Services Administrator‘s Guide http://docs.oracle.com/cd/E11882_01/network.112/e41945/toc.htm 33 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 Fragen und Antworten... Mathias Zarick Principal Consultant +43 664 85 44 295 [email protected] BASEL 34 BERN BRUGG LAUSANNE ZÜRICH 2013 © Trivadis Data Guard durch Firewalls 21.11.2013 DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN Trivadis an der DOAG Ebene 3 - gleich neben der Rolltreppe Wir freuen uns auf Ihren Besuch. Denn mit Trivadis gewinnen Sie immer. 35 2013 © Trivadis Data Guard durch Firewalls 21.11.2013