Streamlined Oracle to PostgreSQL migration
Getting Started β’ Running the Migrator β’ Contact
CYBERTEC Migrator is a streamlined and user-friendly tool that helps you to organize and efficiently migrate multiple Oracle databases to PostgreSQL. In addition to migrating your data professionally and securely with minimum effort, CYBERTEC Migrator allows you to visually monitor and track the whole process at any time.
Do you want to know if the Migrator can migrate your Oracle database to PostgreSQL? Then get the Migrator Standard Edition, a free version of the CYBERTEC Migrator, follow the offline instructions provided in Getting Started section, and try it out.
The blog article Meet the CYBERTEC Migrator provides a good introduction on how to migrate Oracle's HR demo schema to PostgreSQL. Alternatively, you may want to watch the complementary CYBERTEC Migrator YouTube playlist.
For detailed information see the list of supported migration features for Oracle.
For older releases see Release Notes.
-
Migration Assessment:
- Quickly determine how much effort an individual migration encompasses
- Inspect the cost for discrete database objects and identify outliers
Note: The figures given by the assessment are only a rough estimation.
We will continue to tweak and improve these values as we collect experience and introduce new technologies, such as a PL/SQL parser. -
Migration Overview: List empty and non-empty schemas separately
Note: Empty schemas are now excluded per default
-
Migration Creation: Improve feedback for invalid connection strings
-
Migration Lifecycle:
- Defer the creation of functions after those of tables to allow for the use of the
%TYPEattribute - Enhance the migration log of the structure, integrity and logic stages to be on a par with those of the data stage
- Configure the
COPY FREEZEfunctionality introduced inv3.12.0for each individual table instead of the whole system. TheCORE_DATA_MIGRATOR_USE_COPY_FREEZEenvironment variable has subsequently been removed.
- Defer the creation of functions after those of tables to allow for the use of the
-
Miscellaneous: Rework the log output format and fidelity throughout the
corecontainer
- The Analyze step of the migration creation always shows
Jobsas pending - LOBs exceeding the maximum size of 500MB do not fail with an appropriate error message
- Setting the sidebar filter to
Indexdoes not include all indexes in the filter result - Usernames and passwords containing special characters cause the target connection check during migration creation to fail
- Deleting a migration after executing a stage fails with an unexpected error
CYBERTEC Migrator is distributed as a set of container images that are managed with the help of Docker Compose.
dockerdocker-compose(>= 1.27.0)git(>= 2.20.1)bash(>= 4.0)
The CYBERTEC Migrator images can be obtained via two channels
- Online installation via container registry
- From an offline installation package for environments in which networking restrictions are imposed
| π‘ | The Migrator Standard Edition is only available as offline installation package |
|---|
You need an account on the Docker Hub container image registry.
Please get in touch with us if your account has not been granted access to the respective images. Make sure you are logged in the Docker Hub registry with the correct user.
cat ~/password.txt | docker login --username <username> --password-stdin- Clone this git repository
- Change working directory to the previously cloned repository
- Generate default configuration
- Download and load container images
- Generate a self-signed TLS/SSL certificate or install a certificate (see FAQ for more details)
- Start the Migrator
β git clone https://github.com/cybertec-postgresql/cybertec_migrator β cd cybertec_migrator β ./migrator configure [OK] Generated environment file [INFO] Run './migrator install' to complete setup β ./migrator install [INFO] Pulling v3.13.0 Pulling core_db ... done Pulling core ... done Pulling web_gui ... done [OK] Pulled v3.13.0 [INFO] Upgraded to v3.13.0 [WARN] Could not find TLS/SSL certificate [INFO] Run './migrator configure --tls self-signed-cert' to generate a self-signed TLS/SSL certificate β ./migrator configure --tls self-signed-cert [INFO] Generating self-signed TLS/SSL certificate Creating cybertec_migrator_web_gui_run ... done Generating a RSA private key .+++++ ........................+++++ writing new private key to '/etc/nginx/certs/nginx.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:AT State or Province Name (full name) [Some-State]:Lower Austria Locality Name (eg, city) []:WΓΆllersdorf Organization Name (eg, company) [Internet Widgits Pty Ltd]:CYBERTEC PostgreSQL International GmbH Organizational Unit Name (eg, section) []:CYBERTEC Solutions Common Name (e.g. server FQDN or YOUR name) []: Email Address []:invalid@cybertec.at Creating cybertec_migrator_web_gui_run ... done [OK] Generated self-signed TLS/SSL certificate [INFO] Run './migrator up' to switch to new version [WARN] Switching will abort running migrations β ./migrator up Recreating cybertec_migrator_core_db_1 ... done Recreating cybertec_migrator_core_1 ... done Recreating cybertec_migrator_web_gui_1 ... done [OK] Started on 'https://localhost'Get your Migrator offline installation package. You can get the Migrator Standard Edition here for free.
For the Professional or Enterprise Edition get in touch with us to request download credentials.
- Extract the provided archive file
- Change working directory to newly created directory
- Generate default configuration
- Import container images from archive
- Generate a self-signed TLS/SSL certificate or install a certificate (see FAQ for more details)
- Start the Migrator
β tar xf cybertec_migrator-v3.13.0-standard.tar.gz β cd cybertec_migrator β ./migrator configure [OK] Generated environment file [INFO] Run './migrator install' to complete setup β ./migrator install --archive ../cybertec_migrator-v3.13.0-standard.tar.gz [INFO] Extracting upgrade information Loaded image: cybertecpostgresql/cybertec_migrator-core:v3.13.0-standard Loaded image: cybertecpostgresql/cybertec_migrator-web_gui:v3.13.0-standard Loaded image: postgres:13-alpine [INFO] Extracted upgrade information [INFO] Upgraded to v3.13.0-standard [WARN] Could not find TLS/SSL certificate [INFO] Run './migrator configure --tls self-signed-cert' to generate a self-signed TLS/SSL certificate β ./migrator configure --tls self-signed-cert [INFO] Generating self-signed TLS/SSL certificate Creating cybertec_migrator_web_gui_run ... done Generating a RSA private key .+++++ ........................+++++ writing new private key to '/etc/nginx/certs/nginx.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:AT State or Province Name (full name) [Some-State]:Lower Austria Locality Name (eg, city) []:WΓΆllersdorf Organization Name (eg, company) [Internet Widgits Pty Ltd]:CYBERTEC PostgreSQL International GmbH Organizational Unit Name (eg, section) []:CYBERTEC Solutions Common Name (e.g. server FQDN or YOUR name) []: Email Address []:invalid@cybertec.at Creating cybertec_migrator_web_gui_run ... done [OK] Generated self-signed TLS/SSL certificate [INFO] Run './migrator up' to switch to new version [WARN] Switching will abort running migrations β ./migrator up Recreating cybertec_migrator_core_db_1 ... done Recreating cybertec_migrator_core_1 ... done Recreating cybertec_migrator_web_gui_1 ... done [OK] Started on 'https://localhost'Use your web browser to access the Migrator on the URL shown in the terminal with migrator up. In our example it would be https://localhost.
The configuration provided with this repository starts the CYBERTEC Migrator on the standard HTTPS port. The EXTERNAL_HTTP_PORT variable in the .env file (generated by ./migrator configure) controls the choice of port on which the Migrator is served.
If you don't have access to an Oracle or PostgreSQL database to test the Migrator, use our Migrator demo database environment.
| Running migrations will be interrupted by applying upgrades |
|---|
Attention
If you upgrade from a Migrator version previous of 3.11.0 you have to create the TLS/SSL certificate after upgrading to the new version, before restarting the new Migrator../migrator update ./migrator upgrade # Don't forget the create or install a TLS/SSL certificate ./migrator configure --tls self-signed-cert ./migrator up
-
Online upgrade
- Update release information
- Upgrade to newest version
- Apply upgrade
./migrator update ./migrator upgrade ./migrator up
-
Offline upgrade
π‘ Installation archives also serve for upgrading the Migrator - Update release information
- Upgrade to version bundled in archive
- Apply upgrade
./migrator update --archive cybertec_migrator-vX.Y.Z.tar.gz ./migrator upgrade --archive cybertec_migrator-vX.Y.Z.tar.gz ./migrator up
If you have a questions maybe you want to check the Migrator FAQ. If you can't find the answer there you may have more luck in one of the existing questions.
Raising an issue is encouraged. We have templates to report bugs, requesting a new feature or for general questions.
Customers of the paid Migrator license may use the Migrator Service Desk.
The content of this repository is under the MIT License in case you have to adapt the deployment to your needs. The CYBERTEC Migrator delivered in the container images uses a proprietary license with an EULA.




