Configura Oracle Data Guard

Questo playbook fornisce script per la configurazione dell'ambiente Oracle Data Guard. Questi script impostano un database in standby per un database primario esistente utilizzando la funzione restore from service e il broker Oracle Data Guard.

dg-setup-scripts utilizza un file DG_properties.ini per definire gli ambienti primari e in standby.

Gli script creano 2 file tar, una tar del file della password primaria e una tar del wallet Transparent Data Encryption (TDE) primario, che verranno copiati nel nodo del database in standby.

Gli script non modificano il sistema operativo, ad esempio net.core.rmem_max e net.core.wmem_max, o l'unità di trasmissione massima (MTU). È consigliabile regolare net.core.rmem_max e net.core.wmem_max per ottimizzare il trasporto di redo.

I task riportati di seguito descrivono come eseguire gli script per configurare Oracle Data Guard per il database.

Definire le variabili di ambiente per Oracle Data Guard

Utilizzare un file DG_properties.ini per preparare il sistema primario per una configurazione di Oracle Data Guard. Gli script utilizzano i parametri in DG_properties.ini per configurare i sistemi primari e in standby. Il file contiene tutti i parametri di input richiesti dagli script. Guarda alcuni esempi di file DG_properties.ini in Esplora altri argomenti.

Un file DG_properties.ini di esempio è disponibile nel file zip dg-setup-scripts. È possibile personalizzare il file con i valori dell'ambiente in uso.

  1. Scaricare il file zip dg-setup-scripts ed estrarre il contenuto.
  2. Modificare il file della proprietà di esempio DG_properties.ini in un sistema operativo Linux per personalizzare il file con i valori specifici dell'ambiente.
    La modifica in Linux evita problemi correlati alla codifica, ad esempio il recupero di Windows CRLF alla fine delle righe.
  3. Modificare la sezione Proprietà generali per definire i parametri di esportazione, se il sistema è Oracle Real Application Clusters (Oracle RAC) e se il password file si trova in Oracle Automatic Storage Management (Oracle ASM).
    ########################################################################################################
    # GENERAL PROPERTIES
    ########################################################################################################
    export ORACLE_OSUSER=oracle
    export ORACLE_OSGROUP=oinstall
    export GRID_OSUSER=grid
    export GRID_HOME=/u01/app/19.0.0.0/grid
    export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1
    export ORACLE_BASE=/u01/app/oracle
    
    export DB_NAME=DBTEST4	    # The database name (the value of db parameter db_name)
    export SYS_USERNAME=sys
    
    export RAC=NO	             # Set to YES (if DB is a RAC) or to NO (if single instance DB)
    export PASSWORD_FILE_IN_ASM=YES  # Set to YES when the password file is placed in ASM (in case of RAC, it will always be placed in ASM).
    export ADDITIONAL_STANDBY=NO     # Set to YES only if the primary db has another standby database already configured, and you are using the scripts to add a second standby.
  4. Modificare la sezione Proprietà ambiente primario e i parametri per definire l'ambiente di sistema primario.
    #########################################################################################################
    # PRIMARY ENV PROPERTIES
    #########################################################################################################
    export A_PORT=1521					# The primary listener's port (scan's listener port if RAC)
    export A_SERVICE=ORCL_PRI.primarydomainexample.com	# The default CDB service name in primary (format is <db_unique_name>.<primary_domain>) 
    export A_DBNM=ORCL_PRI					# The DB UNIQUE NAME of primary DB
    
    # For single instance (will be ignored if RAC=YES)
    	export A_DB_IP=10.10.10.10			# Provide the primary listener's IP. This needs to be reachable from the standby DB.
    
    # For RAC (will be ignored if RAC=NO)
    	# Specify the PRIMARY RAC's scan IPs and scan address name
    	export A_SCAN_IP1=10.10.10.1
    	export A_SCAN_IP2=10.10.10.2
    	export A_SCAN_IP3=10.10.10.3
    	export A_SCAN_ADDRESS=primary-scan.primarydomainexample.com
    	# Provide the ORACLE_SID of the primary RAC instances
    	export A_SID1=ORCL1
    	export A_SID2=ORCL2
    
    export A_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in primary DB
    export A_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in primary DB
    export A_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in primary DB
    
    # Other properties required by primary setup script
    export TDE_LOC=/opt/oracle/dcs/commonstore/wallets/tde/${A_DBNM}	# The the TDE wallet folder in primary (where the .p12 file is located). Leave it EMPTY if TDE is not used.
    export CREATE_PASSWORD_FILE=YES                                         # If password file already exists in primary and you do not want to override it, set this to NO.
    export OUTPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ         		# Absolute file name for the output tar file that will be generated in primary, containing the primary TDE wallet.
    export OUTPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ        		# Absolute file name for the output tar file that will be generated in primary, containing the primary password file.
    
  5. Modificare la sezione Proprietà ambiente in standby e i parametri per definire l'ambiente del sistema in standby.
    ########################################################################################################
    # STANDBY ENV PROPERTIES
    ########################################################################################################
    export B_PORT=1521							# The standby listener's port (scan's listener port if RAC)
    export B_SERVICE=ORCL_STBY.standbydomainexample.com			# The default CDB service name in standby (format is <db_unique_name>.<secondary_domain>)
    export B_DBNM=ORCL_STBY							# The DB UNIQUE NAME of standby DB
    
    # For single instance (will be ignored if RAC=YES)
    	export B_DB_IP=10.20.20.20	# Provide the primary listener's IP. This needs to be reachable from the standby DB
    
    # For RAC (will be ignored if RAC=NO) 
    	# Specify STANDBY RAC's scan IPs and scan address name
    	export B_SCAN_IP1=10.20.20.1
    	export B_SCAN_IP2=10.20.20.2
    	export B_SCAN_IP3=10.20.20.3
    	export B_SCAN_ADDRESS=standby-scan.standbydomainexample.com
    	# Standby node's VIPs (provide the IPS, not the names)
    	export B_VIP1=10.20.20.10
    	export B_VIP2=10.20.20.20
    	# Provide the ORACLE_SID of the standby RAC instances
    	export B_SID1=ORCL1
    	export B_SID2=ORCL2
    	# (normally only needed in Exadata) Provide interconnect IPs if they must be specified in the parameter cluster_interconnects. Leave them empty if cluster_interconnects is empty.
            export B_INTERCONNECT_IP1=
            export B_INTERCONNECT_IP2=
    
    
    export B_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in standby DB
    export B_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in standby DB
    export B_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in standby DB
    
    # Other properties required by the standby setup script
    export INPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ		   # Absolute file name for the input tar file that contains the primary TDE wallet.
    export INPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ	      # Absolute file name for the input tar file that contains the primary password file.
    export B_TDE_LOC=/opt/oracle/dcs/commonstore/wallets/$B_DBNM/tde   # Absolute  path where the wallet files (.p12) will be created in standby hosts. 
    # Verify which is the value used by your system, it may differ. Leave it empty if TDE is not used.

Carica gli script

Caricare gli script negli host di database primario e secondario come indicato di seguito.

  1. Caricare gli script e i file seguenti nell'host o negli host del database primary:
    • 1_prepare_primary_maa_parameters.sh: carica nell'host database 1 (per istanza singola o Oracle RAC).
    • 2_dataguardit_primary.sh: carica in tutti i nodi di database.
    • create_pw_tar_from_asm_root.sh: carica in tutti i nodi di database.
    • DG_properties.ini: carica in tutti i nodi di database.
  2. Per l'host o gli host del database primario, concedere le autorizzazioni di esecuzione per gli script all'utente del sistema operativo oracle su tutti i nodi.
  3. Caricare i file seguenti nell'host o negli host del database nuovo secondario:
    • 3_dataguardit_standby_root.sh: carica in tutti i nodi di database.
    • DG_properties.ini: carica in tutti i nodi di database.
  4. Per l'host o gli host del database secondario, concedere l'autorizzazione di esecuzione per gli script all'utente del sistema operativo root.

Preparare i parametri di Oracle Data Guard per il database primario

Impostare i parametri MAA (Oracle Maximum Availability Architecture) consigliati per Oracle Data Guard nel database primario prima di configurare Oracle Data Guard. Lo script 1_prepare_primary_maa_parameters.sh configura i parametri MAA consigliati per Oracle Data Guard e crea i file di log in standby.

MAA offre migliori prassi per l'architettura, la configurazione e il ciclo di vita per i database Oracle, promuovendo livelli di servizio ad alta disponibilità per database residenti nelle configurazioni on-premise, cloud o ibride.

Lo script imposta i seguenti valori di parametro consigliati MAA:
  • esportazione DB_FLASHBACK_RETENTION_TARGET=1440
  • esportazione DB_BLOCK_CHECKSUM=FULL
  • esportazione DB_BLOCK_CHECKING=FULL
  • esportazione DB_LOST_WRITE_PROTECT=TYPICAL
  • esportazione LOG_BUFFER=256M
  • esportazione STANDBY_FILE_MANAGEMENT=AUTO

Nota:

Per le procedure ottimali MAA, il parametro DB_BLOCK_CHECKING deve essere impostato su MEDIUM o FULL nel database primario. Lo script lo imposta su FULL. Se il sovraccarico delle prestazioni per l'abilitazione di DB_BLOCK_CHECKING a MEDIUM o FULL non è accettabile sul database primario, impostare DB_BLOCK_CHECKING su MEDIUM o FULL solo per il database in standby.

Eseguire lo script per impostare i parametri prima di configurare Oracle Data Guard. Eseguire questo script una sola volta, se il database primario è Oracle Real Application Clusters (Oracle RAC) o un database a istanza singola.

  1. Eseguire il login al nodo del database primario come utente oracle.
  2. Eseguire lo script 1_prepare_primary_maa_parameters.sh nell'host del database primario per il database a istanza singola o Node1 per Oracle Real Application Clusters (Oracle RAC).
    Lo script richiederà la password dell'utente sys.

Dopo l'impostazione dei parametri MAA, lo script crea i log in standby nella directory ONLINE_LOG_DEST1. I log in standby hanno la stessa dimensione dei log in linea (REDOLOG_SIZE). Sono presenti più gruppi dei log in linea, ma lo stesso numero di thread.

Preparazione del sistema primario per Oracle Data Guard

Preparare gli host primari per una configurazione di Oracle Data Guard e creare i file di output necessari in un secondo momento negli host del database in standby.

Lo script 2_dataguardit_primary.sh crea i seguenti file di output:
  • File TAR contenente il password file
  • File TAR contenente il wallet TDE (solo se viene utilizzata la cifratura TDE).
  1. Eseguire il login al nodo del database primario come utente oracle.
  2. Verificare che il file DG_properties.ini si trovi nella stessa cartella dello script 2_dataguardit_primary.sh e che sia stato personalizzato correttamente con i valori dell'ambiente.
  3. Eseguire lo script 2_dataguardit_primary.sh nel database primario Node1.

    Lo script richiederà la password dell'utente sys.

    Quando il password file viene memorizzato in ASM, lo script chiederà all'utente di eseguire lo script create_pw_tar_from_asm_root.sh.

    Lo script crea un file tar per il password file e un file tar per il wallet Transparent Data Encryption (TDE) (se si utilizza TDE).
  4. Se il database primario è un database Oracle Real Application Clusters (Oracle RAC), eseguire lo script in Node2.
  5. (Consigliato) Impostare i parametri del sistema operativo per net.core.rmem_max, net.core.wmem_max per ottimizzare redo transport.
    Se Oracle RAC, eseguire l'ottimizzazione in entrambi i nodi.
    Vedere Esplora altro per un collegamento ai consigli MAA.
  6. (Consigliato) Impostare l'unità di trasmissione massima (MTU) per ottimizzare redo transport.
    Se Oracle RAC, eseguire l'ottimizzazione in entrambi i nodi.
    Vedere Esplora altro per un collegamento ai consigli MAA.

Copia i file di output

Copiare i file tar di output generati dal nodo del database primario e caricarli negli host del database secondario. Se si dispone di un file Oracle RAC, i file tar vengono creati in Node1. Caricare i file tar in entrambi i nodi negli host secondari.

Assicurarsi di posizionare i file tar nelle posizioni indicate dalle proprietà INPUT_PASWORD_TAR e INPUT_WALLET_TAR (quando si utilizza TDE) definite nel file DG_properties.ini.

Preparare il sistema secondario per Oracle Data Guard

Preparare il nuovo host secondario (in standby), creare il database in standby e configurare il broker Oracle Data Guard nel nodo del database secondario.

Lo script 3_dataguardit_standby_root.sh prepara i nuovi host di database in standby eliminando il database esistente e configurando gli artifact necessari (alias TNS, cifratura NET, file delle password e wallet Transparent Data Encryption (TDE)). Quindi crea e configura il database in standby utilizzando la funzione Oracle Recovery Manager (RMAN) restore from service e configura il broker Oracle Data Guard.

Lo script 3_dataguardit_standby_root.sh utilizza le variabili di ambiente definite nel file DG_properties.ini. Se il database secondario è un database Oracle RAC, eseguire lo script in entrambi i nodi. La maggior parte delle azioni viene eseguita quando lo script viene eseguito in Node1 e viene eseguito un subset dei passi quando viene eseguito in Node2. Non eseguire lo script in Node2 prima del completamento dello script in Node1.

  1. Eseguire il login al nodo di database secondario come utente root.
    Per Oracle RAC, eseguire il login a Node1.
  2. Individuare lo script 3_dataguardit_standby_root.sh nella directory in cui è stato caricato lo script.
  3. Verificare che il file DG_properties.ini si trovi nella stessa cartella dello script 3_dataguardit_standby_root.sh e che la personalizzazione nello script sia corretta.
  4. Eseguire lo script 3_dataguardit_standby_root.sh.
    Lo script richiederà la password dell'utente sys.
  5. Se si dispone di un Oracle RAC, eseguire il login a Node2 come root ed eseguire lo script 3_dataguardit_standby_root.sh nel nodo 2 una volta completato lo script in Node1.
  6. (Consigliato) Impostare i parametri del sistema operativo per net.core.rmem_max, net.core.wmem_max per ottimizzare redo transport.
    Se Oracle RAC, eseguire l'ottimizzazione in entrambi i nodi.
    Consulta altre informazioni su un collegamento ai suggerimenti dell'architettura MAA (Oracle Maximum Availability Architecture).
  7. (Consigliato) Impostare l'unità di trasmissione massima (MTU) per ottimizzare redo transport.
    Se Oracle RAC, eseguire l'ottimizzazione in entrambi i nodi.
    Vedere Esplora altro per un collegamento ai consigli MAA.

Aggiungi una voce TNS per un nuovo database in standby

Se è stato aggiunto un nuovo database in standby a un'istanza di Oracle Data Guard esistente (ADDITIONAL_STANDBY=YES), aggiungere la voce TNS che punta al database in standby esistente in precedenza, al nuovo file tnsnames.ora del database in standby e viceversa. Assicurarsi che i database in standby siano in grado di connettersi tra loro alla porta del listener.