Migrar o Banco de Dados do Aplicativo

O Oracle Autonomous Transaction Processing remove a necessidade de manter, aplicar patch e otimizar o host e o software do banco de dados e, portanto, só fornece acesso ao nível do esquema do banco de dados. Por esse motivo, as ferramentas de migração disponíveis para migrar um banco de dados local para o Autonomous Transaction Processing são baseadas no datapump, uma ferramenta de migração no nível do esquema incluída no Oracle Database.

Sobre a Migração do Banco de Dados do Aplicativo

O processo de migração do banco de dados consiste na criação de um dump do esquema do banco de dados no banco de dados de origem, fazendo upload dele para o armazenamento de objetos no OCI (Oracle Cloud Infrastructure), configurando o banco de dados do Autonomous Transaction Processing para importar do armazenamento de objetos e importar o dump do esquema do banco de dados do Oracle Cloud Infrastructure Object Storage.

Veja a seguir uma visão geral do processo:

  1. Exporte o (s) esquema (s) do banco de dados para um arquivo de dump local.
  2. Mova o arquivo de dump para o Object Storage usando a CLI do OCI.
  3. Obter o OCID do banco de dados autônomo.
  4. Obtenha a wallet para acessar o banco de dados autônomo do banco de dados de origem (ou algum host alternativo).
  5. Crie um túnel local para o banco de dados autônomo para configuração.
  6. Obtenha um Token de Autenticação do OCI para o banco de dados autônomo acessar o Oracle Cloud Infrastructure Object Storage.
  7. Configure as credenciais de acesso ao banco de dados autônomo.
  8. Importe o arquivo de dump do Oracle Cloud Infrastructure Object Storage para o banco de dados autônomo.

Exportar o Esquema e os Dados do Banco de Dados

Exporte o esquema e os dados do banco de dados para um único arquivo de dump.

  1. Crie uma pasta export para o arquivo de dump.
    Observe que estamos criando um único dump de arquivo, que pode ser extremamente grande em algumas circunstâncias. Consulte outras opções para usar o datapump para criar arquivos de várias partes.
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. Mova o arquivo de dump para o bucket do Oracle Cloud Infrastructure Object Storage criado anteriormente usando a interface de linha de comando do OCI (Oracle Cloud Infrastructure).
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

Obter o OCID do Autonomous Database

Obtenha o OCID, IP de ponto final privado e URL de Ponto Final Privado do banco de dados Oracle Autonomous Transaction Processing.

  1. Na Console do Oracle Cloud Infrastructure, selecione Oracle Database e, em seguida, Autonomous Transaction Processing.
  2. Selecione o compartimento na lista Compartimentos no lado esquerdo da página.
    O compartimento é onde você implantou os recursos.
  3. Clique no banco de dados provisionado anteriormente para obter os detalhes.
  4. Copie o OCID, o IP do Ponto Final Privado e o URL do Ponto Final Privado (nome do host) e salve-os em um bloco de notas para mais tarde.

Obter o Arquivo Wallet do Banco de Dados

Obtenha o arquivo da wallet do banco de dados Oracle Autonomous Transaction Processing e atualize a localização definindo o diretório para apontar para a localização da wallet no arquivo sqlnet.ora.

  1. Use a interface de linha de comando do OCI (Oracle Cloud Infrastructure) para obter o arquivo da wallet do banco de dados Autonomous Transaction Processing usando seu OCID e senha.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. Descompacte a wallet.
    unzip wallet.zip
  3. Edite o arquivo sqlnet.ora e substitua o valor do diretório para corresponder à localização dos arquivos da wallet descompactados.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. Defina a variável de ambiente TNS_ADMIN para corresponder à pasta em que a wallet foi descompactada.
    export TNS_ADMIN=$(pwd)

Criar um Túnel Local para o Autonomous Database por meio de um Host Bastion

Crie um túnel configurando o endereço IP público do host bastion.

  1. Obter o IP público do bastião anfitrião a partir da saída terraform.
    Se o servidor Apache Tomcat tiver sido implantado em uma sub-rede pública, você poderá usar o IP público do servidor Tomcat; caso contrário, use o endereço IP público do bastion host.
  2. Defina o IP bastião para criar um túnel.
    export BASTION_IP=Public IP of the bastion
  3. Execute o comando para exportar o host do BD usando o endereço IP do Ponto Final Privado do banco de dados Autonomous Transaction Processing e ssh para o host do banco de dados.
    Esse DB_HOST é o IP do Ponto Final Privado reunido anteriormente.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    Quando solicitado, informe sim para confirmar o novo host.
  4. Edite o arquivo /etc/hosts para apontar para o Host de Ponto Final Privado do banco de dados autônomo para 127.0.0.1 (localhost).
    Isso consulta o Host de Ponto Final Privado no arquivo tnsnames.ora.
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. Verifique se o ponto final está correto.
    cat /etc/hosts
    A saída deve ser semelhante à seguinte:
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

Gerar um Token de Autenticação

Gere um token a ser usado ao mover seus dados para o Oracle Cloud Infrastructure Object Storage e para o banco de dados Oracle Autonomous Transaction Processing. Você só verá a string de Token de Autenticação ao criá-la, portanto certifique-se de copiar o Token de Autenticação para um local seguro imediatamente.
  1. Efetue log-in na Console do Oracle Cloud Infrastructure
  2. Clique no ícone Usuário para abrir o menu Perfil e, em seguida, clique em Definições do Usuário.
    Anote seu nome de usuário completo (pode ser seu e-mail ou seu e-mail prefixado com o serviço de sign-on único que você usa, se ativado).
  3. Clique em Tokens de Autenticação e em Gerar Token.
  4. Forneça uma descrição significativa para o Token de Autenticação e clique em Gerar Token.
  5. Copie o token e salve-o para que possa recuperá-lo posteriormente.
    O token é exibido apenas uma vez. Ao fechar a caixa de diálogo, você não poderá ver o token na Console novamente.
  6. Clique em Fechar.

Configurar a Credencial de Nuvem no Autonomous Database

Adicione seu nome de usuário do OCI (Oracle Cloud Infrastructure) e senha do Token de Autenticação como credenciais padrão para o banco de dados Oracle Autonomous Transaction Processing.

  1. Usando o SQLPLus Instant Client, conecte-se ao banco de dados remoto Autonomous Transaction Processing por meio do túnel criado anteriormente.
    sqlplus admin@atp_db_name_high
  2. No prompt, informe a senha admin do banco de dados Autonomous Transaction Processing.
    O atp_admin_password que foi configurado no arquivo terraform.tfvars.
  3. Certifique-se de que você esteja conectado a um prompt do SQLPlus.
    SQL>
  4. Crie a credencial do OCI Cloud no banco de dados Autonomous Transaction Processing usando o comando a seguir, com seu nome de usuário do OCI e senha do Token de Autenticação do OCI.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. Defina suas credenciais como a credencial padrão.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. Saia do SQLPlus.
    SQL> exit

Importar o Arquivo de Dump para o Autonomous Database

Use o datapump para importar o dump de dados para o banco de dados Autonomous Transaction Processing.

  1. Defina as variáveis de ambiente para a região (como us-ashburn-1), o namespace, o bucket, o nome do arquivo, o nome do banco de dados do Autonomous Transaction Processing (como atpdb) e a senha administrativa do Autonomous Transaction Processing.
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. Execute o seguinte comando:
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    A primeira tentativa falhará com um erro: ORA-01950: no privileges on tablespace 'DATA'. Vá para a próxima etapa para conceder uma cota ao usuário criado com base no esquema do banco de dados.

  3. Conceda ao usuário tablespace ilimitado.
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    A saída a seguir deve ser exibida:
    Grant Succeeded
  4. Elimine as tabelas criadas na Etapa 2 para permitir que os dados sejam criados na próxima execução.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. Execute o comando a seguir para importar os dados agora que o usuário tiver uma cota válida.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    Você verá erros relacionados ao usuário já existente. Isso é normal porque os objetos foram criados quando executamos o comando pela primeira vez na Etapa 2.
O banco de dados é migrado.