-
Oracle 11g DataGuard-Konfiguration
Oracle Database 11g Enterprise Edition Version 11.1.0.6.0 – 64-Bit-Produktion
Red Hat Enterprise Linux Server Version 5.3 (Tikanga)
1. Vorbereitung der Testumgebung
1. Die Hauptdatenbank und die Standby-Datenbank haben dieselbe Oracle-Version und laufen auf derselben Plattform wie Linux, die Serverhardware kann jedoch unterschiedlich sein.
2. Die Primärdatenbank muss im Archivmodus ausgeführt werden. Stellen Sie sicher, dass FORCE LOGGING in der Primärdatenbank geöffnet ist, um zu verhindern, dass Benutzer Redo über Nologging und andere Methoden schreiben, was dazu führt, dass die entsprechenden Vorgänge nicht an die Standby-Datenbank übertragen werden.
3. Sowohl Primär- als auch Standby-Datenbanken können in Einzelinstanz- oder RAC-Architekturen eingesetzt werden, und die gleiche Data Guard-Konfiguration kann logische Standby- und physische Standby-Datenbanken kombinieren.
4. Es wird empfohlen, dass die Datenbank dieselbe Speicherarchitektur verwendet. Wenn beispielsweise ASM/OMF für die Speicherung verwendet wird, muss ASM/OMF unabhängig von Primär oder Standby verwendet werden.
5. Die Umgebung der Standby-Bibliothek ist dieselbe wie die der Primärbibliothek.
2. Passen Sie die Hauptbibliothek an
1. Ändern Sie die Hauptdatenbank in den erzwungenen Protokollmodus
Datenbank-Erzwingungsprotokollierung ändern;
2. Erstellen Sie ein Passwort
orapwd file=$ORACLE_HOME/dbs/orapwtest passwort=testeinträge=3
3. Ändern Sie die Initialisierungsparameter der Hauptbibliothek
db_unique_name ='test01'
db_name gibt den Namen der Datenbank an, db_unique_name gibt die verschiedenen Namen der Datenbank an (primäre Datenbank und Standby-Datenbank), was die eindeutige Identifizierung von db_name darstellt. Tatsächlich dient es dazu, Datenbanken mit demselben Datenbanknamen zu unterscheiden, um die Anwendung und Verwaltung zu erleichtern. Es handelt sich um einen Parameter nach 10g.
log_archive_config='DG_CONFIG=(test01,test02)'
test01, test02 ist .db_unique_name
log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
Bestimmen Sie log_archive_dest_state_1
log_archive_dest_state_1=aktivieren #Die Standardeinstellung ist aktivieren
log_archive_dest_state_2= aktivieren
/*Die folgenden Teile werden zum Umschalten des Hosts auf die Standby-Datenbank verwendet*/
fal_server=test_db_02
fal_client=test_db_01
standy_file_management=auto
#Wenn die primären und sekundären Datenbankdateien oder -pfade unterschiedlich sind
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
Es wird empfohlen, dass die Parameterdatei spfile verwendet, damit die Parameter mithilfe von Befehlen in der Non-Stop-Bibliothek geändert werden können.
4. Stellen Sie sicher, dass die Datenbank im Archivprotokollmodus ausgeführt wird
SQL> Archivprotokollliste
Datenbankprotokollmodus Kein Archivmodus
Automatische Archivierung deaktiviert
Archivziel USE_DB_RECOVERY_FILE_DEST
Älteste Online-Protokollsequenz 2
Aktuelle Protokollsequenz 4
Stellen Sie die Datenbank auf den Archivelog-Modus ein
SQL> wird sofort heruntergefahren
SQL> Startup-Mount
SQL> Datenbankarchivprotokoll ändern;
SQL> Datenbank öffnen;
5. Erstellen Sie ein Standby-Protokoll in der Hauptdatenbank (zum Umschalten).
Datenbank ändern, verwaltete Standby-Datenbank wiederherstellen, Abbrechen;#Nicht ausgeführt
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;
mkdir -p /u01/app/oracle/standby/test
SQL>Datenbank ändern, Standby-Protokolldateigruppe 4 hinzufügen('/u01/app/oracle/standby/test/stdby_redo04.log') Größe 50 MB;
SQL>Datenbank ändern, Standby-Protokolldateigruppe 5 hinzufügen('/u01/app/oracle/standby/test/stdby_redo05.log') Größe 50 MB;
SQL>Datenbank ändern, Standby-Protokolldateigruppe 6 hinzufügen('/u01/app/oracle/standby/test/stdby_redo06.log') Größe 50 MB;
SQL>Datenbank ändern, verwaltete Standby-Datenbank wiederherstellen, von Sitzung trennen;#Nicht ausgeführt
3. Erstellen Sie eine Standby-Datenbank
1. Erstellen Sie eine PWD-Datei in der Standby-Datenbank
orapwd file=$ORACLE_HOME/dbs/orapwtest passwort=testeinträge=3
Das Passwort muss mit dem der Primärdatenbank identisch sein
2. Ändern Sie die Initialisierungsparameter der Standby-Datenbank, die sich von denen der Primärdatenbank unterscheiden, wie folgt:
db_unique_name=test02
log_archive_dest_1='location=/u01/app/oracle/arch/test valid_for=(all_logfiles,all_roles) db_unique_name=test02'
log_archive_dest_2='service=test_db_01 ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test01'
fal_client='test_db_02'
fal_server='test_db_01'
db_file_name_convert='/u01/app/oracle/oradata/TEST01/datafile','/u01/app/oracle/oradata/TEST02/datafile'
log_file_name_convert='/u01/app/oracle/oradata/TEST01/onlinelog','/u01/app/oracle/oradata/TEST02/onlinelog', '/u01/app/oracle/flash_recovery_area/TEST01/onlinelog','/u01 /app/oracle/flash_recovery_area/TEST01/onlinelog'
Verwenden Sie nach der Änderung die folgende Anweisung zum Anzeigen
SQL> select * from V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME
-------------------------------------------------- ----------------------------------------
test01
test02
4. Erstellen Sie die entsprechenden Verzeichnisse, das Dump-Dateiverzeichnis, das Datendateiverzeichnis und das Archivverzeichnis
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/arch/test
5. Konfigurieren Sie die Dateien listener.ora und tnsnames.ora der Standby-Datenbank, um das Abhören mit der Hauptdatenbank neu zu starten, und prüfen Sie, ob tnsping erfolgreich sein kann.
6. Starten Sie die Standby-Datenbank im Nomount-Status
SQL> Start-Nomount
7. Verwenden Sie die Duplikatfunktion von RMAN, um eine Standby-Datenbank zu erstellen. 11g kann diese direkt in die Standby-Datenbank kopieren, ohne ein Backup zu erstellen:
RMAN> rman hilfsmittel /
Verbinden Sie das Ziel sys/test@test_db_01
Zieldatenbank für Standby-Dorecover duplizieren nofilenamecheck;
Überprüfen Sie den Status der Standby-Datenbank
SQL> select Database_role,protection_mode,protection_level from v$database;
SQL> select sequence# ,angewendet von v$archived_log order by sequence#;
8. Starten Sie die Hauptbibliothek der Redo-Anwendung
SQL> Systemarchivprotokoll aktuell ändern;
Standby-Datenbank, 11g kann das Datenbankanwendungsprotokoll schreibgeschützt öffnen
SQL> Datenbank ändern, schreibgeschützt öffnen;
SQL> Datenbank ändern, verwaltete Standby-Datenbank wiederherstellen, von Sitzung trennen;
Sie können die verwaltete Standby-Datenbank auch mithilfe der aktuellen Protokolldatei wiederherstellen und vom Sitzungsprotokoll trennen.
Wenn die aktuelle Protokolldatei nicht verwendet wird, wenden Sie das archivierte Standby-Protokoll an.
Die Verwendung der aktuellen Protokolldatei wird angewendet, wenn das Protokoll in das Standby-Redo-Log übertragen wird. Es ist in Echtzeit und muss über ein Standby-Redo-Log verfügen.
4. Verwaltungsmodus und schreibgeschützter Modus des Standby-Servers
1. Starten Sie im Verwaltungsmodus
SQL>sofort herunterfahren;
SQL>startup nomount;
SQL>Datenbank ändern, Standby-Datenbank bereitstellen;
SQL>Datenbank ändern, verwaltete Standby-Datenbank wiederherstellen, von Sitzung trennen;
2. Starten Sie im schreibgeschützten Modus
SQL>sofort herunterfahren;
SQL>startup nomount;
SQL>Datenbank ändern, Standby-Datenbank bereitstellen;
SQL>Datenbank ändern, schreibgeschützt öffnen;
(3) Wenn Sie im Verwaltungswiederherstellungsmodus in den schreibgeschützten Modus wechseln
SQL> Wiederherstellung der verwalteten Standby-Datenbank abbrechen;
SQL> Datenbank ändern, schreibgeschützt öffnen;
Zu diesem Zeitpunkt können Sie temporäre Datendateien zur Datenbank hinzufügen (diese werden bei der Hot-Sicherung nicht gesichert).
wie
Tablespace-Temp ändern, temporäre Datei „/u02/oradata/test/temp01.dbf“ hinzufügen, Größe 100 MB;
5. Vom schreibgeschützten Modus zum verwalteten Wiederherstellungsmodus
SQL> Wiederherstellung der verwalteten Standby-Datenbank, Trennung von der Sitzung;
5. Wechseln Sie zwischen aktiven und Standby-Datenbanken
lsnrctl stop
SQL> Datenbank-Commit ändern, um mit Sitzungsabschaltung in den physischen Standby-Modus zu wechseln;
SQL> sofort herunterfahren;
SQL> Startup-Mount;
SQL> Datenbank ändern, verwaltete Standby-Datenbank wiederherstellen, trennen;
lsnrctl starten
Sicherung
SQL> Datenbank-Commit ändern, um zur Primärdatenbank zu wechseln;
SQL> sofort herunterfahren;
SQL> Start
6. Der folgende Anhang ist der Inhalt der Konfigurationsdatei:
listener.ora
HÖRER =
(BESCHREIBUNG=
(ADRESSE = (PROTOKOLL = TCP)(HOST = oracle6)(PORT = 1521))
)
tnsnames.ora
TEST_DB_02 =
(BESCHREIBUNG=
(ADDRESS_LIST =
(ADRESSE = (PROTOKOLL = TCP)(HOST = 192.168.202.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test02)
)
)
TEST_DB_01 =
(BESCHREIBUNG=
(ADDRESS_LIST =
(ADRESSE = (PROTOKOLL = TCP)(HOST = 192.168.202.6)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test01)
)
)
pfile
test.__db_cache_size=1526726656
test.__java_pool_size=16777216
test.__large_pool_size=16777216
test.__oracle_base='/u01/app/oracle'#ORACLE_BASE aus der Umgebung festgelegt
test.__pga_aggregate_target=1342177280
test.__sga_target=2013265920
test.__shared_io_pool_size=0
test.__shared_pool_size=436207616
test.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.audit_trail='db'
*.kompatibel='11.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl','/u01/app/oracle/oradata/test/control02.ctl','/u01/app/oracle/oradata/test/ control03.ctl'
*.db_block_size=8192
*.db_domain='greatsky.com'
*.db_name='test'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='test01'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.fal_client='TEST_DB_01'
*.fal_server='TEST_DB_02'
*.log_archive_config='dg_config=(test01,test02)'
*.log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
*.log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
*.memory_target=3347054592
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXKLUSIV'
*.service_names='test.greatsky.com','test01.greatsky.com'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'