Introdução

Quando emitimos o comando zdmcli migrate database, o ZDM solicita algumas credenciais antes de iniciar o JOB de migração (ou de avaliação). A quantidade de credenciais solicitadas depende do cenário de migração, mas em um cenário simples de migração física, pode envolver a senha do usuário SYS do banco sendo migrado, a API Key do Object Storage e a senha do usuário root no servidor de origem.

Este post demonstra como configurar o ZDM para armazenar essas senhas em wallet no ZDM Node, de uma forma segura e que nos permite repetir os comandos com ZDMCLI sem ser solicitados a informar as senhas a cada novo JOB.

Para simplificar os comandos, adicione o diretório do ZDM_HOME/bin na variável PATH:

export PATH=$ZDM_HOME/bin:$PATH

Crie um diretório para cada wallet. Neste exemplo, estou criando abaixo do ZDM_BASE:

mkdir -p $ZDM_BASE/wallet/sysuser
mkdir -p $ZDM_BASE/wallet/ossuser

Wallet Para Senha do SYS

Com o orapki, crie uma wallet do tipo AUTO_LOGIN para a senha de usuário SYS:

orapki wallet create -wallet $ZDM_BASE/wallet/sysuser -auto_login_only

Após criar a wallet, adicione uma nova CREDENTIAL com o utilitário mkstore. Quando solicitado por uma senha / segredo, deve ser informada a senha do usuário SYS do banco de dados que será migrado:

$ mkstore -wrl $ZDM_BASE/wallet/sysuser -createCredential store sysuser

Wallet Para o Auth Token do Object Storage na OCI

Com o orapki, crie uma wallet do tipo AUTO_LOGIN para o Auth Token da OCI.

orapki wallet create -wallet $ZDM_BASE/wallet/ossuser -auto_login_only

Adicione uma nova CREDENTIAL com o utilitário mkstore. Quando solicitado por uma senha / segredo, deve ser informada o Auth Token criado na conta OCI para permitir acesso ao Object Storage:

mkstore -wrl $ZDM_BASE/wallet/ossuser -createCredential store ossuser

Exemplo de Como Utilizar

Com as wallets criadas e configuradas, os comandos zdmcli migrate database (incluindo -eval) podem ser executados com os parâmetros -sourcesyswallet e -osswallet, conforme exemplo a seguir:

zdmcli migrate database \
   -rsp /home/zdmuser/orcl_online_physical.rsp \
   -sourcenode lab01 \
   -sourcedb ORCL \
   -targetnode japao \
   -srcroot \
   -tgtauth zdmauth \
   -tgtarg1 user:opc \
   -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk \
   -tgtarg3 sudo_location:/usr/bin/sudo \
   -targethome /u01/app/oracle/product/19.0.0.0/dbhome_1 \
   -backupuser "oracleidentitycloudservice/<sua conta OCI>" \
   -sourcesyswallet $ZDM_BASE/wallet/sysuser \
   -osswallet $ZDM_BASE/wallet/ossuser \
   -eval

Neste exemplo, o ZDM solicitará apenas a senha do usuário root do servidor lab01 (source), devido ao método autenticação não ser por chave SSH.

Dica Para Não Precisar Informar Senha do root

Na documentação informa que se o acesso ao servidor de origem for com usuário root, deve-se utilizar a opção -srcroot ao invés de -srcauth zdmaut. Mas se copiarmos a chave pública do ZDM Node para o arquivo /root/.ssh/authorized_keys no servidor de origem, então conseguimos conectar no servidor com o usuário root, usando a chave ssh e o ZDM não solicitará nenhuma senha (Testado no ZDM 21.2).

O comando seria similar ao seguinte:

zdmcli migrate database \
   -rsp /home/zdmuser/orcl_online_physical.rsp \
   -sourcenode lab01 \
   -sourcedb ORCL \
   -targetnode japao \
   -srcauth zdmauth \
   -srcarg1 user:root \
   -srcarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk \
   -tgtauth zdmauth \
   -tgtarg1 user:opc \
   -tgtarg2 identity_file:/home/zdmuser/.ssh/zdm.ppk \
   -tgtarg3 sudo_location:/usr/bin/sudo \
   -targethome /u01/app/oracle/product/19.0.0.0/dbhome_1 \
   -backupuser "oracleidentitycloudservice/<sua conta OCI>" \
   -sourcesyswallet $ZDM_BASE/wallet/sysuser \
   -osswallet $ZDM_BASE/wallet/ossuser \
   -eval

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading