Ingerindo metadados de um banco de dados Oracle no Data Catalog

Daniel Amaral
google-cloud-brasil
5 min readMar 22, 2023

A governança de dados eficiente tem se mostrado um ponto crítico no sucesso de projetos de Big Data. Conseguir documentar onde os dados estão armazenados e qual a finalidade deles é uma tarefa primordial, indiferente à localidade do data source. O Data Catalog é uma opção interessante para ajudar na governança de conjuntos de dados e neste post veremos como realizar a ingestão de metadados a partir de uma base Oracle fazendo uso de um conector open source.

Passo 1 — Diagrama da solução a ser construída

Passo 1 — Diagrama da solução a ser construída

1 — VM para execução de container baseado em imagem gratuita do Oracle XE.
*Vale mencionar que esse banco de dados Oracle poderia estar sendo executada no Oracle BMS, on premises ou em outras nuvens.

2 — VM para execução do conector que irá fazer a leitura de metadados.

3 — Service account key com a role necessária para escrita de metadados no Data Catalog

4 — Data Catalog

Passo 2 — Criação de VM com banco de dados de teste

Antes de prosseguir é importante ressaltar que o procedimento a seguir é apenas para fins de teste e nunca deveria ser utilizado em ambientes corporativos(nem mesmo em ambientes não produtivos). Veja a documentação sobre o Oracle XE

Vamos criar nossa base de dados para fins de teste. [Caso já possua pode pular para o passo 3].

Crie uma VM através do Cloud Shell utilizando comando abaixo.
Será criada a VM oraclexe.

gcloud compute instances create oraclexe   \
--zone=us-central1-a \
--machine-type=e2-medium \
--image=projects/cos-cloud/global/images/cos-101-17162-40-56 \
--provisioning-model=STANDARD \
--shielded-secure-boot \
--boot-disk-size=20GB \
--metadata=startup-script='sudo docker run -d --name myoracledb \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PWD=SENHA_SECRETA \
container-registry.oracle.com/database/express:21.3.0-xe'

Após a criação da VM ainda serão necessários cerca de 5 minutos para conclusão do download da imagem e execução do container com o banco de dados.

Acesse a VM oraclexe via SSH, e execute o comando algumas vezes…

sudo docker ps

Até obter um retorno semelhante com o que segue.

Passo 3 — Criação de usuário, objetos e carga de dados

Executar esses passos para criação de usuário/schema, objetos e carga de dados para fins de teste.

Passo 4 — Criação de VM com conector

A máquina que irá se comunicar com o Data Catalog precisa ter o Oracle Client e o conector datacatalog-oracle-connector instalados. Abaixo segue passo a passo para criação de uma VM no Google Cloud com a configuração que foi utilizada para testes e instalação do Oracle client.

Criar VM para execução do Oracle Client e Connector:

No Cloud Shell, execute o comando abaixo para criar a VM datacatalog-connector-vm:

gcloud compute instances create datacatalog-connector-vm \
--zone=us-central1-a \
--machine-type=e2-medium \
--shielded-secure-boot \
--subnet=default \
--network-tier=PREMIUM \
--image-family=rhel-7 \
--image-project=rhel-cloud \
--boot-disk-device-name=datacatalog-connector-vm

Agora vamos conectar na VM datacatalog-connector-vm via SSH e executar os seguintes passos:

Instalar o wget, nano e python3.

sudo yum install wget -y
sudo yum install nano -y
sudo yum install python3 -y

Baixar o Oracle client:

sudo wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm

Instalar o Oracle client:

sudo yum install oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm

Criar o arquivo de configuração:

sudo nano /etc/ld.so.conf.d/oracle.conf

No arquivo criado, incluir o conteúdo abaixo:

/usr/lib/oracle/21/client64/lib/

Carregar a configuração:

sudo ldconfig

Passo 5 — Configuração do conector:

De volta ao cloud shell crie uma service-account para ser usada pelo connector:

gcloud iam service-accounts create sa-datacatalog-connector \
--display-name="sa-datacatalog-connector"

Atribua a role Data Catalog Admin para a service account:

gcloud projects add-iam-policy-binding woven-ceremony-375618 \
--member="serviceAccount:sa-datacatalog-connector@woven-ceremony-375618.iam.gserviceaccount.com" \
--role="roles/datacatalog.categoryAdmin"

Crie uma chave para a service account recém criada. Um arquivo com chave será baixado automaticamente:

gcloud iam service-accounts keys create my-key.json \
--iam-account=sa-datacatalog-connector@woven-ceremony-375618.iam.gserviceaccount.com

Execute a cópia da chave para a VM datacatalog-connector-vm

gcloud compute scp --recurse my-key.json datacatalog-connector-vm: --zone us-central1-a

Agora podemos voltar para o console da VM datacatalog-connector-vm:

Instale o Virtualenv do Python:

sudo pip3 install virtualenv

Crie um novo Virtualenv:

virtualenv --python python3 mydemoenv

Ative o Virtualenv:

source mydemoenv/bin/activate

Instale o conector Oracle no Virtualenv:

mydemoenv/bin/pip install google-datacatalog-oracle-connector

Defina as variáveis de ambiente que serão utilizadas pelo conector:

export GOOGLE_APPLICATION_CREDENTIALS=data_catalog_credentials_file
export ORACLE2DC_DATACATALOG_PROJECT_ID=google_cloud_project_id
export ORACLE2DC_DATACATALOG_LOCATION_ID=google_cloud_location_id
export ORACLE2DC_ORACLE_SERVER=oracle_server
export ORACLE2DC_ORACLE_SERVER_PORT=oracle_server_port
export ORACLE2DC_ORACLE_USERNAME=oracle_username
export ORACLE2DC_ORACLE_PASSWORD=oracle_password
export ORACLE2DC_ORACLE_DATABASE_SERVICE=oracle_db_service

Exemplo com valores preenchidos:

export GOOGLE_APPLICATION_CREDENTIALS=credentials/my-sa.json
export ORACLE2DC_DATACATALOG_PROJECT_ID=woven-ceremony-123123
export ORACLE2DC_DATACATALOG_LOCATION_ID=us-central1
export ORACLE2DC_ORACLE_SERVER=10.121.12.12
export ORACLE2DC_ORACLE_SERVER_PORT=1521
export ORACLE2DC_ORACLE_USERNAME=meuusuario
export ORACLE2DC_ORACLE_PASSWORD=minhasenha
export ORACLE2DC_ORACLE_DATABASE_SERVICE=XE

Agora basta executar o conector para que os metadados sejam carregados no Data Catalog:

google-datacatalog-oracle-connector \
--datacatalog-project-id=$ORACLE2DC_DATACATALOG_PROJECT_ID \
--datacatalog-location-id=$ORACLE2DC_DATACATALOG_LOCATION_ID \
--oracle-host=$ORACLE2DC_ORACLE_SERVER \
--oracle-port=$ORACLE2DC_ORACLE_SERVER_PORT \
--oracle-user=$ORACLE2DC_ORACLE_USERNAME \
--oracle-pass=$ORACLE2DC_ORACLE_PASSWORD \
--oracle-db-service=$ORACLE2DC_ORACLE_DATABASE_SERVICE

Concluída a execução, um novo entry group do Data Catalog será criado. Nome e descrição podem ser atualizados conforme a necessidade.

No entry group foram criadas entradas referentes às tabelas e schemas carregados:

Além disso, tags foram criadas, comentários foram carregados e a URL de origem da base foi preenchida:

Conclusão

Neste post vimos o procedimento para carregar metadados de uma base Oracle no Data Catalog. Uma vez feita a carga dos metadados podemos usar as capacidades de otimização de governança e descoberta de dados oferecidas pela ferramenta.

Vale lembrar que utilizamos IPs públicos durante o procedimento em virtude de se tratar de uma demonstração. Em ambientes corporativos, mesmo que não produtivos, é altamente recomendado trabalhar apenas com IPs privados.

Outras opções de uso do conector utilizado podem ser verificadas no respectivo repositório público.

--

--