Skip to main content

Database Connections

MigratorXpress requires three database connections for every migration:

  1. Source Database -- the database you are migrating from.
  2. Target Database -- the database that receives the translated schema and data.
  3. Migration Tracking Database -- a SQL Server database that records every migration step for auditing and resumability.

Supported Databases

Source Databases

DatabaseParallel Transfer MethodNotes
PostgreSQLCtidNo key column required
OracleRowidThin and thick client modes; requires SELECT_CATALOG_ROLE for parallel transfers
SQL ServerStandardAlso usable as target and migration tracking
NetezzaNZDataSliceSource-only; default port 5480

Target Databases

DatabaseNotes
PostgreSQLDefault target for most migrations
SQL ServerSupports columnstore index options (cci_threshold, aci_threshold)

Migration Tracking Database

DatabaseNotes
SQL ServerRequired for all migrations; stores run history, task status, and resume state

Authentication File Format

Create a JSON file containing one entry per database connection. Each entry has a unique identifier (the JSON key), a ds_type, an auth_mode, and an info object with connection details.

{
"source_oracle": {
"ds_type": "oracle",
"auth_mode": "classic",
"info": {
"username": "$env{ORACLE_USER}",
"password": "$env{ORACLE_PASSWORD}",
"server": "oracle-prod.company.com",
"port": 1521,
"database": "PRODPDB"
}
},
"source_postgres": {
"ds_type": "postgres",
"auth_mode": "classic",
"info": {
"username": "$env{PG_USER}",
"password": "$env{PG_PASSWORD}",
"server": "pg-prod.company.com",
"port": 5432,
"database": "analytics"
}
},
"target_mssql": {
"ds_type": "mssql",
"auth_mode": "classic",
"info": {
"username": "$env{MSSQL_USER}",
"password": "$env{MSSQL_PASSWORD}",
"server": "sql-host.company.com",
"port": 1433,
"database": "target_db"
}
},
"source_netezza": {
"ds_type": "netezza",
"auth_mode": "classic",
"info": {
"username": "$env{NZ_USER}",
"password": "$env{NZ_PASSWORD}",
"server": "nz-host.company.com",
"port": 5480,
"database": "PROD_DB"
}
},
"migration_tracking": {
"ds_type": "mssql",
"auth_mode": "classic",
"info": {
"username": "$env{MIG_USER}",
"password": "$env{MIG_PASSWORD}",
"server": "sql-host.company.com",
"port": 1433,
"database": "migration_log"
}
}
}
Environment variable substitution

Use $env{VAR_NAME} in any string value to reference an environment variable at runtime. MigratorXpress raises an error if a referenced variable is not set. Plain-text values also work -- values without $env{ are returned as-is.

# Linux
export ORACLE_USER="migrator"
export ORACLE_PASSWORD="SecureP@ssw0rd"

# Windows (PowerShell)
$env:ORACLE_USER = "migrator"
$env:ORACLE_PASSWORD = "SecureP@ssw0rd"

Using the Auth File

Reference the file with --auth and point to individual entries by their ID:

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id source_oracle \
--target_db_auth_id target_mssql \
--migration_db_auth_id migration_tracking \
--source_schema_name SALES \
--target_schema_name sales \
--task_list translate create transfer diff

Security Best Practices

1. Credential Storage

  • Never commit credentials to version control.
  • Restrict credentials.json permissions:
    chmod 600 credentials.json
  • Use environment-specific auth files (dev, staging, prod).

2. Least Privilege

  • Create dedicated database users for MigratorXpress.
  • Grant only SELECT on source databases.
  • Grant CREATE, INSERT, UPDATE, DELETE on target databases.
  • Use a dedicated SQL Server database for migration tracking.

3. Network Security

  • Use SSL/TLS connections where supported.
  • Restrict database access by IP.
  • Use VPN or private networks for cross-environment migrations.

4. Password Management

  • Use strong passwords (12+ characters, mixed case, numbers, symbols).
  • Rotate passwords regularly.
  • Consider secret managers (AWS Secrets Manager, HashiCorp Vault, Azure Key Vault).

See Also

Copyright © 2026 Architecture & Performance.