Executando o Data Pump em um Autonomous Database para o Object Storage

Nesse post vamos ver uma maneira de fazer um expdp em um Oracle Autonomous Database e salvando o dump no object storage.

Vamos começar pelo object storage. Primeiro vamos criar um bucket onde iremos salvar o dump. No console da OCI, do lado esquerdo, selecione Storage e depois Buckets. E na página que se abre clique em “Create Bucket”.

Dê um nome para o seu bucket e escolha as suas preferências:

Pronto. Bucket criado. Para que o nosso banco possa utilizar esse bucket vamos precisar informar a URI. Ela é formada da seguinte maneira:

https://objectstorage.{region}.oraclecloud.com/n/{namespace}/b/{bucket-name}/o/{file-name}.dmp

Para saber o seu namespace clique no canto superior direto no console da OCI, no ícone de uma pessoa e vai se abrir algumas informações, escolha Tenacy:

Agora, é só copiar o namespace para colocar na URI acima. Minha region é São Paulo, que no caso fica sa-saopaulo-1.

Mas, para que o nosso autonomous database possa usar esse bucket, vamos criar um Auth Token. Para isso, vá no meu do lado esquerdo novamente, selecione a opção Identity e depois users.

Escolha o seu usuário na lista e no menu do lado esquerdo clique em Auth Token.

Clique na opção “Generate Token”. Logo após dê um nome para o seu token e salve o token pois ele não poderá ser consultado novamente!

Agora, vamos criar uma credencial com o Auth Token gerado no Autonomous Database. Substitua

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'AuthToken'
  );
END;
/

E configure a credential para ser a default:

ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME'

Agora, tudo pronto, só executar o expdp. Para isso, vamos conectar em uma máquina com o client Oracle(versão 18.3 ou maior), e onde já tem configurado o tnsnames.ora e a wallet. Lembre de alterar a sua uri.

expdp admin@atp_high \
     dumpfile=export.dmp
     logfile=export.log \
     directory=data_pump_dir 

O dump foi realizado, mas agora precisamos mover ele para o object storage de uma maneira bem simples:

BEGIN
  dbms_cloud.put_object(
    credential_name => 'DEF_CRED_NAME',
    object_uri      => 'https://objectstorage.{region}.oraclecloud.com/n/{namespace}/b/{bucket-name}/o/{file-name}.dmp',
    directory_name  => 'data_pump_dir',
    file_name       => 'export.dmp');
END;
/

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.