背景
oracleに作成されたテーブルをpostgresに移動しようとしたところ、型の違いなどで単純にoracleのにテーブル作成したときのddl実行では移動させられなかった。
ora2pgというものを使えば、ある程度自動で変換してくれるとのことだったので、ora2pgを使ってみました。
本記事は、【windows】【データベース移行】oracleからpostgresqlへ
をもとに作成しています、リンク先の手順で、途中私が詰まってしまったところに対して
補足で解説を入れていきたいと思います。
手順
1.perl環境のインストール
Strawberry Perl for Windowsをインストール
この時32bitと64bitどちらを選択するかはoracleのbitに合わせる必要があります。
私は、oracleが32bitなのに64bitをインストールしてしまい、子1時間ほど苦戦しました。
コマンドプロンプトで
perl --version
を実行、バージョンが出てきたらOK
2.関連モジュールのインストール
コマンドプロンプトで以下を実行。
CPAN install Time-Hires
CPAN install DBI
CPAN install DBD::Oracle
私の環境ではproxyを通す必要があったのですが、proxyもうまく通せなかったので、
Strawberry Perl+Proxy接続環境でCPANモジュールをインストールする
を参考に、以下のモジュールを直接ダウンロードしてインストールしました。
3.環境変数の追加
以下の環境変数を追加
パス名:ORACLE_HOME
C:\oracle\product\11.2.0\client_1\
パス名:LD_LIBRARY_PATH
C:\oracle\product\11.2.0\client_1\LIB
※この部分リンク先の記事の設定値と異なります。
4.ora2pgのインストール
ora2pgをgitからzipファイルをダウンロードして適当な場所に解凍。
展開したディレクトリまで移動して、perlを使ってインストール
cd C:¥ora2pg-19.0
perl Makefile.PL
gmake
gmake install
ora2pg --version
5.ora2pgの設定
インストールが完了すると、展開したディレクトリ内に[ora2pg_dist.conf]ファイルが出来ているので、コピーして[ora2pg.conf]にリネーム、ファイルを開いて以下の設定を自分の環境に変更する。
ORACLE_HOME [windowsOSに通したパス]
ORACLE_DSN dbi:Oracle:host=[ホスト名]:sid=[sid名(XE等)]
ORACLE_USER [ユーザー名]
ORACLE_PWD [パスワード]
SHEMA [スキーマ名(通常はユーザー名と同じ)]
※ORACLE_HOMEは環境変数に指定したものが勝手に入っています。
設定が完了したら、以下のコマンドを実行して接続確認
ora2pg -c ora2pg.conf -t SHOW_VERSION
Oracle database 11g Release 11.2.0.1.0
6.ora2pgの実行
コマンドプロンプトでora2pg展開ディレクトリに移動し以下のコマンドを実行
ora2pg -c ora2pg.conf
そのまま放置しておくとディレクトリ直下にoutput.sqlというファイルが作成されていて、
その中にスクリプトが記載されていました、必要な部分だけ
postgresで実行して無事作成に成功しました。