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
- 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
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_NAMEORACLE_PASSWORDORACLE_APP_USERORACLE_APP_USER_PASSWORDORACLE_PORTORACLE_SERVICEORACLE_CONNECT_USERORACLE_CONNECT_PASSWORDORACLE_CONNECT_SERVICEMYSQL_CONTAINER_NAMEMYSQL_ROOT_PASSWORDMYSQL_DATABASEMYSQL_USERMYSQL_PASSWORDMYSQL_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_destinoMySQL 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.sqlis 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:baselineTo inspect or apply migrations:
npm run mysql:migrate:info
npm run mysql:migrateFor a clean rebuild from migrations only:
npm run mysql:reset
npm run mysql:up
npm run mysql:migrateInstall dependencies:
npm installStart Oracle:
npm run oracle:upConnect to Oracle:
npm run oracle:connectStart MySQL:
npm run mysql:upConnect to MySQL as app user:
npm run mysql:connectConnect to MySQL as root:
npm run mysql:connect:rootView logs:
npm run oracle:logs
npm run mysql:logsPrepare 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:syncStop or reset either database:
npm run oracle:down
npm run oracle:reset
npm run mysql:down
npm run mysql:resetThis repository supports a course originally demonstrated on Windows. Local notes mapping the course tools to this Ubuntu setup are kept in:
docs/course-environment.mddocs/connections.mddocs/odi-versioning.mddocs/mysql-odbc-ubuntu.md