Ora2pg

Build and Run ora2pg from source on WSL

  1. Update basics and install dependencies

    1
    sudo apt update && sudo apt install -y build-essential perl cpanminus git make unzip postgresql-client libdbi-perl libssl-dev libaio1
  2. Install oracle instant client inside WSL
    Oracle Instant Client download page

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo mkdir -p /opt/oracle
    # download instantclient-basic*linux*.zip and instantclient-sdk*linux*.zip to current path
    sudo unzip -d /opt/oracle instantclient-basic*linux*.zip
    sudo unzip -d /opt/oracle instantclient-sdk*linux*.zip
    IC=$(echo /opt/oracle/instantclient_*)
    echo "export LD_LIBRARY_PATH=$IC:\$LD_LIBRARY_PATH" >> ~/.bashrc
    echo "export PATH=$IC:\$PATH" >> ~/.bashrc
    echo "export ORACLE_HOME=$IC" >> ~/.bashrc
    source ~/.bashrc
  3. Enable user-local Perl libs (one-time + current shell)

    1
    2
    3
    cpanm --notest --local-lib=~/perl5 local::lib
    echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.bashrc
    eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"
  4. Install Perl oracle driver

    1
    2
    cpanm --notest DBD::Oracle
    perl -MDBD::Oracle -e 'print $DBD::Oracle::VERSION,"\n"'
  5. Build ora2pg from source

    1
    2
    3
    4
    5
    6
    git clone https://github.com/darold/ora2pg.git
    cd ora2pg
    cpanm --notest --installdeps .
    perl Makefile.PL && make
    sudo make install # or use ./bin/ora2pg in this repo
    ora2pg -v
  6. Initialize a project, and config

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ora2pg --project_base . --init_project myproj
    code ./myproj/config/ora2pg.conf
    # set:
    code myproj/config/ora2pg.conf
    # set ORACLE_DSN, ORACLE_USER, ORACLE_PWD, SCHEMA, etc.
    # ORACLE_DSN=dbi:Oracle:host=HOST;port=1521;service_name=SERVICE
    # ORACLE_USER=...
    # ORACLE_PWD=...
    # SCHEMA=YOUR_SCHEMA
  7. Run ora2pg

    1
    2
    ora2pg -c myproj/config/ora2pg.conf -t SHOW_VERSION
    ora2pg -c myproj/config/ora2pg.conf -b myproj/output -o out.sql

DEBUG ora2pg with vscode and WSL

  1. IDE
    Use VS Code Remote – WSL. Install a Perl language server (Perl Navigator) and Perl debug adapter from the Marketplace.

  2. Download repo, install deps

    1
    2
    3
    cd ~ && git clone https://github.com/darold/ora2pg.git
    cd ora2pg
    cpanm --notest --installdeps .
  3. Install debugger helper

    1
    cpanm --notest PadWalker
  4. VS Code debug (F5)
    Create .vscode/launch.json (works with Perl debug adapter):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    "version": "0.2.0",
    "configurations": [{
    "name": "Run ora2pg (F5)",
    "type": "perl",
    "request": "launch",
    "program": "${workspaceFolder}/scripts/ora2pg",
    "args": [
    "-Ilib",
    "-c", "${workspaceFolder}/../migrate/myproj/config/ora2pg.conf",
    "-t", "SHOW_VERSION"
    ],
    "cwd": "${workspaceFolder}",
    "env": {
    "PERL5LIB": "${workspaceFolder}/lib:${env:HOME}/perl5/lib/perl5",
    "ORACLE_HOME": "/opt/oracle/instantclient_23_9",
    "LD_LIBRARY_PATH": "/opt/oracle/instantclient_23_9"
    }
    }]
    }