Database
 sql >> Datenbank >  >> RDS >> Database

Festlegen des physischen Standby-Modus von Active Data Guard in der RAC-One-Node-Architektur – Teil 1

Dieser Artikel ist Teil 1 einer zweiteiligen Serie, in der die Schritte zum Einrichten des physischen Standbymodus von Active Data Guard in der RAC One Node-Architektur beschrieben werden.

Einführung

Oracle Data Guard ist eine der Hauptkomponenten von Oracle Database High Availability (HA), einem integrierten Lösungspaket, das Organisationen hilft, Inaktivität, ob geplant oder nicht, zu minimieren garantieren ihren Geschäftsfluss. Active Data Guard ist eine lizenzierte Option für Oracle Database Enterprise Edition, die die grundlegende Funktionalität von Data Guard [1] erweitert, indem erweiterte Ressourcen zugelassen werden, wie z. inkrementelle Backups, unter anderem.

Oracle RAC One Node verwendet eine gemeinsam genutzte Festplattenarchitektur, um eine Lösung mit hoher Datenbankverfügbarkeit bereitzustellen, ähnlich wie Oracle Real Application Clusters (RAC). Im Gegensatz zu Oracle RAC, das mehrere Instanzen gleichzeitig ausführt, bietet Oracle RAC One Node eine Failover-Lösung in nur einer Instanz, außerdem kann es die Infrastruktur im Cluster vereinfachen, indem es einfach auf Oracle Real Application Clusters-Einstellungen mit mehreren Instanzen aktualisiert werden kann.

Umwelt

  • Primäre Datenbank verwendet Oracle RAC mit 2 Knoten
  • Der verwendete Schutzmodus ist „Maximale Leistung“ unter Verwendung des Modus „asynchroner Redo-Transport“
  • Die „Fast Start Failover“-Funktion wird nicht verwendet.
  • Data Guard Broker-Einstellungen

1. Setzen Sie db_unique_name auf Primary Database:

sqlplus> alter system set db_unique_name='analytics' scope=spfile sid='*';

2. Kopieren Sie die „Oracle-Kennwortdatei“ auf den Standby-Server:

scp orapwanalytics oracle@hostdr:/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs

3. Fügen Sie in den Bankinstanzen der Knoten 1 und 2 des primären Servers Einträge in listener.ora hinzu:

Knoten 1:

(SID_DESC =
(GLOBAL_DBNAME = analytics1_dgmgrl)
(SID_NAME = analytics1)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

Knoten 2:

 
(SID_DESC =
(GLOBAL_DBNAME = analytics2_dgmgrl)
(SID_NAME = analytics2)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

4. Fügen Sie auf dem Standby-Server einen Eintrag in listener.ora

hinzu
 
(SID_DESC =
(GLOBAL_DBNAME = analytics_DG_DGMGRL)
(SID_NAME = analytics_dg)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

Nach diesen Einstellungen muss der Befehl „listener reload“ ausgeführt werden, 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.

5. Fügen Sie Einträge in der Datei tnsnames.ora in der Primär- und Standby-Datenbank hinzu;

5.1. Kommentiere alten Eintrag

 
#analytics =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = hostdr-pscan1)(PORT = 1521))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = analytics)
# ))

5.2. Neue Einträge hinzufügen:

 
analytics =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr-pscan1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(UR=A)
))

analytics1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(SID = analytics1)
(UR=A)
))

analytics2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr02vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(SID = analytics2)
(UR=A)
))

analytics1_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_DGMGRL)
(UR=A)
))

analytics2_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr02vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_DGMGRL)
(UR=A)
))

5.3. Einträge von DG:

analytics_DG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_dg) (UR = A)
))

analytics_DG_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_dg_dgmgrl)
(UR=A)
))

6. Testen Sie neue Einträge in der Datei tnsnames.ora

 
tnsping analytics
tnsping analytics1
tnsping analytics2
tnsping analytics_DG
tnsping analytics1_DGMGRL
tnsping analytics2_DGMGRL
tnsping analytics_DG_DGMGRL

7. Aktivieren Sie „Force Logging“ und „Archivelog mode“ in der Primary Database. Hinweis:Die Instanz wurde bereits im Archivelog-Modus konfiguriert.

 
sqlplus> alter database force logging;
sqlplus> select force_logging, log_mode from v$database;

FORCE_LOGGING LOG_MODE
--------------------------------------- ------------
YES ARCHIVELOG

8. Überprüfen Sie die RedoLogs-Einstellungen in der primären Datenbank. Verwendetes Skript logfiles.sql ist verfügbar unter oracle-base.com.

9. Standby-Protokolldateien hinzufügen.

Um die empfohlene Anzahl von Standby-Redo-Logs zu ermitteln, verwenden Sie die folgende Formel [2]:

(maximale Anzahl von Protokolldateigruppen +1) * maximale Anzahl von Threads

Meine primäre Datenbank hat zwei Threads und jeder hat vier Redo-Online-Gruppen, daher sollten wir zehn Standby-Redo-Logs haben.

(maximale Anzahl von Logdateigruppen +1) * maximale Anzahl von Threads =((4 + 1) * 2 =10)

 
sqlplus> alter database add standby logfile thread 1 group 41 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 42 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 43 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 44 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 45 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 46 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 47 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 48 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 49 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 50 ('+DG_RECO_DR') size 1024M;

10. Erstellen Sie in der primären Datenbank eine pfile, die die Basis der Parameterdateien der Standby-Datenbank sein wird.

 
create pfile='/tmp/initanalytics_dg_aux.ora' from spfile;

11. Erstellen Sie in der Standby-Datenbank die Datei pfile mit den Informationen des Remote-Servers. Der einfachste Weg, diese Datei zu erstellen, besteht darin, die Parameterdatei der Primärdatenbank (Element 10) in die Standby-Datenbank zu kopieren und zu bearbeiten.

$ cd $ORACLE_HOME/dbs
$ vi initanalytics_dg_aux.ora

#*.audit_file_dest='/u01/app/oracle/admin/analytics/adump'
*.audit_file_dest='/u01/app/oracle/admin/analytics_dg/adump'
*.audit_trail='db'
#.cluster_database=true
*.cluster_database=false
*.compatible='12.1.0.2.0'
#*.control_files='+DG_DATA_DR/analytics/controlfile/current.1257.954609365','+DG_RECO_DR/analytics/controlfile/current.527.954609365'
*.control_files='+DG_DATA/analytics_dg/controlfile/current1.ctl','+DG_RECO/analytics_dg/controlfile/
current2.ctl'
*.db_block_size=8192
#*.db_create_file_dest='+DG_DATA_DR'
*.db_create_file_dest='+DG_DATA'
#*.db_create_online_log_dest_1='+DG_DATA_DR'
*.db_create_online_log_dest_1='+DG_DATA'
#*.db_create_online_log_dest_2='+DG_RECO_DR'
*.db_create_online_log_dest_2='+DG_RECO'
*.db_domain=''
*.db_name='analytics'
*.db_files=2000
#*.db_recovery_file_dest='+DG_RECO_DR'
*.db_recovery_file_dest='+DG_RECO'
*.db_recovery_file_dest_size=100G
#*.db_unique_name='analytics'
*.db_unique_name='analytics_dg'

12. Erstellen Sie Verzeichnishierarchien.

12.1. Erstellen Sie ein Verzeichnis für „Audit Dump“, in dem die Dateien und die Datenbankprüfung erstellt werden.

 
mkdir -p /u01/app/oracle/admin/analytics_dg/adump

12.2. Erstellen Sie in ASM Verzeichnisse für Steuerdatei und Parameterdateien:

 
mkdir +DG_DATA/analytics_DG/
mkdir +DG_DATA/analytics_DG/PARAMETERFILE
mkdir +DG_DATA/analytics_DG/CONTROLFILE
mkdir +DG_DATA/analytics_DG/BROKERCFG
mkdir +DG_RECO/analytics_DG
mkdir +DG_RECO/analytics_DG/BROKERCFG

13. Erstellen Sie spfile und pfile in der Standby-Datenbank

 
$ export ORACLE_SID=analytics_dg
$ sqlplus / as sysdba

13.1. Starten Sie die Standby-Datenbank mit pfile initanalytics_dg_aux.ora und konvertieren Sie die Parameterdatei (pfile) in spfile.

 
sqlplus> startup nomount pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';
sqlplus> create spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora' from pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';

13.2. pfile erstellen und in diese Datei folgenden Eintrag einfügen:

 
echo "spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora'" >> initanalytics_dg.ora

13.3. Start der Instanz mit spfile zur Wiederherstellung der späteren Datenbank.

$ export ORACLE_SID=analytics_dg
$ sqlplus sys as sysdba

sqlplus> shutdown immediate;
sqlplus> startup nomount;

14. Führen Sie die Wiederherstellung mit dem Duplikat der Datenbank durch;

 
connect target sys/xxxxxx@analytics1;
connect auxiliary sys/xxxxxx@analytics_dg_dgmgrl;
RUN {
Allocate channel pr1 device type disk;
Allocate channel pr2 device type disk;
allocate auxiliary channel stby1 type disk;
allocate auxiliary channel stby2 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE;
RELEASE CHANNEL pr1;
RELEASE CHANNEL pr2;
RELEASE CHANNEL stby1;
RELEASE CHANNEL stby2;
}

Im nächsten Beitrag werden wir diese Saga fortsetzen!

Referenzen

[1] Best Practices für Oracle Active Data Guard. Verfügbar unter:https://www.oracle.com/database/technologies/active-data-guard-12c-best-practice.html

[2] Best Practices für hohe Verfügbarkeit von Oracle-Datenbanken 11g Release 2 (11.2). Verfügbar unter:https://docs.oracle.com/cd/E24693_01/server.11203/e10803/config_dg.htm

[3] Data Guard-Broker. Verfügbar unter:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781