Migrar Oracle RAC

Para executar a migração de um banco de dados Oracle RAC de um servidor Oracle Cloud Infrastructure Classic para um sistema Oracle Cloud Infrastructure Database, você pode usar Oracle Data Guard. Você deve configurar o banco de dados no Oracle Cloud Infrastructure Classic como o banco de dados principal (o banco de dados de origem), que você migra para um banco de dados stand-by (o banco de dados de destino) no Oracle Cloud Infrastructure em sistemas de máquina virtual.

Configurar o Banco de Dados Principal (Origem)

Para configurar o banco de dados principal (o banco de dados de origem), você configura o Oracle Data Guard e modifica os arquivos listener.ora e tnsnames.ora para o banco de dados stand-by (o banco de dados de destino).

Configurar o Banco de Dados Principal para o Banco de Dados Stand-by

Nesta configuração, você configura o banco de dados principal (de origem) para usar o Oracle Data Guard.

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. No banco de dados stand-by (o banco de dados de destino), conecte-se como proprietário do software do banco de dados oracle.
    sudo su - oracle
  3. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  4. Efetue sign-in na instância de banco de dados como um usuário que tenha privilégios de administrador. Por exemplo:
    sqlplus / as sysoper
  5. Certifique-se de que o banco de dados esteja no modo ARCHIVELOG.
    ARCHIVE LOG LIST
  6. Se a saída de Database log mode for No Archive Mode e a saída de Automatic archival for Disabled, faça o seguinte:
    1. Saia do SQL*Plus
      SQL> exit
    2. Fazer shutdown do banco de dados.
      srvctl stop database -db db_unique_name
    3. Reiniciar o banco de dados no modo de montagem
      srvctl start database -db db_unique_name -o mount
    4. Efetue sign-in na instância de banco de dados como um usuário que tenha privilégios de administrador. Por exemplo:
      sqlplus / as sysoper
    5. Ativar modo de log de arquivamento.
      ALTER DATABASE ARCHIVELOG;
    6. Certifique-se de que o banco de dados agora esteja no modo de log de arquivamento.
      ARCHIVE LOG LIST
      A saída para a saída do modo de log do Banco de Dados deve ser Archive Mode e a saída de Automatic archival está Ativada .
    7. Abra o banco de dados.
      ALTER DATABASE OPEN;
  7. Conecte-se com o privilégio de administrador do SYSDBA.
    CONNECT / AS SYSDBA
  8. Para um ambiente multitenant, faça o seguinte:
    1. Verifique o status do PDBS.
      SHOW PDBS
    2. Se o PDBS não estiver aberto, abra-os.
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. Certifique-se de que o banco de dados esteja no modo de log imposto. Por exemplo:
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. Se necessário, ative force logging.
    ALTER DATABASE FORCE LOGGING;
  11. Verifique a configuração.
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    A coluna FORCE_LOGGING deve ser YES.
  12. Use o comando SHOW PARAMETER para verificar os seguintes parâmetros do banco de dados:
    1. DB_NAME e DB_UNIQUE_NAME: Certifique-se de que esses nomes sejam diferentes dos nomes usados no banco de dados de destino.
    2. REMOTE_LOGIN_PASSWORDFILE: Este parâmetro deve ser definido como EXCLUSIVE.

Adicionar Serviços Estáticos ao Arquivo listener.ora do Banco de Dados Principal

Nesta seção, é necessário adicionar um novo listener estático ao listener. ou para um listener, e reiniciar o listener.

  1. Use o SSH para efetuar sign-in no primeiro nó do banco de dados (origem) principal.
  2. Na linha de comando, conecte-se como grid user.
    sudo su - grid
  3. Modifique o arquivo /u01/app/12.2.0. O arquivo 1/grid/network/admin/listener.ora para incluir o listener estático. O exemplo a seguir mostra o formato a ser usado para um listener estático:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. Interrompa o listener.

    Observação:

    Interromper e iniciar o listener estático pode afetar novas conexões com o banco de dados por alguns segundos.
    srvctl stop listener -l LISTENER
  5. Reinicie o listener.
    srvctl start listener -l LISTENER
  6. Verifique o status do listener.
    lsnrctl status
  7. Verifique se há entradas na saída com o status UNKNOWN.
  8. Repita as etapas anteriores para o segundo nó do banco de dados principal (o banco de dados de origem).

Configurar os Parâmetros do Banco de Dados Principal

Depois de configurar o banco de dados (origem) principal e adicionar serviços estáticos ao arquivo listener.ora do banco de dados principal, você poderá configurar os parâmetros do Oracle Data Guard no banco de dados principal.

  1. Use o SSH para efetuar sign-in no primeiro nó RAC do banco de dados principal (o banco de dados de origem).
  2. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  3. Ativa o gerenciamento automático de arquivos stand-by.
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. Defina o alvo do lag de arquivamento.
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. Identifique os nomes e os locais dos arquivos de configuração do Oracle Broker. As instruções a seguir dependem do tipo de armazenamento do banco de dados.
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. Ative o processo Oracle Broker DMON para o banco de dados.
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (Opcional) Defina os parâmetros DB_BLOCK_CHECKING e DB_BLOCK_CHECKSUM.
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (Opcional) Defina o buffer de log como 256 megabytes.
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. Defina o parâmetro DB_LOST_WRITE_PROTECT como TYPICAL.
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. Ative a funcionalidade de flashback de banco de dados. O valor mínimo recomendado para DB_FLASHBACK_RETENTION_TARGET é 120 minutos.
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. Adicione os redo logs stand-by com base no redo log on-line. Você pode usar a consulta abaixo para determinar o número e o tamanho (em bytes) dos ORLs. O tamanho dos redo logs stand-by deverá ser igual aos redo logs on-line, mas você deverá adicionar um ou mais redo logs stand-by adicionais que haja redo logs on-line. No exemplo a seguir, existem quatro redo logs on-line; portanto, você deverá adicionar pelo menos cinco redo logs stand-by. Em outras palavras, para cada thread, você deve especificar os redo logs atuais mais de um e, em seguida, usar o mesmo tamanho para ele que os redo logs originais.
    1. Execute a consulta a seguir para determinar o número e o tamanho em bytes dos redo logs do Oracle.
      SELECT GROUP#, BYTES FROM V$LOG;
      A saída deve ser semelhante à seguinte.
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. Para o primeiro thread, especifique os redo logs atuais mais um e use o mesmo tamanho que os redo logs atuais. Por exemplo:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. Para o segundo thread, especifique os redo logs atuais mais um e use o mesmo tamanho que os redo logs atuais. Por exemplo:
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. Verifique se você criou o número correto de redo logs stand-by.
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      A saída semelhante à seguinte deve aparecer:
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

Configurar o Banco de Dados Stand-by (Alvo)

Para configurar o banco de dados stand-by (alvo), você deverá eliminar o banco de dados stand-by e, em seguida, modificar os arquivos oratab, listener.ora e tnsnames.ora .

Adicionar Entradas para as Instâncias do Banco de Dados

Atualize o arquivo /etc/oratab nos nós Oracle RAC e adicione uma entrada para a instância do banco de dados da seguinte forma:

  1. Use o SSH para efetuar sign-in no primeiro nó do banco de dados de origem (o banco de dados principal) a ser migrado.
  2. Atualize o /etc/oratab para adicionar o ID da instância do banco de dados à entrada do banco de dados, fazendo o seguinte:
    1. Edite /etc/oratab:
      sudo vi /etc/oratab
    2. Adicione uma entrada para seu banco de dados no seguinte formato:
      $ORACLE_SID:$ORACLE_HOME:N
      Exemplo do nó 1:
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      Exemplo do nó 2:
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. Execute o script oraenv para definir variáveis de ambiente do banco de dados como $ ORACLE_HOME :
    . oraenv
  4. Repita as etapas anteriores para o segundo nó Oracle RAC.

Eliminar o Banco de Dados Stand-by (Alvo)

  1. Use o SSH para efetuar log-in no servidor stand-by (alvo).
  2. Alterne para o usuário do oracle que é o proprietário do banco de dados.
  3. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  4. Cancele o cluster do banco de dados da seguinte forma:
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. Saia do SQL*Plus:
     exit
  6. Interromper o banco de dados usando o srvctl:
    srvctl stop database -db database_unqiue_name
  7. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  8. Inicializar e montar o banco de dados no modo restrito:
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. Eliminar o banco de dados stand-by:
     drop database;
    Database dropped.

Adicionar Serviços Estáticos ao Arquivo listener.ora do Banco de Dados Stand-by

Depois de adicionar serviços estáticos ao arquivo listener.ora do banco de dados stand-by (o banco de dados de origem), você deverá reiniciar o listener.

  1. Use o SSH para efetuar sign-in no primeiro nó do Oracle RAC do banco de dados stand-by (o banco de dados de origem).
  2. Na linha de comandos, conecte-se como usuário grid.
    sudo su - grid
  3. Modifique oarquivo $ ORACLE_HOME/network/admin/listener.ora para incluir o static listener. O exemplo a seguir mostra o formato a ser usado para um static listener:
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. Use o utilitário srvctl para interromper o listener.
    srvctl stop listener -l LISTENER
  5. Reinicie o listener.
    srvctl start listener -l LISTENER
  6. Verifique o status do listener.
    lsnrctl status

    Observação:

    a saída é o novo listener no status UNKNOWN
  7. Repita essas etapas para o segundo nó Oracle RAC.

Copiar Wallets TDE do Banco de Dados Principal para o Banco de Dados Stand-by

Você pode copiar manualmente os arquivos de wallet TDE do sistema de banco de dados principal (o banco de dados de origem) para o sistema de banco de dados stand-by (o banco de dados de destino) usando o SCP (Secure Copy Protocol).

Compactar a Wallet TDE

Você deve executar esta operação no banco de dados principal (o banco de dados de origem).

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. Na linha de comando, conecte-se como o proprietário do software do banco de dados oracle.
    sudo su - oracle
  3. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  4. Para localizar a localização da wallet, acesse a instância do banco de dados principal (o banco de dados de origem) com oprivilégio de administrador SYSDBA .
    sqlplus / as sysdba
  5. Consulte a coluna WRL_PARAMETER da view dinâmica V$ENCRYPTION_WALLET para localizar o diretório em que a wallet está localizada.
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. Saia do SQL*Plus.
    exit
  7. Vá para o diretório em que os arquivos da wallet estão localizados. Por exemplo:
    cd /u02/app/oracle/admin/source_db_unique_name
  8. Use o comando tar para compactar a wallet TDE. Por exemplo:
    tar cvf tde_wallet.tar ./tde_wallet
    Será exibido um resultado semelhante ao seguinte:
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
Copiar a Wallet do TDE e Definir Permissões no Diretório da Wallet

Após fazer backup do arquivo de wallet TDE, você deverá criar um diretório para a wallet e definir permissões neste diretório.

  1. Copie o arquivo tar da wallet para um diretório tmp. Por exemplo:
    cp tde_wallet.tar /tmp/
  2. Sair para se tornar o usuário OPC.
    $ exit
  3. Copie a chave privada do host local para o banco de dados principal.
    Por padrão, as chaves privadas não são armazenadas nos DBs
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. Use SCP para copiar os arquivos da wallet do banco de dados principal (o banco de dados de origem) para o banco de dados stand-by (o banco de dados de destino), nodiretório /opt/oracle/dcs/commonstore/wallets/tde/$ ORACLE_UNQNAME . Por exemplo:
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    Será exibido um resultado semelhante ao seguinte:
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. Use o SSH para efetuar sign-in no servidor do banco de dados de destino.
  6. Efetue sign-in como proprietário do software do banco de dados oracle.
    sudo su - oracle
  7. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  8. Para localizar a localização da wallet, exiba o conteúdo do sqlnet.ora:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Oparâmetro ENCRYPTION_WALLET_LOCATION exibe a localização da wallet. Por exemplo:
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. Vá para o diretório da wallet de destino. Por exemplo:
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. Verifique se a wallet correta está neste diretório.
    ls target_db_unique_name
  12. Faça backup do arquivo da wallet. Por exemplo:
    mv target_db_unique_name target_db_unique_name.old
  13. Crie um diretório no qual a wallet será armazenada. Por exemplo:
    mkdir target_db_unique_name
  14. Verifique as permissões no diretório da wallet.
    ls -ld target_db_unique_name
  15. Se necessário, dê ao proprietário do software do banco de dados permissões de leitura, gravação e execução.
    chmod 700 target_db_unique_name
  16. Verifique as permissões novamente.
    ls -ld target_db_unique_name
  17. Copie o arquivo tar da wallet para o diretório atual.
    cp /tmp/tde_wallet.tar .
  18. Verifique as permissões.
    ls -rlt
    Será exibido um resultado semelhante ao seguinte:
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
Concluir o Processo de Wallet TDE

Você deve extrair o arquivo tar da wallet da TDE e, em seguida, mover o conteúdo para o diretório da wallet no banco de dados stand-by (o banco de dados alvo).

  1. No banco de dados stand-by (o banco de dados de destino), certifique-se de que você está no diretório de wallet correto. Por exemplo:
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. Extraia o arquivo tar.
    tar xvf tde_wallet.tar
    A saída semelhante à seguinte deve aparecer:
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. Mova o conteúdo do tde_wallet para o diretório do wallet no banco de dados stand-by (o banco de dados de destino).
    mv ./tde_wallet/* ./target_db_unique_name
  4. Remove o conteúdo tde_wallet do banco de dados stand-by (o banco de dados de destino).
    rm -rf ./tde_wallet

Configurar o Arquivo de Parâmetros de Inicialização Stand-by e Iniciar a Instância no Modo NOMOUNT

Após configurar o arquivo de inicialização do standby, você poderá reiniciar o banco de dados no modo NOMOUNT.

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Efetue sign-in como proprietário do software do banco de dados oracle.
    sudo su - oracle
  3. Execute o script oraenv, que define a variável de ambiente $ORACLE_HOME.
    . oraenv
  4. Vá para o diretório dbs.
    cd $ORACLE_HOME/dbs
  5. Cria um arquivo de parâmetros de inicialização temporário, chamado init_<sid>.ora onde <sid> é o SID do banco de dados alvo da seguinte forma:
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. Faça backup do arquivo de senha existente, se existir. Por exemplo:
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. Crie um novo arquivo de senha. Por exemplo:
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. Altere o arquivo de senha do cluster para o arquivo de senha do non-ASM:
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. Conecte-se à instância do banco de dados stand-by (o banco de dados de destino) como um usuário que tenha o privilégio de administrador do sysdba. Por exemplo:
    sqlplus / as sysdba 
  10. Fazer shutdown do banco de dados. Por exemplo:
    shutdown immediate
  11. Reinicie o banco de dados no modo NOMOUNT usando o arquivo de parâmetros de inicialização init<sid>.ora.
    startup force nomount PFILE=?/dbs/init<sid>.ora

Duplicar o Banco de Dados Alvo para o Stand-by a partir do Banco de Dados Ativo

Você pode executar um script para duplicar o banco de dados stand-by (o banco de dados de destino). Se o banco de dados principal (o banco de dados de origem) for grande, você poderá alocar canais adicionais para melhorar seu desempenho. Para um banco de dados recém-instalado, um canal normalmente executa a duplicação do banco de dados em alguns minutos. Certifique-se de que nenhum erro ocorra após a execução da operação de duplicação do Oracle Recovery Manager (Oracle RMAN). Se ocorrerem erros, reinicie o banco de dados usando o arquivo de parâmetro de inicialização (não spfile), caso ele seja gerado no diretório $ORACLE_HOME/dbs como parte do processo de duplicação Oracle RMAN.

  1. Conecte-se ao banco de dados stand-by (o banco de dados de destino) como o proprietário do software de banco de dados oracle.
    su - oracle
  2. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  3. Criar dup.rcv
    vi dup.rcv
    Cole o conteúdo do script ao atualizar as variáveis necessárias.
  4. Com o banco de dados stand-by (o banco de dados de destino) no modo NOMOUNT, conecte-se ao Oracle RMAN.
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. Execute o script a seguir para duplicar o banco de dados de destino para um banco de dados stand-by a partir de um banco de dados ativo. O exemplo a seguir mostra o script dup.rcv, que deve ser criado pelo usuário e baseia-se no My Oracle Support note 2369137 . RMAN - Execuções Duplicadas Ativas na Explicação do método RMAN-06217 -- PUSH & PULL (ID do Documento 2369137.1). Neste exemplo, o script dup.rcv foi personalizado para submeter a duplicação (cópias de imagem) do sistema de arquivos ao Oracle Automatic Storage Management (Oracle ASM). Outras opções, como o sistema de arquivos, para o Oracle Automatic Storage Management Cluster File System, ou Oracle ASM para Oracle ASM, exigiriam alterações nos parâmetros de destino do arquivo e nos parâmetros de conversão do nome do arquivo.
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

Etapas de Duplicação do Oracle Recovery Manager

Após concluir a operação de duplicação do Oracle Recovery Manager (Oracle RMAN), você deve executar essas tarefas de limpeza no banco de dados stand-by (o banco de dados de destino).

Atualizar o Arquivo de Senha

Atualize o arquivo de senha da seguinte forma:

  1. Mova o arquivo de senha de volta para o ASM:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. Saia do usuário opc:
    [oracle@oci_node1 ~]$ exit
  3. Alterne para o usuário grid:
    [opc@oci_node1 ~]$ sudo su - grid
  4. Alterne para o prompt ASMCMD:
    [grid@oci_node1 ~]$ asmcmd
  5. Copie a senha em ASMCMD:
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    Observação:

    O comando pode exibir erros, pois ASM é uma versão diferente do banco de dados. Os erros podem ser ignorados porque o problema de registro é corrigido posteriormente neste procedimento.

  6. Navegue até o diretório +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/para localizar o system_generated_id a ser usado na etapa 9 .
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. Saia do ASMCMD e do usuário do grid:
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. Alterne para ousuário oracle :
    [opc@oci_node1 ~]$ sudo su - oracle
  9. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  10. Modifique o arquivo de senha no cluster para o ASM:
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
Ativar Oracle Flashback

Você deve ativar o Oracle Flashback.

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Efetue sign-in como proprietário do software do banco de dados oracle.
    sudo su - oracle
  3. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSOPER. Por exemplo:
    sqlplus / as sysoper
    Enter password: password
  4. Ative o Oracle Flashback.
    ALTER DATABASE FLASHBACK ON;
  5. Conecte-se como um usuário com o privilégio de administrador do SYSDBA.
    CONNECT / AS SYSDBA
  6. Definir o destino de retenção do flashback.
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
Mova o Arquivo spfile para o Oracle Automatic Storage Management

Você deve mover o arquivo spfile para Oracle Automatic Storage Management.

  1. Use o SSH para estabelecer conexão com o banco de dados stand-by (o banco de dados de destino).
  2. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSOPER.
  3. Crie e mova o arquivo spfile para Oracle Automatic Storage Management.
    1. Crie o pfile.
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. Saia do SQL*Plus:
      SQL> exit
    3. Editar o pfile:
      vi /tmp/init<sid>.ora
    4. Exclua a seguinte linha do arquivo:
      *.instance_name=<sid_for_node1>
    5. Adicione as seguintes linhas para cada nó:
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. Acesse o SQL*Plus como um usuário administrador. Por exemplo:
      sqlplus sys / as sysdba
      Password: password
    7. Fazer shutdown do banco de dados
      shutdown immediate
    8. Reinicie o banco de dados no modo MOUNT usando o arquivo initdb_name.ora que você acabou de criar.
      startup mount pfile='/tmp/init<sid>.ora';
    9. Crie o arquivo spfile.
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. Saia do SQL*Plus.
  5. Como o usuário grid, localize o arquivo spfile no Oracle Automatic Storage Management usando o comando asmcmd.
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    Será exibido um resultado semelhante ao seguinte:
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    Anote o nome do ASM (spfile.262.973010033), que você precisará na próxima tarefa.
Alterar o Arquivo .ora do inittarget_db_name para fazer Referência ao Arquivo spfile

Você pode modificar o arquivo init<sid>.ora para fazer referência ao arquivo spfile.

  1. Use o SSH para estabelecer conexão com o banco de dados stand-by (o banco de dados de destino).
  2. Efetue sign-in como proprietário do software do banco de dados oracle.
    su - oracle
  3. Execute o script oraenv para definir a variável de ambiente $ORACLE_HOME.
    . oraenv
  4. Vá para o diretório $ORACLE_HOME/dbs.
    cd $ORACLE_HOME/dbs
  5. Certifique-se de que o arquivo init<sid>.ora esteja neste diretório.
    ls *.ora
  6. Altere o arquivo inittarget_db_name.ora para fazer referência ao arquivo spfile. Por exemplo:
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    Nesta saída, spfile.262.973010033 é o nome do arquivo gerado quando você moveu oarquivo spfile para Oracle Automatic Storage Management na tarefa anterior.
    Será exibido um resultado semelhante ao seguinte:
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
Modificar e Iniciar o Banco de Dados Stand-by no Modo MOUNT

Você pode usar o srvctl para modificar e iniciar o banco de dados stand-by (o banco de dados de destino).

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Efetue sign-in como proprietário do software do banco de dados oracle.
    su - oracle
  3. Execute o script oraenv, que define a variável de ambiente $ ORACLE_HOME.
    . oraenv
  4. Use srvctl para modificar e iniciar o banco de dados stand-by (o banco de dados alvo) no modo MOUNT. Por exemplo:
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSOPER.
    sqlplus / as sysoper
  6. Fazer shutdown do banco de dados,
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. iniciar o banco de dados na montagem
    STARTUP MOUNT
  8. alterar o parâmetro cluster_database
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. Fazer shutdown do banco de dados
    SHUTDOWN IMMEDIATE
  10. Saia do SQL*Plus.
    EXIT
  11. Inicie o banco de dados no modo MOUNT usando srvctl.
    srvctl start database -db target_db_unique_name -o mount
  12. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA.
    sqlplus / as sysdba
  13. Consulte a exibição dinâmica V$DATABASE para garantir que o banco de dados esteja no modo MOUNT.
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    #Output semelhante ao seguinte é exibido:
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
Defina os Parâmetros de Conversão do Nome do Arquivo de Log e do Banco de Dados Principal

Você deve definir os parâmetros de conversão para o banco de dados e o nome do arquivo de log no banco de dados principal (o banco de dados de origem).

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. Alterne para o usuário oracle:
    sudo su - oracle
  3. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA. Por exemplo:
    sqlplus / as sysdba
    Enter password: password
  4. Verifique o parâmetro CONVERT.
    SHOW PARAMETER CONVERT
    Será exibido um resultado semelhante ao seguinte:
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    A coluna VALUE deve estar vazia (nula). Se houver um valor, anote este valor após a conclusão da migração. Depois que a migração for concluída, esses valores serão definidos como nulos.
  5. Use as informações desta saída para definir oparâmetro DB_FILE_NAME_CONVERT .

    Observação:

    Observe que, nesta etapa, o SOURCE_DB_NAME deve estar em letras maiúsculas.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. Defina o parâmetro LOG_FILE_NAME_CONVERT. Por exemplo:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. Reinicie o banco de dados.
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
Definir os Parâmetros de Conversão do Nome do Arquivo de Log e do Banco de Dados Stand-by

Você deverá definir os parâmetros de conversão para o banco de dados e o nome do arquivo de log no banco de dados stand-by (o banco de dados de destino).

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Alterne para o usuário oracle:
    sudo su - oracle
  3. Efetue sign-in na instância de banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA. Por exemplo:
    sqlplus / as sysdba
    Enter password: password
  4. Verifique o parâmetro CONVERT.
    SHOW PARAMETER CONVERT
    Será exibido um resultado semelhante ao seguinte:
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    A coluna VALUE deve estar vazia (nula). Se houver um valor, anote este valor após a conclusão da migração. Depois que a migração for concluída, esses valores serão definidos como nulos.
  5. Use as informações desta saída para definir o parâmetro DB_FILE_NAME_CONVERT. Por exemplo:

    Observação:

    Observe que, nesta etapa, o SOURCE_DB_NAME deve estar em letras maiúsculas.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. Defina o parâmetro LOG_FILE_NAME_CONVERT. Por exemplo:
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. Reinicie o banco de dados.
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

Configurar o Banco de Dados com o Oracle Data Guard Broker

Você pode usar o utilitário dbmgrl para configurar o banco de dados principal (o banco de dados de origem) ou o banco de dados stand-by (o banco de dados de destino) com o Oracle Data Guard Broker.

  1. Use o SSH para efetuar sign-in no banco de dados principal (o banco de dados de origem) ou no servidor do banco de dados stand-by (o banco de dados de destino).
  2. Inicie o utilitário de linha de comando dgmgrl:
    dgmgrl
  3. Estabeleça conexão como usuário SYS usando o sistema de banco de dados principal ou stand-by. Por exemplo, para efetuar log-in em um banco de dados principal cujonome do TNS é OCIC-ORCL:
    connect sys@ocic-orcl
    Enter password: password
  4. Usando o utilitário dbmgrl, crie a configuração e a identidade do Oracle Data Guard para os bancos de dados principal e stand-by. Por exemplo:
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. Ative a configuração.
    enable configuration
  6. Mostra a configuração do Oracle Data Guard no banco de dados stand-by.
    show configuration
    Será exibido um resultado semelhante ao seguinte:
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

Validar Oracle Data Guard Broker no Banco de Dados Principal e no Banco de Dados Stand-by

Você pode usar o SQL*Plus para validar o Oracle Data Guard Broker no banco de dados principal (o banco de dados de origem) e o banco de dados stand-by (o banco de dados de destino).

Validar Oracle Data Guard Broker no Banco de Dados Principal

Você pode usar o SQL*Plus para validar o Oracle Data Guard Broker no banco de dados principal (o banco de dados de origem).

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. Conectar como um usuário que tem o privilégio de administrador do SYSDBA. Por exemplo, para um banco de dados principal cujo nome TNS é OCIC-ORCL:
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. Consulte a exibição dinâmica do V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. Será exibido um resultado semelhante ao seguinte:
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    Na saída, DATABASE_ROLE deve ser PRIMARY e OPEN_MODE deve ser READ WRITE.

Validar Oracle Data Guard Broker no Banco de Dados Stand-by

Você pode usar o SQL*Plus para validar o Oracle Data Guard Broker no banco de dados stand-by (o banco de dados de destino).

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Conectar como um usuário que tem o privilégio de administrador do SYSDBA.
  3. Consulte a exibição dinâmica do V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    Será exibido um resultado semelhante ao seguinte:
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    A saída deve mostrar DATABASE_ROLE como PHYSICAL STANDBY e OPEN_MODE como MOUNTED.
  4. Verifique se os processos do Oracle Data Guard são iniciados no banco de dados stand-by.
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    Será exibido um resultado semelhante ao seguinte:
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    A saída deverá indicar que os processos estão sendo executados com pouca ou sem retardo. Se o DELAY_MINS para o MRP0, os bancos de dados serão sincronizados.
  5. Verifique o parâmetro LOG_ARCHIVE_DEST.
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    Será exibido um resultado semelhante ao seguinte:
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    log_archive_dest_10          string
    log_archive_dest_11          string
    log_archive_dest_12          string
    log_archive_dest_13          string
    log_archive_dest_14          string
    log_archive_dest_15          string
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    A saída deve ser semelhante à saída do log_archive_dest_2, com o serviço apontando para o banco de dados stand-by (o banco de dados de destino), que nesse exemplo é oci-orcl.
  6. Verifique o parâmetro LOG_ARCHIVE_CONFIG.
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    Será exibido um resultado semelhante ao seguinte:
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. Verifique o parâmetro FAL_SERVER.
    SHOW PARAMETER FAL_SERVER
    Será exibido um resultado semelhante ao seguinte:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. Verifique o parâmetro LOG_ARCHIVE_FORMAT.
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    Será exibido um resultado semelhante ao seguinte:
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

Concluir a Validação no Banco de Dados Principal

Você pode usar dgmrgl para concluir a validação do Oracle Data Guard Broker no banco de dados principal (o banco de dados de origem).

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. Repita as etapas 5 até 8 no tópico Validar Oracle Data Guard Broker no Banco de Dados Stand-by no banco de dados principal (o banco de dados de origem).
  3. Inicie o utilitário de linha de comando dgmgrl:
    dgmgrl
  4. Estabeleça conexão como usuário SYS usando o sistema de banco de dados principal ou stand-by. Por exemplo, para efetuar log-in em um banco de dados principal cujo nome do TNS é OCIC-ORCL:
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. Verifique a configuração do Oracle Data Guard.
    show configuration verbose
    Será exibido um resultado semelhante ao seguinte:
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. Verifique o status do banco de dados stand-by (o banco de dados de destino). Por exemplo:
    show database verbose target_db_unique_name
    Após concluir essas etapas, você deverá testar se a configuração do Oracle Data Guard está funcionando conforme esperado executando operações de switchover em ambas as direções.

Executar a Migração

Para concluir a migração, você deve executar uma operação de switchover do banco de dados principal (o banco de dados de origem) para o banco de dados stand-by (o banco de dados de destino).

  1. Use o SSH para efetuar sign-in no servidor do banco de dados principal (o banco de dados de origem).
  2. Inicie o utilitário de linha de comando dgmgrl.
    dgmgrl 
  3. Conecte-se como usuário SYS do sistema de banco de dados principal ou stand-by. Por exemplo, para efetuar log-in em um banco de dados principal cujo nome do TNS seja OCIC-ORCL:.
    connect sys@ocic-orcl
    Enter password: password
  4. Verifique a configuração.
    show configuration verbose
  5. Na saída detalhada da configuração, verifique se a definição Status do Banco de Dados informa SUCCESS.
  6. Verifique a configuração do banco de dados principal (o banco de dados de origem).
    show database verbose source_db_unique_name
    A saída detalhada do banco de dados deve mostrar que a atribuição é principal e a definição de StaticConnectIdentifier é igual a DGConnectIdentifier.
  7. Execute uma operação de switchover para o banco de dados stand-by (o banco de dados alvo).
    switchover to target_db_unique_name
    A saída deve indicar que a operação de switchover está ocorrendo entre os dois bancos de dados.
  8. Execute mostrar configuração para verificar se não há erros ou avisos:
    show configuration;

Etapas Pós-migração

Depois de concluir a migração de um banco de dados Oracle de um servidor do Oracle Cloud Infrastructure Compute Classic para um servidor do Oracle Cloud Infrastructure que usa um sistema de Banco de Dados de Máquina Virtual, você deve validar a migração e remover a configuração do banco de dados principal (o banco de dados de origem).

Testar a Configuração do Oracle Data Guard no Banco de Dados Stand-by

Nesse estágio, o banco de dados de destino agora é o banco de dados principal. O banco de dados de origem agora é o banco de dados stand-by.

Você pode testar a conexão do Oracle Data Guard no banco de dados de destino, executando uma operação de switchover com o banco de dados de origem. Esta operação de switchover fará com que o banco de dados de destino execute a atribuição stand-by novamente. A finalidade desse teste é provar que você pode retornar à configuração original se o banco de dados de destino não estiver funcional.

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino).
  2. Inicie o utilitário dgmgrl. Por exemplo:
    dgmgrl sys@target_db
    Enter password: password
  3. Execute uma operação de switchover para o banco de dados de origem, que fará com que o banco de dados de destino execute a atribuição stand-by.
    switchover to source_db_unique_name;
    A saída deve indicar que a operação de switchover está ocorrendo entre os dois bancos de dados.
  4. (Opcional) Para evitar alterações no novo banco de dados stand-by até que o novo banco de dados principal seja determinado como totalmente funcional, desative temporariamente o recurso Redo Apply.
    edit database source_db_unique_name set state = 'APPLY-OFF';
    Se você executar outra operação de switchover para que o banco de dados de destino seja agora o banco de dados stand-by, você pode executar uma operação APPLY-OFF para impedir que o banco de dados de origem seja atualizado. Isso permite que o banco de dados de destino seja colocado em serviço e mantém o banco de dados de origem como um backup pontual, no caso de uma falha lógica na nova configuração.
  5. (Opcional) Para reiniciar o recurso de aplicação:
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. Saia do dgmgrl.
    exit
  7. Execute uma operação de switchover para o banco de dados de destino, que tornará a atribuição stand-by do banco de dados de origem.
    switchover to target_db_unique_name;
    A saída deve indicar que a operação de switchover está ocorrendo entre os dois bancos de dados.
  8. Testar a conexão com o novo banco de dados principal. Por exemplo, após exportar o nome exclusivo de destino, conecte-se como usuário SYS e selecione um espaço de tabela criptografado. Neste exemplo, a tabela HR.EMPLOYEES é criptografada.
    exit
  9. Testar a conexão com o novo banco de dados principal. Por exemplo, após exportar o nome exclusivo de destino, conecte-se como usuário SYS e selecione um espaço de tabela criptografado. Neste exemplo, a tabela HR.EMPLOYEES é criptografada.
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

Limpar o Banco de Dados Stand-by

Após concluir e testar a migração, você poderá remover a configuração do Oracle Data Guard do banco de dados stand-by (o banco de dados de destino). Não é necessário remover o banco de dados de origem original. Nesse estágio, o banco de dados stand-by é o novo banco de dados de origem.

  1. Use o SSH para efetuar sign-in no banco de dados stand-by (o banco de dados de destino) e acessar o Oracle Data Guard dgmgrl utility.
  2. Verifique a configuração.
    show configuration
  3. Se a configuração não mostrar Protection Mode: MaxPerformance, defina Oracle Data Guard para usar o modo de proteção MaxPerformance.
    edit configuration set protection mode as maxperformance
  4. Desative e remova a configuração.
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. Conecte-se à instância do banco de dados como um usuário que tenha o privilégio de administrador do SYSDBA. Por exemplo:
    sqlplus / as sysdba
  6. Verifique os parâmetros do DG_BROKER_CONFIG_FILE.
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    A saída deve listar os dados associados e os arquivos de recuperação para essa configuração, normalmente dg_broker_config_file1 e dg_broker_config_file2.
  7. Inicie outra janela de terminal e conecte-se ao asmcmd como o usuário da grade.
  8. Remova os arquivos de configuração do Oracle Data Guard que foram listados quando você verificou os parâmetros do DG_BROKER_CONFIG_FILE.
  9. Retorne à janela que está executando SQL*Plus.
  10. Execute as seguintes instruções ALTER SYSTEM:
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. Verifique os seguintes parâmetros:
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. Se algum dos parâmetros anteriores estiver definido, redefina os parâmetros para usar valores em branco. Por exemplo, para STANDBY_ARCHIVE_DEST :
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. Reinicie o banco de dados.
    SHUTDOWN IMMEDIATE
    STARTUP
  14. Elimine os logs stand-by do banco de dados principal (o banco de dados de origem).
    1. Localize os números de grupo dos redo logs do banco de dados stand-by que estão no novo banco de dados principal (que era anteriormente o banco de dados de destino).
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. Remover os logs stand-by. Por exemplo:
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (Opcional) Altere os parâmetros DB_BLOCK_CHECKSUM e DB_BLOCK_CHECKING.
    Os valores padrão são DB_BLOCK_CHECKSUM=TYPICAL e DB_BLOCK_CHECKING=FALSE.
  16. Saia do SQL*Plus.
    EXIT