Dieser Artikel ist Teil 2 einer zweiteiligen Serie, in der die Schritte zum Einstellen des physischen Standbymodus von Active Data Guard in der RAC-One-Node-Architektur beschrieben werden. Teil 1 finden Sie hier.
1. Wenn der Vorgang zum Duplizieren der Datenbank abgeschlossen ist (Teil 1 des Artikels), fügen Sie die Standby-Datenbank in Clusterware hinzu
srvctl add database -d analytics_dg -o /u01/app/oracle/product/12.1.0.2/dbhome_1 -c RACONENODE -p '+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora' -r PHYSICAL_STANDBY -s MOUNT -n analytics_dg -e hostdr
2. Herunterfahren einer Datenbank
sqlplus> shutdown immediate;
3. Kopieren Sie die „Oracle-Kennwortdatei“ mit dem neuen Instanznamen „orapwanalyticsdg_1“
cd $ORACLE_HOME/dbs cp orapwanalytics_dg orapwanalyticsdg_1
4. Datenbank starten
$ srvctl start database -d analytics_dg $ srvctl config database -d analytics_dg Database unique name: analytics_dg Database name: analytics_dg Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_1 Oracle user: oracle Spfile: +DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora Password file: Domain: Start options: read only Stop options: immediate Database role: PHYSICAL_STANDBY Management policy: AUTOMATIC Server pools: Disk Groups: DG_DATA,DG_RECO Mount point paths: Services: Type: RACOneNode Online relocation timeout: 30 Instance name prefix: analyticsdg Candidate servers: hostdr OSDBA group: sdba OSOPER group: soper Database instances: Database is administrator managed
5. Gemäß dem Muster von Oracle Restart wird die Instanz analytics_dg analyticsdg_1 genannt, daher muss listener.ora aktualisiert werden.
Führen Sie den Befehl „listener reload“ aus, um den Listener zu zwingen, die „listener.ora“-Einträge erneut zu lesen. Beachtung! Dieser Vorgang wirkt sich auf die Verfügbarkeit des Listeners aus.
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = analytics_dg_dgmgrl) # (SID_NAME = analytics_dg) (SID_NAME = analyticsdg_1) (ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1) ) )
6. Redo Transport Service wird manuell aktiviert, um Verbindungen und Einstellungen zu validieren.
Parameter DB_BLOCK_CHECKSUM , DB_BLOCK_CHECKING und DB_LOST_WRITE_PROTECT wird für beide Datenbanken, primär und Standby, eingerichtet, um beschädigte Blöcke zu verhindern und zu erkennen.
6.1. Parameter in der Standby-Datenbank anpassen
sqlplus> alter system set log_archive_config='dg_config=(analytics,analytics_dg)' scope=both sid='*' ; sqlplus> alter system SET log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES, ALL_LOGFILES) db_unique_name=analytics_dg' scope=both sid='*' ; sqlplus> alter system set log_archive_dest_2='service=analytics LGWR ASYNC NOAFFIRM max_failure=10 max_connections=1 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=analytics' scope=both sid='*'; sqlplus> alter system set fal_server='analytics' scope=both sid='*'; sqlplus> alter system set fal_client='analytics_dg' scope=both sid='*'; sqlplus> alter system set log_archive_max_processes=4 scope=both sid='*'; sqlplus> alter system set standby_file_management='AUTO' scope=both sid='*'; sqlplus> alter system set db_file_name_convert='+DG_DATA_DR/analytics','+DG_DATA/analytics_DG','+DG_RECO_DR/analytics','+DG_RECO/analytics_DG' scope=spfile sid='*'; sqlplus> alter system set log_file_name_convert='+DG_DATA_DR/analytics','+DG_DATA/analytics_DG','+DG_RECO_DR/analytics','+DG_RECO/analytics_DG' scope=spfile sid='*'; sqlplus> alter system set db_block_checksum=FULL scope=both sid='*' ; sqlplus> alter system set db_block_checking=MEDIUM scope=both sid='*' ; sqlplus> alter system set db_lost_write_protect=TYPICAL scope=both sid='*' ; sqlplus> alter system set log_archive_dest_state_1='enable' scope=both sid='*'; sqlplus> alter system set log_archive_dest_state_2='enable' scope=both sid='*';
6.2. Passen Sie die Parameter in der primären Datenbank an:
sqlplus> alter system set log_archive_config='dg_config=(analytics,analytics_dg)' scope=both sid='*' ; sqlplus> alter system SET log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES,ALL_LOGFILES) db_unique_name=analytics' scope=both sid='*' ; sqlplus> alter system set log_archive_dest_2='service=analytics_dg LGWR ASYNC NOAFFIRM max_failure=10 max_connections=1 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=analytics_dg' scope=both sid='*'; sqlplus> alter system set fal_server='analytics_dg' scope=both sid='*'; sqlplus> alter system set fal_client='analytics' scope=both sid='*'; sqlplus> alter system set log_archive_max_processes=4 scope=both sid='*' ; sqlplus> alter system set standby_file_management='AUTO' scope=both sid='*' ; sqlplus> alter system set db_file_name_convert='+DG_DATA/analytics_DG','+DG_DATA_DR/analytics','+DG_RECO/analytics_DG','+DG_RECO_DR/analytics' scope=spfile sid='*'; sqlplus> alter system set log_file_name_convert='+DG_DATA/analytics_DG','+DG_DATA_DR/analytics','+DG_RECO/analytics_DG','+DG_RECO_DR/analytics' scope=spfile sid='*'; sqlplus> alter system set db_block_checksum=TYPICAL scope=both sid='*' ; sqlplus> alter system set db_block_checking=MEDIUM scope=both sid='*' ; sqlplus> alter system set db_lost_write_protect=TYPICAL scope=both sid='*' ; sqlplus> alter system set log_archive_dest_state_1='enable' scope=both sid='*' ; sqlplus> alter system set log_archive_dest_state_2='enable' scope=both sid='*' ;
6.3. Das „Status“-Attribut von „Primary“ und „Standby“ muss „VALID“ zurückgeben
sqlplus> select dest_id,status,destination ,error from v$archive_dest where dest_id <=5; ID DB_status Archive_dest Error ---------- --------- ----------------------------- ------- 1 VALID USE_DB_RECOVERY_FILE_DEST 2 VALID analytics_dg 3 INACTIVE 4 INACTIVE 5 INACTIVE sqlplus> select dest_id,status,database_mode,recovery_mode from v$archive_dest_status where status <> 'INACTIVE'; DEST_ID STATUS DATABASE_MODE RECOVERY_MODE ---------- --------- --------------- ----------------------- 1 VALID OPEN IDLE 2 VALID MOUNTED-STANDBY IDLE
6.4. Redo Apply manuell starten:
sqlplus> alter database recover managed standby database using current logfile disconnect;
6.5. Synchronisierung zwischen Primär- und Standby-Datenbankvalidierung
sqlplus> select * from v$archive_gap; sqlplus> select name, value, datum_time, time_computed from v$dataguard_stats where name like 'apply lag'; sqlplus> select file_type, number_of_files, percent_space_used from v$recovery_area_usage; sqlplus> select current_scn from v$database; sqlplus> select sequence#, first_time, applied from v$archived_log order by sequence#;
6.6. Beenden Sie Redo Apply, bevor Sie Data Guard Broker einrichten
sqlplus> alter database recover managed standby database cancel; Database altered.
7. Data Guard Broker in Primär- und Standby-Datenbank einrichten
Hinweis:Data Guard-Einstellungsdateien werden in ASM in verschiedenen Datenträgergruppen erstellt:dg_broker_config_file1 und dg_broker_config_file2
7.1. In der primären Datenbank:
sqlplus> alter system set dg_broker_config_file1 = '+DG_DATA_DR/analytics/BROKERCFG/brokeranalytics1.dat' scope=both sid='*'; sqlplus> alter system set dg_broker_config_file2 = '+DG_RECO_DR/analytics/BROKERCFG/brokeranalytics2.dat' scope=both sid='*'; sqlplus> alter system set log_archive_dest_2='' scope=both sid='*' ; sqlplus> alter system set DG_BROKER_START=FALSE scope=both sid='*'; sqlplus> alter system set DG_BROKER_START=TRUE scope=both sid='*';
7.2. In Standby-Datenbank:
sqlplus> alter system set dg_broker_config_file1 = '+DG_DATA/analytics_DG/BROKERCFG/brokeranalytics_dg1.dat' scope=both sid='*'; sqlplus> alter system set dg_broker_config_file2 = '+DG_RECO/analytics_DG/BROKERCFG/brokeranalytics_dg2.dat' scope=both sid='*'; sqlplus> alter system set log_archive_dest_2='' scope=both sid='*' ; sqlplus> alter system set DG_BROKER_START=FALSE scope=both sid='*'; sqlplus> alter system set DG_BROKER_START=TRUE scope=both sid='*';
7.3. Broker-Einstellungen:
$ dgmgrl dgmgrl> connect sys/xxxxx@analytics Connected as SYSDBA. dgmgrl> create configuration 'analytics_cfg' as primary database is 'analytics' connect identifier is analytics; Configuration "analytics_cfg" created with primary database "analytics" dgmgrl> add database 'analytics_dg' as connect identifier is analytics_dg maintained as physical; Database "analytics_dg" added dgmgrl> edit database 'analytics_dg' set property logxptmode=async; Property "logxptmode" updated dgmgrl> edit configuration set protection mode as MAXPERFORMANCE; Succeeded. dgmgrl> enable configuration; Enabled.
Verwenden Sie den Befehl SHOW CONFIGURATION, um eine kurze Zusammenfassung der Einstellungen anzuzeigen.
dgmgrl> show configuration Configuration - analytics_cfg Protection Mode: MaxPerformance Databases: analytics - Primary database analytics_dg - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS
7.4. Einstellungen mit Befehlen validieren
dgmgrl> show database verbose 'analytics_dg' 'RecvQEntries'; dgmgrl> show database verbose 'analytics'; dgmgrl> show database verbose 'analytics_dg';
Knoten 1:
sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database; NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE --------- -------------------- -------------------- -------------------- ----------- analytics READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY
Knoten 2:
sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database; NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVE DATABASE_ROLE --------- -------------------- -------------------- -------------------- ----------- analytics READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY
Standby-DB:
sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database; NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE --------- ---------------- -------------------- -------------------- ---------------- analytics MOUNTED MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PHYSICAL STANDBY
8. Anpassungen am Broker werden an den Einstellungen „MaxConnections“, „TransportDisconnectedThreshold“ und „TransportLagThreshold“ vorgenommen [1]
Die Eigenschaft „MaxConnections“ gibt an, wie viele ARCn-Prozesse parallel verwendet werden, um Daten aus einer Redo-Log-Datei an die Remote-Site zu übertragen, wenn es eine Lücke im Prozess gibt. Wenn MaxConnections mit einem Wert größer als 1 definiert ist, verwenden Redo-Transportdienste mehrere ARCn-Prozesse, um Daten aus einer Redo-Log-Datei in Standby zu übertragen.
Die Eigenschaft „TransportDisconnectedThreshold“ kann verwendet werden, um einen Warnstatus für ein logisches oder physisches Warten oder eine sofortige Erfassung zu erstellen, wenn die letzte primäre Datenbankkommunikation den für die Eigenschaft angegebenen Wert überschreitet. Der Wert der Eigenschaft wird in Sekunden ausgedrückt.
Die Eigenschaft „TransportLagThreshold“ kann verwendet werden, um einen Warnstatus für ein logisches oder physisches Warten oder eine sofortige Erfassung zu erstellen, wenn die Datenbanktransportverzögerung den für die Eigenschaft angegebenen Wert überschreitet. Der Wert der Eigenschaft wird in Sekunden ausgedrückt.
dgmgrl> edit database 'analytics' SET PROPERTY 'MaxConnections'= 4; Property "MaxConnections" updated dgmgrl> edit database 'analytics' SET PROPERTY TransportDisconnectedThreshold='180'; Property "transportdisconnectedthreshold" updated dgmgrl> edit database 'analytics' SET PROPERTY TransportLagThreshold='900'; Property "transportlagthreshold" updated dgmgrl> edit database 'analytics_dg' SET PROPERTY 'MaxConnections'= 4; Property "MaxConnections" updated dgmgrl> edit database 'analytics_dg' SET PROPERTY TransportDisconnectedThreshold='180'; Property "transportdisconnectedthreshold" updated dgmgrl> edit database 'analytics_dg' SET PROPERTY TransportLagThreshold='900'; Property "transportlagthreshold" updated
9. Archivprotokolle der Ausschlussrichtlinie in der primären Datenbank ändern.
rman> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO STANDBY;
Aktive Dataguard-Aktivierung
10. Redo Apply im Broker stoppen
$ dgmgrl dgmgrl> connect sys dgmgrl> edit database 'analytics_dg' set state = 'apply-off'; dgmgrl> show database 'analytics_dg'
11. Standby-Instanz im Nur-Lese-Modus öffnen.
sqlplus> alter database open read only;
12. Starten Sie Redo Apply im Broker
$ dgmgrl dgmgrl> connect sys dgmgrl> edit database 'analytics_dg' set state = 'apply-on'; dgmgrl> show database 'analytics_dg'
Referenzen
[1] Data Guard-Broker. Verfügbar unter:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781