Instalação do Oracle XE 21c com Docker Compose e Execução do Scripts SQL para Limpeza
O Oracle XE (Express Edition) 21c é uma versão gratuita e leve do banco de dados Oracle, ideal para desenvolvimento e testes. Utilizando a imagem Docker gvenzl/oracle-xe:21-slim
, você pode rapidamente criar um ambiente Oracle em containers, automatizando a inicialização e execução de scripts SQL. Este artigo mostrará como instalar o Oracle XE 21c com Docker Compose e como configurar scripts para remover dados antigos.
Pré-requisitos
Antes de começar, certifique-se de que:
- O Docker e Docker Compose estão instalados no seu sistema.
- Você tem conhecimentos básicos de SQL para entender os scripts fornecidos.
Passo 1: Criando o Arquivo docker-compose.yml
A primeira etapa é configurar o Docker Compose para rodar o Oracle XE 21c e mapear os scripts SQL para inicialização automática.
Exemplo de docker-compose.yml
Crie um arquivo chamado docker-compose.yml
no diretório onde você deseja rodar o Oracle XE, com o seguinte conteúdo:
version: '3'
services:
oracle-xe:
image: gvenzl/oracle-xe:21-slim
container_name: oracle-xe
ports:
- "1521:1521" # Porta do banco de dados
- "5500:5500" # Oracle Enterprise Manager
environment:
- ORACLE_PASSWORD=MyPassword123 # Defina a senha padrão
volumes:
- ./init-scripts:/docker-entrypoint-initdb.d # Mapeia os scripts SQL
- ./data:/opt/oracle/oradata
restart: always
Explicação:
image
: A imagem do Oracle XE 21c.container_name
: Nome do container Oracle XE.ports
: Mapeia as portas do host para o container.environment
: Define a senha padrão para os usuáriosSYS
eSYSTEM
.volumes
: Mapeia um diretório local (./init-scripts
) para o diretório/docker-entrypoint-initdb.d
dentro do container. Qualquer script SQL ou shell script dentro deste diretório será executado automaticamente quando o container for iniciado.restart: always
: Garante que o container seja reiniciado automaticamente se falhar.
Passo 2: Criar Scripts SQL para Limpeza e Criação de Schema
Agora, vamos criar os scripts que serão executados quando o container for iniciado.
1. Script para Remover Dados Antigos
Este script irá percorrer todas as tabelas e outros objetos no schema atual e removê-los:
Crie um arquivo chamado clean_schema.sql
no diretório init-scripts
:
CREATE USER fake_user IDENTIFIED BY "senha_forte_2033" ;
GRANT CREATE SESSION TO fake_user;
alter session set "_oracle_script"=TRUE;
drop table APPQOSSYS.WLM_CLASSIFIER_PLAN;
drop table APPQOSSYS.WLM_FEATURE_USAGE;
drop table APPQOSSYS.WLM_METRICS_STREAM;
drop table APPQOSSYS.WLM_MPA_STREAM;
drop table APPQOSSYS.WLM_VIOLATION_STREAM;
DROP USER APPQOSSYS CASCADE;
DROP USER DBSFWUSER CASCADE;
DROP USER DGPDB_INT CASCADE;
DROP USER DIP CASCADE;
DROP USER DVF CASCADE;
DROP USER DVSYS CASCADE;
DROP USER GGSYS CASCADE;
DROP USER GSMADMIN_INTERNAL CASCADE;
DROP USER GSMCATUSER CASCADE;
DROP USER GSMUSER CASCADE;
DROP USER LBACSYS CASCADE;
DROP USER OPS$ORACLE CASCADE;
DROP USER REMOTE_SCHEDULER_AGENT CASCADE;
DROP USER SYS$UMF CASCADE;
DROP USER ANONYMOUS CASCADE;
Este oracle tem uma limitação de 12 GB, portanto, se precisar de algo maior, não será possível.