Standby Database Autor: Thomas Tretter (freiberuflicher Datenbank Berater) Mail: [email protected] Mobile: 0172/4349574 Systemumgebung Oracle 8.1.6 auf HP-UX 11.0 Primary Database PRIMARY Name | Bytes Grabbed| Bytes Grabbed| Free| Used % ------------------------------|----------------|----------------|----------------|-------RBS | 52,428,800| 4,923,392| 47,505,408| 9.391 RMAN | 52,428,800| 3,653,632| 48,775,168| 6.969 SYSTEM | 104,857,600| 50,257,920| 54,599,680| 47.930 TEMP | 26,214,400| 8,192| 26,206,208| .031 TEST | 10,485,760| 90,112| 10,395,648| .859 USERS | 10,485,760| 172,032| 10,313,728| 1.641 |----------------|----------------|----------------| sum | 256,901,120| 59,105,280| 197,795,840| Standby Database STANDBY 2 Systemumgebung (2) Pfad der Primary Database /db/PRIMARY/arch /db/PRIMARY/data01 /db/PRIMARY/index01 /db/PRIMARY/redo01 / 02 Pfad der Standby Database /db/STANDBY/arch /db/STANDBY/data01 /db/STANDBY/index01 /db/STANDBY/redo01 / 02 3 Zusammenfassung der Vorteile: Gute Möglichkeit des Disaster Recovery bei physischer Trennung der Datenbanken Bei schneller Übertragung der ausstehenden Logfiles kurze MTTR Keine Performance Beeinträchtigung der Primary Database Standby Database kann im Read Only Modus betrieben werden (8i) Eine Standby Database ist einfacher zu administrieren, als andere Replikationsmechanismen. Low Cost Lösung 4 Funktionsweise 5 Vorbereitung Backup der Primary Database erzeugen (offline oder online) Standby Database Controlfile erzeugen SQL> alter database create standby controlfile as '/tmp/standby.ctl'; Standby Database Controlfile in Zielumgebung kopieren Konfiguration der SQL*Net Umgebung vi listener.ora 6 Erstellung einer Standby Database Konfiguration Parameterfile Primary Database (initPRIMARY.ora) Konfiguration Parameterfile Standby Database (initSTANDBY.ora) Start der Standby Database mit Vorbereitung für managed Recovery Dateien der Standby Database umbenennen Archive Logs identifizieren und ins Standby Filesystem kopieren Archive Logs applizieren Standby Database in managed Recovery Mode bringen 7 Standby Database aktivieren Parameterfile Primary Database ################ # Parameters for primary Database compatible = 8.1.6 log_archive_max_processes = 5 log_archive_start = true # Archiving an # log_archive_dest = /db/PRIMARY/arch/ # ersetzt durch log_archive_dest_1 log_archive_format = PRIMARY_%S.arc # 1. location: PRIMARY local log_archive_dest_1 = 'LOCATION=/db/PRIMARY/arch/ MANDATORY' log_archive_dest_state_1 = enable # 2. location: STANDBY ueber SQL*Net log_archive_dest_2 = 'SERVICE=GERTEST1_STANDBY.WORLD OPTIONAL REOPEN=180' log_archive_dest_state_2 = defer # diesen Wert erst nach Start der Standby Database auf 'enable' setzen (dynamisch!) 8 Parameterfile Standby Database (1) ############################################################## # Parameters for Standby Database log_archive_start = true # if you want automatic archiving # log_archive_dest = /db/STANDBY/arch/ log_archive_format = PRIMARY_%S.arc # hier werden die Archive Logs bei manuell recovery erwartet log_archive_dest_1 = 'LOCATION=/db/STANDBY/arch/ MANDATORY' log_archive_dest_state_1 = enable 9 Parameterfile Standby Database (2) # hier werden die Archive Logs bei managed recovery erwartet, # Listener schreibt die Archives von der Primary DB hier rein! # daher am besten gleich log_archive_dest_1 setzen standby_archive_dest = /db/STANDBY/arch_managed/ # Konvertierung der Dateinamen im Controlfile # Achtung: es wird nur der Anfang des Pfades ersetzt! db_file_name_convert = ('/db/PRIMARY','/db/STANDBY') log_file_name_convert = ('/db/PRIMARY','/db/STANDBY') # zur Unterscheidung DLM bei zwei Instancen auf einer Maschine lock_name_space = standby1 10 Pflege und Überwachung Shutdown der Primary Database Shutdown der Standby Database Tablespace/Datenfile hinzufügen 11 Standby Database im Read Only Mode öffnen Vorbemerkung Wechsel in den Read Only Mode Shutdown svrmgrl> svrmgrl> svrmgrl> svrmgrl> connect internal startup nomount [pfile = initSTANDBY.ora] alter database mount standby database; alter database open read only; svrmgrl> recover managed standby database; (zurück) Manual Recovery svrmgrl> recover cancel; svrmgrl> alter database open read only; svrmgrl> recover managed standby database; (zurück) Managed Recovery svrmgrl> recover managed standby database cancel; svrmgrl> alter database open read only; svrmgrl> recover managed standby database; (zurück) 12 Standby Database mit Zeitverzögerung Konfiguration nicht direkt möglich, Realisierung nur über Scripte! Anleitung hierzu siehe 'Standby Database Concepts and Administration', Kapitel 5.10. Temporäre Tablespaces im Prinzip möglich, nicht praktikabel! Statements mit NOLOGGING Klausel im Prinzip möglich, nicht praktikabel! 13 Konfiguration des Client Failover Transparent Application Failover (TAF) Konfiguration in initPRIMARY.ora initSTANDBY.ora tnsnames.ora (bzw. Oracle Names) listener.ora Parameter GLOBAL_DBNAME inkompatibel mit Oracle Enterprise Manager! 14 Verhalten des Client bei TAF sqlplus SQL> select instance_name from v$instance; INSTANCE_NAME ---------------PRIMARY Zwischenzeitlich findet der Wechsel von der Primary Database zur Standby Database im Hintergrund statt (Standby Database wird zur neuen Produktion). SQL> select instance_name from v$instance; INSTANCE_NAME ---------------STANDBY Der Anwender merkt nichts davon, er ist immer noch zur Datenbank verbunden! 15 Referenzen 'Standby Database Concepts and Administration', Part-Nr A-76995 Dec 1999 Metalink Document Id. 69745.1 Metalink Document Id. 97926.1 16