OracleからPostgresqlへ移行 ora2pg


年末年始をかけて訳あってOracleで運用しているシステムを使い慣れたPostgrsqlへ移行。
ネットで調べるとora2pgというツールでPostgresqlの形式で出力できるようなので試してみた。

ora2pg

現在のOracleのバージョンなどは
Orcacle11g、正確には11.2.0.4.0である。
Oracle Linux上で動作している。

幸いにもコールドスタート用に準備していたバックアップ用のOracle Linuxがあったので運用しているシステムと同様の環境下でora2pgを動作させる事ができた。
これが本番環境しかないと色々と面倒である。

ora2pgを動作させるためにはいくつかのperlモジュールが必要なのでネットの情報を参考に

DBI
DBD:Pg
DBD::Oracle
String::Random
Compress::Zlib

をcpanでインストール。
DBD::Oracleだけは

cpan –fi DBD::Oracle

としないとインストールがうまくできなかった。

次にネットよりora2pgをダウンロード。
現在最新のバージョンは17.6、これを使用した。

http://ora2pg.darold.net/

ダウンロードしたファイルを展開し

sudo perl Makefile.pl
sudo make && make install

これで環境は整ったと思われたが、いざ変換用のスクリプトを起動してもエラーが出て正常に動作しない。
shared libがどうたらとかCan’t load~とか言われたので

/etc/ld.so.conf

にOracleのlibディレクトリを追記し

sudo ldconfig

することで何とか解決。
postgresqlのダンプファイルと同様の形式のファイルを出力することができた。

今回はLinux版のOracleからLinux版のPostgresqlなので文字のエンコードとか改行コードのようなものは特に問題なくできたようだけどWindows版のOracleからとかだとそのあたりも注意が必要だと思われる。
まぁとりあえず一度限りの事だから良いけどこの手の作業はすぐ忘れてしまうので一応メモ。

小規模なシステムでOracleである必要はないし不慣れなsqlplusと使わずに済むと思うとうれしいが半面Oracleに触れる機会が減るのでスキルが少し下がってしまうかも。
とはいえOracleマスターなどの肩書もないし自慢にもならんのだが。
Linux版のOracleは初期導入がかなり面倒だったのでその時は凄く勉強になったが数年前の事で忘れてるので次回もしOracleを使う事になったらWindows版を使用しようかと思う。