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;
/