Migrar Usando Migração Física

Estas etapas descrevem como executar uma migração física on-line ou off-line. Antes de executar sua migração física, anote o seguinte:

  • O banco de dados de origem no servidor x86 não precisa ser criptografado. O Zero Downtime Migration criptografará o banco de dados de destino durante a migração.
  • Uma wallet de Criptografia Transparente de Dados (TDE) deve ser definida no banco de dados de origem antes da migração, mesmo que o banco de dados de origem não seja criptografado.
  • A senha sys, a senha da wallet, a versão do banco de dados e o nível de patch nos bancos de dados de origem e de destino devem ser iguais.
  • O Zero Downtime Migration migrará o banco de dados contêiner (CDB) para o CDB e não CDB para o não CDB.

Para executar uma migração física com o Zero Downtime Migration:

  1. Faça download do software Zero Downtime Migration e instale-o em um servidor separado. Execute o software Zero Downtime Migration usando zdmuser.
  2. Faça login no servidor ZDM como zdmuser.
  3. Gere um par de chaves ssh.
  4. Ative o ssh sem senha de zdmuser para o servidor x86 de origem (root/privilege-sudoer user) e para todos os nós do Cluster de VMs no banco de dados do Oracle Exadata Database Service on Cloud@Customer de destino (opc user).
  5. No Oracle ZFS Storage Appliance (NAS), crie um Compartilhamento NFS (Network File System) a ser usado como um espaço reservado para os backups RMAN do banco de dados de origem enquanto a migração está em andamento.
    O banco de dados de destino será restaurado com base nos backups salvos neste Compartilhamento NFS.
  6. Monte o Compartilhamento de NFS no mesmo ponto de montagem em todos os nós dos bancos de dados de origem e de destino. Certifique-se de que todos os usuários tenham permissões de leitura, gravação e execução (rwx) na origem e no destino.
  7. Crie um banco de dados de destino do Oracle Exadata Database Service on Cloud@Customer usando a GUI ou a API REST do OCI. Configure o banco de dados de destino da seguinte forma:
    • Os bancos de dados de destino e de origem devem ter os mesmos nomes, mas diferentes de DB_UNIQUE_NAME.
    • A senha sys, a senha da wallet, a versão do banco de dados e o nível de patch nos bancos de dados de origem e de destino devem ser iguais.
    • Não selecione um Destino de Backup ou ative Backups Automáticos. Essas definições podem ser ativadas após a migração do banco de dados da origem para o destino.
  8. Verifique se o banco de dados de origem está configurado no Modo de Log de Arquivamento. Se o Log de Arquivamento não estiver ativado, consulte Ativar Modo de Log de Arquivamento abaixo.
  9. Se o banco de dados de origem não for criptografado, consulte Configurar um Armazenamento de Chaves de Criptografia de Dados Transparente (TDE) abaixo. Os dados não precisam ser criptografados; apenas a área de armazenamento de chaves TDE é necessária para a migração física. Certifique-se de que a senha do armazenamento de chaves (wallet) seja igual à senha do sistema/wallet usada para criar o banco de dados de destino no Oracle Exadata Database Service on Cloud@Customer.
  10. Crie um arquivo de resposta para o Zero Downtime Migration para executar a migração. Os parâmetros-chave incluem:
    • TGT_DB_UNIQUE_NAME: Nome exclusivo do banco de dados do banco de dados Oracle Exadata Database Service on Cloud@Customer de destino.
    • MIGRATION_METHOD: OFFLINE_PHYSICAL ou ONLINE_PHYSICAL.
    • DATA_TRANSFER_MEDIUM: NFS
    • PLATFORM_TYPE: EXACC
    • BACKUP_PATH: Ponto de montagem para o NFS (Network File System) Compartilhar na origem e no destino na Etapa 4.
    • SHUTDOWN_SRC: TRUE
  11. É possível executar um job de migração de execução seca (-eval) do Zero Downtime Migration para validar todos os pré-requisitos para migração. Por exemplo:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file: path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10 \
    -eval
  12. Executar job Zero Downtime Migration. Por exemplo:
    zdmcli migrate database -sourcedb source_db_name \
    -sourcenode IP/hostname_of_x86_db_server \
    -srcauth zdmauth \
    -srcarg1 user: root_or_sudoer_user \
    -srcarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -srcarg3 sudo_location:/usr/bin/sudo \
    -targetnode IP/hostname_of_first_Exadata_Database_Cloud@Customer_VM_Cluster_Node
    -tgtarg1 user:opc \
    -tgtarg2 identity_file:path_to_ssh_private_key/ssh_private_key_file_name
    \
    -tgtarg3 sudo_location:/usr/bin/sudo \
    -rsp path_to_response_file/response_file_name_from_step_10
Durante as migrações on-line físicas, o Zero Downtime Migration configurará o Oracle Data Guard entre a origem e o destino para garantir que o banco de dados esteja sempre on-line durante a migração. O Oracle Data Guard sincronizará quaisquer alterações do banco de dados de origem para o banco de dados de destino.
Isso conclui a migração física.

Ativar Modo Arquivamento

O modo de log de arquivamento deve ser ativado no banco de dados de origem para migrações físicas com Tempo de Inatividade Zero. Essas etapas descreverão como configurar o modo de log de arquivamento no banco de dados de origem.

  1. Validar o banco de dados de origem não está configurado no modo de log de arquivamento.
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    NOARCHIVELOG
  2. Configure o destino de arquivamento do log do banco de dados de origem. O exemplo a seguir é de um banco de dados de origem com arquivos de BD em um sistema de arquivos Linux. O LOCATION será diferente se os arquivos do BD forem armazenados no Grupo de Discos do Oracle ASM.
    SQL> alter system set 
    log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/db_name/arc' 
    scope=both;
    System altered.
    SQL> select destination,STATUS from v$archive_dest where status='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
  3. Faça shutdown do banco de dados e, em seguida, monte o banco de dados.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started
  4. Ative o modo Archivelog.
    alter database archivelog;
  5. Abra o banco de dados.
    alter database open;
  6. Verifique se o banco de dados está no modo de log de arquivamento.
    SQL> select destination,STATUS from v$archive_dest where statuS='VALID';
    DESTINATION
    --------------------------------------------------------------------------------
    STATUS
    ---------
    /u01/app/oracle/oradata/db_name/arc
    VALID
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    ARCHIVELOG

Configurar um Armazenamento de Chaves Transparent Data Encryption (TDE)

As migrações físicas do Zero Downtime Migration exigem um armazenamento de chaves/wallet de criptografia TDE auto_login (mesmo que o banco de dados de origem não esteja criptografado). Este armazenamento de chaves deve ser configurado com a mesma senha que o armazenamento de chaves do banco de dados de destino. Estas etapas descrevem como configurar um armazenamento de chaves no banco de dados de origem.

  1. Verifique se há um local de armazenamento de chaves padrão configurado para o banco de dados.
    SQL> select * from v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED
    1
    SQL>
  2. Se ainda não existir um diretório para a área de armazenamento de chaves, crie um diretório para a área de armazenamento de chaves.
    mkdir -p /u01/app/oracle/admin/db_name/wallet
  3. Crie um diretório para armazenar o arquivo sqlnet.ora.
    mkdir -p $ORACLE_HOME/network/admin/
  4. Crie o arquivo sqlnet.ora no diretório $ORACLE_HOME/network/admin/ com as informações do armazenamento de chaves na Etapa 1.
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
     (METHOD_DATA=(DIRECTORY=/u01/app/oracle/admin/db_name/wallet)))
  5. Crie o armazenamento de chaves protegido com uma senha. Lembre-se de que o armazenamento de chaves do banco de dados Oracle Exadata Database Service on Cloud@Customer de destino também deve ser configurado com essa senha.
    SQL>administer key management create keystore 
    '/u01/app/oracle/admin/db_name/wallet' identified by keystore_password;
  6. Abra o armazenamento de chaves.
    Se o banco de dados de origem não for um CDB, remova container = ALL.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY 
    keystore_password container = ALL;
  7. Crie um backup para o armazenamento de chaves.
    Se o banco de dados de origem não for um CDB, remova container = ALL.
    SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password
    with backup container = ALL;
  8. Verifique se a área de armazenamento de chaves foi criada e se foi feito backup dela.
    SQL> SELECT * FROM v$encryption_keys;
    Snip…
    ACTIVATING_PDBNAME
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    ATOlrcGaa0/iv/dFeRSkNSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    --------------------------------------------------------------------------------
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    db_name
    ACTIVATING_PDBID ACTIVATING_PDBUID ACTIVATING_PDBGUID CON_ID
    ---------------- ----------------- -------------------------------- ----------
    1 86B637B62FDF7A65E053F706E80A27CA
    Snip…
  9. Crie um armazenamento de chaves auto_login com base no armazenamento de chaves criado na Etapa 5.
    SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM 
    KEYSTORE '/u01/app/oracle/admin/db_name/wallet' IDENTIFIED BY 
    keystore_password ;
  10. Feche a área de armazenamento de chaves na Etapa 5.
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY 
    keystore_password;
  11. Verifique se o armazenamento de chaves auto_login ainda está aberto.
    SQL> SELECT * FROM v$encryption_wallet;
    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC
    ------------------------------ -------------------- --------- -------- ---------
    CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db_name/wallet
    OPEN AUTOLOGIN SINGLE NONE NO