Build and Run ora2pg from source on WSL
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
Install oracle instant client inside WSL
Oracle Instant Client download page1
2
3
4
5
6
7
8
9sudo 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 ~/.bashrcEnable user-local Perl libs (one-time + current shell)
1
2
3cpanm --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)"Install Perl oracle driver
1
2cpanm --notest DBD::Oracle
perl -MDBD::Oracle -e 'print $DBD::Oracle::VERSION,"\n"'Build ora2pg from source
1
2
3
4
5
6git 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 -vInitialize a project, and config
1
2
3
4
5
6
7
8
9ora2pg --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_SCHEMARun ora2pg
1
2ora2pg -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
IDE
Use VS Code Remote – WSL. Install a Perl language server (Perl Navigator) and Perl debug adapter from the Marketplace.Download repo, install deps
1
2
3cd ~ && git clone https://github.com/darold/ora2pg.git
cd ora2pg
cpanm --notest --installdeps .Install debugger helper
1
cpanm --notest PadWalker
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"
}
}]
}