Skip to content

antonbsa/data-integration-lab

Repository files navigation

data-integration-lab

Local data integration course lab with Oracle XE, MySQL, ODI, Docker Compose, and Ubuntu compatibility notes.

course link: https://www.udemy.com/course/oracle-data-integrator-odi-12c-completo

Requirements

  • Docker
  • Node.js
  • VirtualBox, to run the ODI course VM
  • JDK 8u202, for tools that require the course-compatible Java runtime
  • p7zip-full, to extract the multipart ODI VM archive when starting from the course files
  • DBeaver, recommended for visual access to Oracle and MySQL

Optional tools:

  • SQL Developer, useful when the course depends on Oracle-specific screens
  • MySQL Connector/ODBC, only if an ODBC-based tool or DSN is required

Configuration

This project reads database settings from .env.development.

Local overrides can be placed in .env.local. When present, any variable defined there overrides the matching value from .env.development. .env.local is ignored by Git.

Env loading is centralized in scripts/with-env.sh; Docker Compose env-file handling is centralized in scripts/compose.sh.

Current variables:

  • ORACLE_CONTAINER_NAME
  • ORACLE_PASSWORD
  • ORACLE_APP_USER
  • ORACLE_APP_USER_PASSWORD
  • ORACLE_PORT
  • ORACLE_SERVICE
  • ORACLE_CONNECT_USER
  • ORACLE_CONNECT_PASSWORD
  • ORACLE_CONNECT_SERVICE
  • MYSQL_CONTAINER_NAME
  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD
  • MYSQL_PORT

MySQL is exposed on host port 3307 by default to avoid conflicts with a local MySQL service on 3306.

Example local override:

# .env.local
ORACLE_CONNECT_SERVICE=locadora_destino

MySQL Migrations

MySQL schema changes are tracked with Flyway in mysql/migrations/.

Flyway applies versioned SQL files in order and records what has already run in its schema history table. This keeps the local database reproducible and gives you a simple change history for future schema updates.

  • V1__sakila_base.sql is the initial Sakila baseline.
  • That baseline uses Sakila Sample Database version 1.5.
  • It was incorporated into this repository on 2026-05-21.
  • Add future changes as new files such as V2__add_customer_indexes.sql.

If sakila was already imported manually into your current MySQL volume, baseline it once before applying future migrations:

npm run mysql:migrate:baseline

To inspect or apply migrations:

npm run mysql:migrate:info
npm run mysql:migrate

For a clean rebuild from migrations only:

npm run mysql:reset
npm run mysql:up
npm run mysql:migrate

Usage

Install dependencies:

npm install

Start Oracle:

npm run oracle:up

Connect to Oracle:

npm run oracle:connect

Start MySQL:

npm run mysql:up

Connect to MySQL as app user:

npm run mysql:connect

Connect to MySQL as root:

npm run mysql:connect:root

View logs:

npm run oracle:logs
npm run mysql:logs

Prepare and sync ODI exports from the VM:

npm run odi:exports:prepare
# export again in ODI Studio to /home/oracle/odi-exports
npm run odi:exports:sync

Stop or reset either database:

npm run oracle:down
npm run oracle:reset
npm run mysql:down
npm run mysql:reset

Course Notes

This repository supports a course originally demonstrated on Windows. Local notes mapping the course tools to this Ubuntu setup are kept in:

  • docs/course-environment.md
  • docs/connections.md
  • docs/odi-versioning.md
  • docs/mysql-odbc-ubuntu.md

About

Ubuntu-based data integration lab for a Windows-oriented course, with Dockerized Oracle XE and MySQL, ODI VM notes, DBeaver/SQL Developer connection guides, and reproducible course environment documentation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages