Skip to content

danibaviera/oracle_sql_database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💾 Projeto Oracle SQL – Ambiente Docker + Visual Studio

Este repositório contém um projeto SQL desenvolvido no Visual Studio, utilizando uma imagem Oracle Database em Docker (Oracle Virtual Machine) para execução e testes locais.

O objetivo é demonstrar boas práticas de versionamento e automação de scripts SQL em um ambiente controlado, integrando o Oracle ao fluxo de desenvolvimento moderno.

🚀 Tecnologias e Ferramentas

  • Oracle Database (via imagem Docker)
  • Visual Studio como IDE principal
  • SQL e PL/SQL para modelagem e manipulação de dados
  • Scripts versionados e organizados por módulos/funções

Sobre o Projeto

Este projeto configura um ambiente Oracle Database Express Edition (XE) usando Docker.

📊 Schema HR (Human Resources)

Este projeto utiliza como referência o schema HR da Oracle, que é o schema de exemplo padrão usado na documentação e treinamentos oficiais. O schema HR representa um sistema de recursos humanos simplificado e é ideal para aprendizado e demonstrações.

Estrutura do Schema HR:

┌─────────────────┐
│   REGIONS       │
│  (region_id)    │
└────────┬────────┘
         │
         │ 1:N
         ▼
┌─────────────────┐
│   COUNTRIES     │
│  (country_id)   │
└────────┬────────┘
         │
         │ 1:N
         ▼
┌─────────────────┐      1:N      ┌─────────────────┐
│   LOCATIONS     │◄───────────────┤  DEPARTMENTS    │
│  (location_id)  │                │ (department_id) │
└─────────────────┘                └────────┬────────┘
                                            │
                                            │ 1:N
                                            ▼
                                   ┌─────────────────┐
                                   │   EMPLOYEES     │
                                   │  (employee_id)  │
                                   │                 │
                                   │  - manager_id   │◄─┐
                                   │  - job_id       │  │
                                   │  - salary       │  │
                                   └────────┬────────┘  │
                                            │           │
                                            │ Self-Join │
                                            └───────────┘
                                            │
                                            │ 1:N
                                            ▼
                                   ┌─────────────────┐
                                   │   JOB_HISTORY   │
                                   │                 │
                                   └─────────────────┘
                                            │
                                            │ N:1
                                            ▼
                                   ┌─────────────────┐
                                   │      JOBS       │
                                   │    (job_id)     │
                                   └─────────────────┘

Principais Tabelas:

  • EMPLOYEES: Dados dos funcionários (nome, salário, data de contratação, etc.)
  • DEPARTMENTS: Departamentos da empresa
  • JOBS: Cargos/funções disponíveis
  • LOCATIONS: Localizações físicas dos escritórios
  • COUNTRIES: Países onde a empresa opera
  • REGIONS: Regiões geográficas (Americas, Europe, Asia, etc.)
  • JOB_HISTORY: Histórico de cargos dos funcionários

Referências:

🔐 Configuração Inicial (PRIMEIRO ACESSO)

Antes de iniciar o Docker, você precisa configurar as senhas:

  1. Copie os arquivos de exemplo:

    cp docker-compose.example.yml docker-compose.yml
    cp scripts/01_create_user.example.sql scripts/01_create_user.sql
  2. Edite o docker-compose.yml e defina sua senha:

    • Altere ORACLE_PWD=SUA_SENHA_AQUI para sua senha escolhida
  3. Edite o scripts/01_create_user.sql (opcional):

    • Altere SUA_SENHA_APP_USER se quiser criar usuário adicional

⚠️ IMPORTANTE: Os arquivos docker-compose.yml e 01_create_user.sql estão no .gitignore e não serão enviados ao GitHub.

Requisitos

  • Docker Desktop instalado e em execução
  • Pelo menos 2GB de RAM disponível para o container
  • Espaço em disco suficiente (aprox. 10GB)

Configuração

1. Estrutura do Projeto

sql_oracle/
├── docker-compose.example.yml    # Template (VAI para o GitHub)
├── docker-compose.yml            # Suas senhas (NÃO VAI para o GitHub)
├── scripts/
│   ├── 01_create_user.example.sql  # Template (VAI para o GitHub)
│   └── 01_create_user.sql          # Suas senhas (NÃO VAI para o GitHub)
├── sql/                          # Seus scripts SQL personalizados
└── README.md

2. Credenciais Padrão

  • Host: localhost
  • Porta: 1521
  • SID: XE
  • Usuário SYSTEM: system
  • Senha: (definida no docker-compose.yml - variável ORACLE_PWD)
  • Enterprise Manager: http://localhost:5500/em

📝 NOTA: Nos comandos abaixo, substitua <SUA_SENHA> pela senha definida no arquivo docker-compose.yml

🚀 Guia de Inicialização Rápida

Passo 1: Iniciar o Oracle Database

docker-compose up -d

⏱️ IMPORTANTE: Na primeira vez, este comando pode demorar bastante (10-20 minutos):

  • Baixando a imagem do Oracle (2-3 GB)
  • Criando e configurando o banco de dados
  • Executando scripts de inicialização

Passo 2: Acompanhar a inicialização

docker-compose logs -f oracle-db

Aguarde até ver a mensagem: "DATABASE IS READY TO USE!"

Pressione Ctrl+C para sair dos logs sem parar o container.

Passo 3: Conectar ao banco quando estiver pronto

docker exec -it oracle-xe sqlplus system/<SUA_SENHA>@XE

Para sair do SQL*Plus, digite: EXIT


Comandos Detalhados

3. String de Conexão

Host: localhost
Port: 1521
SID: XE
Service Name: XEPDB1 (para PDB)
Username: system
Password: <SUA_SENHA>

4. Executar Scripts SQL

Método 1: Copiar e executar dentro do container

# Copiar script para dentro do container
docker cp seu_script.sql oracle-xe:/opt/oracle/scripts/

# Executar o script
docker exec -it oracle-xe sqlplus system/<SUA_SENHA>@XE @/opt/oracle/scripts/seu_script.sql

Método 2: Usar o volume mapeado

Coloque seus scripts na pasta sql/ e execute:

docker exec -it oracle-xe sqlplus system/<SUA_SENHA>@XE @/opt/oracle/scripts/seu_script.sql

Método 3: Scripts de inicialização automática

Coloque scripts .sql na pasta scripts/ antes de iniciar o container. Eles serão executados automaticamente na primeira inicialização.

5. Parar o Container

docker-compose down

Para remover também os dados (CUIDADO: remove todo o banco):

docker-compose down -v

Comandos Úteis

Verificar se o container está rodando

docker ps

Acessar o bash do container

docker exec -it oracle-xe bash

Ver logs em tempo real

docker-compose logs -f

Reiniciar o container

docker-compose restart

Backup do banco

docker exec oracle-xe sh -c "expdp system/<SUA_SENHA>@XE full=y directory=DATA_PUMP_DIR dumpfile=backup.dmp"

Alterando a Senha

Para alterar a senha do usuário SYSTEM:

  1. Modifique ORACLE_PWD no docker-compose.yml
  2. Recrie o container:
docker-compose down -v
docker-compose up -d

Troubleshooting

Container não inicia

  • Verifique se há RAM suficiente disponível
  • Verifique os logs: docker-compose logs oracle-db
  • Certifique-se que as portas 1521 e 5500 não estão em uso

"ORA-12541: TNS:no listener"

  • O banco ainda está inicializando. Aguarde alguns minutos.

Espaço em disco insuficiente

  • Limpe imagens Docker antigas: docker system prune -a

Recursos

About

Oracle SQL Project – Docker Environment + Visual Studio

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages