Configurar Oracle Data Guard

Este playbook fornece scripts para ajudá-lo a configurar seu ambiente do Oracle Data Guard. Esses scripts configuram um banco de dados stand-by para um banco de dados principal existente usando o recurso restore from service e o Oracle Data Guard Broker.

O dg-setup-scripts usa um arquivo DG_properties.ini para definir os ambientes principal e stand-by.

Os scripts criam 2 arquivos tar, um tar do arquivo de senha principal e um tar da wallet Transparent Data Encryption (TDE) principal, que você copiará para o nó do banco de dados standby.

Os scripts não fazem alterações no sistema operacional, como net.core.rmem_max e net.core.wmem_max, ou unidade de transmissão máxima (MTU). É uma prática recomendada ajustar net.core.rmem_max e net.core.wmem_max para um transporte de redo ideal.

As tarefas a seguir descrevem como executar os scripts para configurar o Oracle Data Guard para seu banco de dados.

Definir as Variáveis de Ambiente do Oracle Data Guard

Use um arquivo DG_properties.ini para preparar o sistema principal para uma configuração do Oracle Data Guard. Os scripts usam os parâmetros em DG_properties.ini para configurar os sistemas principal e stand-by. O arquivo contém todos os parâmetros de entrada exigidos pelos scripts. Veja exemplos de arquivos DG_properties.ini no Explore mais.

Um arquivo DG_properties.ini de amostra está disponível no arquivo zip dg-setup-scripts. Você pode personalizar o arquivo com os valores do seu ambiente.

  1. Faça download do arquivo zip dg-setup-scripts e extraia o conteúdo.
  2. Edite o arquivo de propriedade DG_properties.ini de amostra em um sistema operacional Linux para personalizar o arquivo com os valores específicos do seu ambiente.
    A edição no Linux evita problemas relacionados à codificação, como obter o CRLF do Windows no final das linhas.
  3. Edite a seção Propriedades Gerais para definir os parâmetros de exportação, se o sistema for um Oracle Real Application Clusters (Oracle RAC) e se o arquivo de senha estiver no 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. Edite a seção Propriedades do Ambiente Principal e altere os parâmetros para definir o ambiente do sistema principal.
    #########################################################################################################
    # 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. Edite a seção Propriedades do Ambiente Standby e altere os parâmetros para definir seu ambiente do sistema stand-by.
    ########################################################################################################
    # 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.

Fazer Upload dos Scripts

Faça upload dos scripts para os hosts do banco de dados principal e secundário da seguinte maneira:

  1. Faça upload dos seguintes scripts e arquivos para os hosts do banco de dados principal:
    • 1_prepare_primary_maa_parameters.sh: Faça upload para o host de banco de dados 1 (para uma única instância ou para o Oracle RAC).
    • 2_dataguardit_primary.sh: Faça upload para todos os nós do banco de dados.
    • create_pw_tar_from_asm_root.sh: Faça upload para todos os nós do banco de dados.
    • DG_properties.ini: Faça upload para todos os nós do banco de dados.
  2. Para o host ou hosts do banco de dados principal, conceda permissões de execução nos scripts ao usuário do SO oracle em todos OS nós.
  3. Faça upload dos seguintes arquivos para o(s) novo(s) host(s) de banco de dados secundário:
    • 3_dataguardit_standby_root.sh: Faça upload para todos os nós do banco de dados.
    • DG_properties.ini: Faça upload para todos os nós do banco de dados.
  4. Para o host ou hosts do banco de dados secundário, conceda permissões de execução nos scripts ao usuário do SO root.

Preparar os Parâmetros do Oracle Data Guard para o Banco de Dados Principal

Defina os parâmetros recomendados do Oracle Data Guard no banco de dados principal do Oracle Maximum Availability Architecture (MAA) antes de configurar o Oracle Data Guard. O script 1_prepare_primary_maa_parameters.sh configura os parâmetros MAA recomendados para o Oracle Data Guard e cria os arquivos de log stand-by.

O MAA fornece as melhores práticas de arquitetura, configuração e ciclo de vida para Oracle Databases, permitindo níveis de serviço de alta disponibilidade para bancos de dados que residem em configurações locais, na nuvem ou híbridas.

O script define os seguintes valores de parâmetro recomendados MAA:
  • exportação DB_FLASHBACK_RETENTION_TARGET=1440
  • exportar DB_BLOCK_CHECKSUM=FULL
  • exportar DB_BLOCK_CHECKING=FULL
  • exportar DB_LOST_WRITE_PROTECT=TYPICAL
  • exportação LOG_BUFFER=256M
  • exportar STANDBY_FILE_MANAGEMENT=AUTO

Observação:

De acordo com as melhores práticas do MAA, o parâmetro DB_BLOCK_CHECKING deve ser definido como MEDIUM ou FULL no banco de dados principal. O script o define como FULL. Se o overhead de desempenho de ativar DB_BLOCK_CHECKING para MEDIUM ou FULL for inaceitável em seu banco de dados principal, defina DB_BLOCK_CHECKING como MEDIUM ou FULL apenas para seu banco de dados stand-by.

Execute o script para definir os parâmetros antes de configurar o Oracle Data Guard. Execute esse script apenas uma vez, se o principal for um Oracle Real Application Clusters (Oracle RAC) ou um banco de dados de instância única.

  1. Faça log-in no nó do banco de dados principal como um usuário oracle.
  2. Execute o script 1_prepare_primary_maa_parameters.sh no host de banco de dados principal para banco de dados de instância única ou Node1 para Oracle Real Application Clusters (Oracle RAC).
    O script solicitará a senha do usuário sys.

Depois que os parâmetros MAA forem definidos, o script criará logs standby no diretório ONLINE_LOG_DEST1. Os logs stand-by têm o mesmo tamanho dos logs on-line (REDOLOG_SIZE). Eles têm mais um grupo que os logs on-line, mas o mesmo número de threads.

Preparar o Sistema Principal para o Oracle Data Guard

Prepare os hosts principais para uma configuração do Oracle Data Guard e crie arquivos de saída que são necessários posteriormente nos hosts do banco de dados stand-by.

O script 2_dataguardit_primary.sh cria os seguintes arquivos de saída:
  • Arquivo TAR contendo o arquivo de senha
  • Arquivo TAR contendo a wallet de TDE (somente se a criptografia TDE for usada).
  1. Faça log-in no nó do banco de dados principal como um usuário oracle.
  2. Verifique se o arquivo DG_properties.ini está na mesma pasta que o script 2_dataguardit_primary.sh e se foi personalizado corretamente com os valores de ambiente.
  3. Execute o script 2_dataguardit_primary.sh no BD principal Node1.

    O script solicitará a senha do usuário sys.

    Quando o arquivo de senha for armazenado no ASM, o script solicitará que o usuário execute o script create_pw_tar_from_asm_root.sh.

    O script cria um arquivo tar para o arquivo de senha e um arquivo tar para a wallet de Transparent Data Encryption (TDE) (se TDE for usado).
  4. Se o principal for um banco de dados do Oracle Real Application Clusters (Oracle RAC), execute o script em Node2.
  5. (Recomendado) Defina os parâmetros do sistema operacional para net.core.rmem_max, net.core.wmem_max para otimizar redo transport.
    Se o Oracle RAC, otimize em ambos os nós.
    Consulte Explorar Mais para obter um link para as recomendações do MAA.
  6. (Recomendado) Defina a MTU (Unidade de transmissão Máxima) para otimizar redo transport.
    Se o Oracle RAC, otimize em ambos os nós.
    Consulte Explorar Mais para obter um link para as recomendações do MAA.

Copiar os Arquivos de Saída

Copie os arquivos tar de saída gerados do nó do banco de dados principal e faça upload deles para os hosts do banco de dados secundário. Se você tiver um Oracle RAC, os arquivos tar serão criados em Node1. Faça upload dos arquivos tar para os dois nós nos hosts secundários.

Certifique-se de colocar os arquivos tar nos locais indicados pelas propriedades INPUT_PASWORD_TAR e INPUT_WALLET_TAR (quando TDE for usado) definidos no arquivo DG_properties.ini.

Preparar o Sistema Secundário para o Oracle Data Guard

Prepare o novo host secundário (standby), crie o banco de dados stand-by e configure o broker do Oracle Data Guard no nó do banco de dados secundário.

O script 3_dataguardit_standby_root.sh prepara os novos hosts do banco de dados standby excluindo o banco de dados existente e configurando os artefatos necessários (alias TNS, criptografia NET, arquivo de senha e wallet de Transparent Data Encryption (TDE)). Em seguida, ele cria e configura o banco de dados standby usando o recurso restore from service do Oracle Recovery Manager (RMAN) e configura o broker do Oracle Data Guard.

O script 3_dataguardit_standby_root.sh usa as variáveis de ambiente definidas no arquivo DG_properties.ini. Se o secundário for um banco de dados Oracle RAC, execute o script em ambos os nós. A maioria das ações é executada quando o script é executado em Node1 e um subconjunto das etapas é executado quando ele é executado em Node2. Não execute o script em Node2 antes que o script seja concluído em Node1.

  1. Faça log-in no nó do banco de dados secundário como o usuário root.
    Para o Oracle RAC, faça log-in em Node1.
  2. Localize o script 3_dataguardit_standby_root.sh no diretório em que você fez upload do script.
  3. Verifique se o arquivo DG_properties.ini está na mesma pasta que o script 3_dataguardit_standby_root.sh e se a personalização no script está correta.
  4. Execute o script 3_dataguardit_standby_root.sh.
    O script solicitará a senha do usuário sys.
  5. Se você tiver um Oracle RAC, faça log-in em Node2 como root e execute o script 3_dataguardit_standby_root.sh no Nó 2 depois que o script for concluído em Node1.
  6. (Recomendado) Defina os parâmetros do sistema operacional para net.core.rmem_max, net.core.wmem_max para otimizar redo transport.
    Se o Oracle RAC, otimize em ambos os nós.
    Consulte Explorar Mais para obter um link para as recomendações do Oracle Maximum Availability Architecture (MAA).
  7. (Recomendado) Defina a MTU (Unidade de transmissão Máxima) para otimizar redo transport.
    Se o Oracle RAC, otimize em ambos os nós.
    Consulte Explorar Mais para obter um link para as recomendações do MAA.

Adicionar uma Entrada TNS para um Novo Banco de Dados Standby

Se você tiver adicionado um novo banco de dados standby a uma instância existente do Oracle Data Guard (ADDITIONAL_STANDBY=YES), adicione a entrada TNS que aponta para o banco de dados standby existente anteriormente, no novo arquivo tnsnames.ora do banco de dados standby e vice-versa. Certifique-se de que os bancos de dados standby possam se conectar à porta do listener.