Skip to main content
NetApp database solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Configure o Data Guard Broker e o Fast-Start Failover para o Oracle Database 26ai no Google Cloud NetApp Volumes

Colaboradores netapp-jsnyder

Configure o Oracle Data Guard Broker e o Fast-Start Failover com um Observer dedicado para habilitar transições automáticas de função para o Oracle Database 26ai no Google Cloud NetApp Volumes.

Específico para cada camada: Este procedimento se aplica apenas à camada Prod HA (Data Guard + FSFO).

Este procedimento abrange a ativação do broker em ambos os bancos de dados, a criação da configuração do Data Guard, a ativação do FSFO com o modo de proteção MaxAvailability, a instalação do Oracle Instant Client no host do Observer, a inicialização do Observer como um serviço systemd com credenciais baseadas em wallet e o teste de switchover e failover. Após ENABLE CONFIGURATION, gerencie o transporte e as funções por meio do DGMGRL (não por SQL LOG_ARCHIVE_DEST_* ad-hoc).

Etapa 1: habilitar o Data Guard Broker

Habilite o Data Guard Broker em ambos os hosts do banco de dados e crie a configuração do broker que vincula os bancos de dados primário e standby sob gerenciamento unificado.

  1. Configurar dg_broker_start=TRUE nos hosts de banco de dados primário e de espera:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus / as sysdba <<SQL
    ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH;
    EXIT
    SQL'
  2. No servidor primário, conecte-se ao DGMGRL com autenticação do sistema operacional e crie a configuração do broker:

    Observação

    Somente no host do Observer, use dgmgrl /@orcl após a carteira de login automático existir. Não insira senhas na dgmgrl linha de comando.

    sudo -u oracle bash -c '
    export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:$PATH
    dgmgrl /
    '
    DGMGRL> CREATE CONFIGURATION 'orcl_dg' AS
            PRIMARY DATABASE IS 'orcl' CONNECT IDENTIFIER IS orcl;
    DGMGRL> ADD DATABASE 'orcls' AS CONNECT IDENTIFIER IS orcls;
    DGMGRL> ENABLE CONFIGURATION;
    DGMGRL> SHOW CONFIGURATION;
    -- Expect: Configuration Status: SUCCESS, both members SUCCESS.
  3. Valide a configuração — corrija qualquer WARNING ou valor não nulo ERROR antes de Etapa 3: configure as propriedades do FSFO e habilite:

    DGMGRL> VALIDATE DATABASE 'orcls';
    DGMGRL> SHOW CONFIGURATION VERBOSE;

Etapa 2: Confirme o flashback para FSFO

Confirme se o flashback database está habilitado em ambos os hosts. O flashback é necessário para o auto-reinstate do FSFO, que permite que o antigo primário se junte automaticamente à configuração como standby após um failover.

  1. Confirme `flashback_on`está `YES`em ambos os hosts do banco de dados:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus -s / as sysdba <<<"SELECT flashback_on FROM v\$database;"
    '
    # Expected on both hosts: YES
  2. Somente no primário, se a retenção de flashback ainda não estiver configurada:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcl
    sqlplus / as sysdba <<SQL
    ALTER SYSTEM SET db_flashback_retention_target=1440 SCOPE=BOTH;
    EXIT
    SQL'

Etapa 3: configurar e ativar o FSFO

Defina o transporte de redo SYNC, configure o modo de proteção MaxAvailability, defina os destinos FSFO em cada banco de dados e habilite o Fast-Start Failover.

  1. Defina o modo de transporte de refazer para SYNC em ambos os bancos de dados e aumente o modo de proteção para MaxAvailability:

    DGMGRL> EDIT DATABASE 'orcl'  SET PROPERTY LogXptMode='SYNC';
    DGMGRL> EDIT DATABASE 'orcls' SET PROPERTY LogXptMode='SYNC';
    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
  2. Configure os destinos FSFO para que cada banco de dados nomeie o outro como seu destino de failover e, em seguida, configure o limite e o comportamento de reinstalação automática:

    -- Each side names the other
    DGMGRL> EDIT DATABASE 'orcl'  SET PROPERTY FastStartFailoverTarget = 'orcls';
    DGMGRL> EDIT DATABASE 'orcls' SET PROPERTY FastStartFailoverTarget = 'orcl';
    
    -- 30 s is the default; lower for faster RTO but more sensitive to network blips
    DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 30;
    DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverAutoReinstate = TRUE;
  3. Ative o Fast-Start Failover e confirme a configuração:

    DGMGRL> ENABLE FAST_START FAILOVER;
    DGMGRL> SHOW FAST_START FAILOVER;
    -- Expected: Threshold 30 seconds, Target orcls, Observer not yet registered.

Passo 4: Instalar o Instant Client no Observer

Instale o Oracle Instant Client na VM dedicada do Observer (oradg-obs, crie um usuário dedicado do sistema operacional oracle e configure o ambiente Oracle Net para que o Observer possa se conectar a ambos os membros do banco de dados na porta TCP/1521.

  1. Instale os pacotes do Oracle Instant Client no host Observer (oradg-obs:

    # Use -el8 / -el9 if the Observer is on an older OL/RHEL release
    sudo dnf install -y oracle-instantclient-release-el10
    sudo dnf install -y oracle-instantclient-basic \
                        oracle-instantclient-sqlplus \
                        oracle-instantclient-tools
  2. Crie um usuário dedicado oracle do sistema operacional que será o proprietário da wallet e da unidade systemd:

    sudo useradd -u 54321 -m oracle
    sudo passwd -l oracle
  3. Configure o ambiente Oracle Net e crie tnsnames.ora com entradas para ambos os hosts de banco de dados:

    sudo mkdir -p /etc/oracle/network/admin
    sudo chown -R oracle:oracle /etc/oracle
    
    sudo -u oracle tee /home/oracle/.bash_profile >/dev/null <<'EOF'
    export ORACLE_HOME=/usr/lib/oracle/26/client64
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export PATH=$ORACLE_HOME/bin:$PATH
    export TNS_ADMIN=/etc/oracle/network/admin
    EOF
    
    # tnsnames.ora — must reach both DB hosts on TCP/1521
    sudo tee /etc/oracle/network/admin/tnsnames.ora >/dev/null <<'EOF'
    orcl =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb1)(PORT = 1521))
                    (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
    orcls =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb2)(PORT = 1521))
                    (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcls)))
    EOF
    sudo chown oracle:oracle /etc/oracle/network/admin/tnsnames.ora

Etapa 5: execute o Observer como um serviço systemd

Crie uma carteira de login automático com credenciais para ambos os membros do banco de dados, depois configure e inicie o Observer como um serviço systemd para que ele sobreviva a reinicializações e se reconecte automaticamente à configuração.

Armazene as credenciais de uma conta administrativa dedicada do Data Guard (por exemplo, SYSDG) na carteira em vez de SYS. As credenciais nunca devem aparecer em uma dgmgrl linha de comando, onde ficam visíveis para ps e journalctl; sempre conecte usando /@<tns_alias> no Observer.

  1. Crie a carteira criptografada e insira as credenciais para ambos os membros do banco de dados:

    sudo -iu oracle bash <<'BASH'
    mkdir -p $TNS_ADMIN/wallet
    mkstore -wrl $TNS_ADMIN/wallet -create     # prompts for a wallet password — store in your secrets manager
    mkstore -wrl $TNS_ADMIN/wallet -createCredential orcl  sys ChangeMe!1
    mkstore -wrl $TNS_ADMIN/wallet -createCredential orcls sys ChangeMe!1
    BASH
    
    sudo tee /etc/oracle/network/admin/sqlnet.ora >/dev/null <<'EOF'
    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /etc/oracle/network/admin/wallet)))
    SQLNET.WALLET_OVERRIDE = TRUE
    EOF
    sudo chown oracle:oracle /etc/oracle/network/admin/sqlnet.ora
    sudo chmod -R 0700 /etc/oracle/network/admin/wallet
    
    sudo -iu oracle ls -l /etc/oracle/network/admin/wallet
    # Expected: cwallet.sso and ewallet.p12
    
    sudo -iu oracle bash <<'BASH'
    sqlplus -L "/@orcl as sysdba" <<'SQL'
    SELECT database_role FROM v$database;
    EXIT
    SQL
    BASH
    
    sudo -iu oracle bash <<'BASH'
    sqlplus -L "/@orcls as sysdba" <<'SQL'
    SELECT database_role FROM v$database;
    EXIT
    SQL
    BASH
    
    sudo -iu oracle dgmgrl /@orcl  'SHOW CONFIGURATION;'
    sudo -iu oracle dgmgrl /@orcls 'SHOW CONFIGURATION;'
  2. Gere a carteira de login automático cwallet.sso para que o serviço systemd do Observer possa iniciar sem solicitar senha. Se cwallet.sso estiver faltando após executar mkstore, use orapki do pacote de ferramentas do Instant Client ou de um diretório raiz do banco de dados para criá-la e, em seguida, adicione novamente as credenciais armazenadas.

    sudo -iu oracle orapki wallet create \
      -wallet /etc/oracle/network/admin/wallet \
      -auto_login
    sudo -iu oracle ls -l /etc/oracle/network/admin/wallet
    # Expected: cwallet.sso and ewallet.p12
  3. Crie a unidade systemd, habilite o serviço e verifique se o Observer está conectado:

    sudo tee /etc/systemd/system/dgmgrl-observer.service >/dev/null <<'EOF'
    [Unit]
    Description=Oracle Data Guard Fast-Start Failover Observer
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    User=oracle
    Group=oracle
    Environment=ORACLE_HOME=/usr/lib/oracle/26/client64
    Environment=LD_LIBRARY_PATH=/usr/lib/oracle/26/client64/lib
    Environment=TNS_ADMIN=/etc/oracle/network/admin
    Environment=PATH=/usr/lib/oracle/26/client64/bin:/usr/bin:/bin
    ExecStart=/usr/lib/oracle/26/client64/bin/dgmgrl -silent /@orcl "START OBSERVER FILE IS '/var/lib/oracle/dgmgrl-observer.dat'"
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    EOF
    sudo install -d -o oracle -g oracle -m 0755 /var/lib/oracle
    sudo install -o oracle -g oracle -m 0640 /dev/null /var/log/dgmgrl-observer.log
    
    sudo tee /etc/logrotate.d/dgmgrl-observer >/dev/null <<'EOF'
    /var/log/dgmgrl-observer.log {
        weekly
        rotate 8
        compress delaycompress missingok notifempty
        create 0640 oracle oracle
        copytruncate
    }
    EOF
    
    sudo systemctl daemon-reload && sudo systemctl enable --now dgmgrl-observer.service
    sudo systemctl status dgmgrl-observer.service

    O observador deve ler CONNECTED do primário (um DISCONNECTED observador suspende silenciosamente o FSFO):

    DGMGRL> SHOW FAST_START FAILOVER;
    DGMGRL> SHOW CONFIGURATION;       -- Configuration Status: SUCCESS, FSFO: ENABLED

Etapa 6: Testar FSFO

Valide a configuração do Data Guard com VALIDATE DATABASE, depois execute uma switchover planejada e, em uma janela de teste, um failover de reinicialização de VM não planejado para confirmar que o FSFO está funcionando de ponta a ponta.

  1. Teste um switchover planejado e restaure a topologia original:

    DGMGRL> VALIDATE DATABASE 'orcls';
    DGMGRL> SWITCHOVER TO 'orcls';
    DGMGRL> SHOW CONFIGURATION;
    DGMGRL> SWITCHOVER TO 'orcl';        -- restore topology
  2. Teste uma falha não planejada usando uma reinicialização da VM em uma janela de teste controlada:

    Use um Reset da VM (teste de falha simulada); uma Parada normal pode não acionar o FSFO. Acompanhe o /var/log/dgmgrl-observer.log`tail `oradg-obs para monitorar o progresso do failover; restaure a topologia quando terminar.

Qual é o próximo passo?

A configuração do Oracle Data Guard Broker, Fast-Start Failover e Observer já está em vigor para esta implantação.