Preparazione del database principale di Data Guard
Data Guard richiede un database principale e almeno un database in standby per funzionare. Prima di configurare Data Guard su Bare Metal Solution, crea il database principale.
In questa guida vengono utilizzati i seguenti esempi:
Nome univoco database | Nomi host dei server | Nomi istanze RAC | Ruolo |
---|---|---|---|
DBDG_SITE1 | site1db1, site1db2 | DBDG_SITE11, DBDG_SITE12 | Principale |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | In attesa |
I server Bare Metal Solution che eseguono Oracle in questa guida sono configurati con le seguenti variabili di ambiente:
Nome variabile di ambiente | Valore |
---|---|
ORACLE_BASE | /apps/oracle/oracle_base |
ORACLE_HOME | /apps/oracle/19.0.0/db_home1 |
A seconda della configurazione, potrebbe essere necessario modificare i percorsi delle variabile di ambiente.
Configura il database principale
Accedi al primo server Bare Metal Solution che ospita il database principale.
Nel file
/etc/oratab
, aggiungi una voce in modo che il comandooraenv
possa impostare le variabili di ambiente per il database principale. Modifica il nome dell'istanza in modo che corrisponda all'istanza in esecuzione su ciascun nodo e specifica il percorso completo della home page del database Oracle:DBDG_SITE11:ORACLE_HOME:N
Imposta la variabile di ambiente
ORACLE_SID
in modo da poterti connettere al database principale:source oraenv <<< "DBDG_SITE11"
Dovresti ricevere la risposta
The Oracle base has been set to /apps/oracle/oracle_base
.
Configura il logging del database e abilita il database di flashback
Avvia SQL*Plus, quindi abilita
force logging
in modo che vengano registratinologging
spazi tabella aggiunti al database:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Verifica che
archivelog mode
eflashback database
siano accesi:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Se
archivelog mode
eflashback database
sono disattivati, attivali con i seguenti comandi SQL:Arresta il database in cluster per apportare le modifiche richieste:
srvctl stop database -d
Esegui i comandi SQL richiesti per attivare
archivelog mode
eflashback database
:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Avvia di nuovo il database in cluster:
srvctl start database -d DBDG_SITE1
Prepara il database per Data Guard
Accedi al primo server Bare Metal Solution che ospita il database principale e imposta la variabile di ambiente
ORACLE_SID
in modo da poterti connettere al database principale:source oraenv <<< "DBDG_SITE11"
Dovresti ricevere la risposta
The Oracle base has been set to /apps/oracle/oracle_base
.Avvia SQL*Plus, quindi modifica i parametri di inizializzazione del database richiesti per la configurazione e i servizi di Data Guard:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Verifica l'esistenza di log di ripristino in standby nel database. Ogni thread deve avere un gruppo di log di ripetizione in standby in più rispetto al numero di gruppi di log di ripetizione online.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
L'esempio seguente ha quattro log di ripetizione online per thread e non sono stati creati gruppi di log di ripetizione in standby. Poiché esistono quattro gruppi di log di ripetizione online, è necessario creare cinque gruppi di log di ripetizione in standby per ogni thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Se esistono un numero sufficiente di gruppi di log di ripristino in standby, salta questo passaggio. I gruppi di log di ripetizione in standby devono avere le stesse dimensioni di ogni gruppo di log di ripetizione online. Crea il numero necessario di gruppi di log di ripristino in standby con il seguente codice PL/SQL:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
Il seguente output di esempio indica di creare cinque gruppi di log di ripetizione in standby per ciascuno dei due thread:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Verifica che i log di ripristino in standby siano impostati correttamente per la tua configurazione:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
Il seguente output ha quattro gruppi di log di ripristino online per thread e cinque gruppi di log di ripristino in standby per thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Esci da SQL*Plus:
EXIT;
Copia i file dei parametri del database e delle password nei server in standby
Crea un file dei parametri del database e copialo nel server standby:
Crea una cartella per il file dei parametri del database in standby (
pfile
):mkdir /home/oracle/backup
Avvia SQL*Plus, quindi crea il database in standby
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Esci da SQL*Plus, quindi copia
pfile
sul primo server Bare Metal Solution nella posizione in standby:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Assicurati che la password di accesso remoto SYS sia salvata in modo sicuro. Se non conosci la password, reimpostala.
Copia il file delle password nel cluster in standby:
Recupera la posizione del file delle password utilizzando il comando
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
Il seguente output mostra la posizione di un archivio di file delle password in ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Crea una copia temporanea del file delle password nel file system locale utilizzando il comando
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Copia il file delle password nel primo server Bare Metal Solution nella località di standby, quindi elimina la copia temporanea dal server Bare Metal Solution nella località principale:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Configura la connettività del database
Modifica il file $ORACLE_HOME/network/admin/tsnames.ora
su ogni server Bare Metal Solution
nella posizione del database principale per aggiornare la configurazione del servizio di rete.
Il file contiene tre voci, una per ogni database e una voce temporanea utilizzata durante la duplicazione del database che verrà eliminata in seguito:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
Il database principale è ora pronto per essere utilizzato in una configurazione di Data Guard.
Passaggi successivi
Quindi, crea il database in standby di Data Guard.