Este repositorio apoia um curso feito originalmente em Windows. O objetivo final nao e produzir uma aplicacao, mas aprender e reproduzir localmente o uso de Oracle, MySQL, ODI, SQL Developer, DBeaver e ferramentas relacionadas em um ambiente Ubuntu.
Ao adaptar instrucoes do curso, sempre documente a equivalencia entre o que o instrutor faz no Windows e como isso fica neste setup.
compose/oracle.yml: Oracle XE 18c em Docker.compose/mysql.yml: MySQL 8 em Docker.mysql/migrations/: migrations Flyway do MySQL.V1__sakila_base.sqle a baseline Sakila 1.5 incorporada em2026-05-21.scripts/: helpers para carregar env vars e executar Docker Compose.docs/: documentacao ativa do ambiente do curso, conexoes e compatibilidade..env.development: valores padrao versionados..env.local: overrides locais ignorados pelo Git.
Mantenha estes arquivos atualizados quando o setup mudar:
README.md: comandos principais e visao rapida.docs/course-environment.md: mapa curso Windows versus setup Ubuntu.docs/connections.md: credenciais, portas, services e como conectar.docs/odi-versioning.md: onde o ODI salva estado e como versionar exports.docs/mysql-odbc-ubuntu.md: notas sobre MySQL Connector/ODBC no Ubuntu.
Ao adicionar uma nova ferramenta do curso, registre:
- nome usado no curso;
- equivalente neste ambiente;
- onde executar, host ou VM;
- configuracoes de conexao;
- limitacoes ou diferencas importantes.
Quando uma senha ou credencial operacional for descoberta durante o curso, registre em docs/connections.md com o contexto correto. Diferencie senha de wallet, senha de banco e senha de usuario interno do ODI.
Quando objetos ODI forem criados no curso, mantenha exports XML/Smart Export em odi/exports/ apenas como backup local. Essa pasta e ignorada pelo Git; documente o processo, nao o estado exportado. Nao trate a VM, wallet local ou dumps binarios como fonte principal de versionamento.
npm install: instala dependencias locais.npm run oracle:up: inicia Oracle XE.npm run oracle:connect: conecta no Oracle usandoORACLE_CONNECT_*.npm run oracle:down: para Oracle.npm run mysql:up: inicia MySQL.npm run mysql:connect: conecta como usuario app.npm run mysql:connect:root: conecta como root.npm run mysql:migrate: aplica migrations Flyway.npm run mysql:migrate:info: mostra estado das migrations.npm run odi:exports:sync: copia exports ODI da VM paraodi/exports/.
Scripts devem carregar .env.local quando existir e permitir que ele sobrescreva .env.development.
Use:
scripts/with-env.shpara comandos que precisam de env vars.scripts/compose.shpara comandos Docker Compose.
Nao duplique a logica de leitura de .env.local diretamente no package.json.
Use YAML, JSON, Shell e Markdown simples. Preserve indentacao de 2 espacos em JSON/YAML. Para novas migrations MySQL, siga o padrao Flyway:
V2__descricao_da_mudanca.sql
Depois que uma migration for aplicada, trate o arquivo como append-only: crie uma nova migration para mudancas futuras.
Nao ha testes automatizados. Valide mudancas com comandos praticos:
node -e "JSON.parse(require('fs').readFileSync('package.json', 'utf8'))"scripts/compose.sh compose/oracle.yml configscripts/compose.sh compose/mysql.yml confignpm run mysql:migrate:infonpm run oracle:connect
Quando alterar conexoes, confirme no banco:
SELECT sys_context('USERENV', 'CON_NAME') FROM dual;