ora2pgとは
ora2pgとはOracleまたはMySQLからPostgreSQLへの移行を支援する移行ツールで、なんかいい感じに自動で型とか変換してくれるらしい。うれぴー
今回の目標
ora2pgを使ってOracleで使用していたテーブルやプロシージャを、PostgreSQLの形に変換できるようになることを目標とします。
ora2pgの実行に必要な下記3つのうち2つは既に用意してあるという前提のもと、Perlのインストールから始めます
- Oracle稼働環境
- PostgreSQL
- Perl(モジュールも含めて)のインストール
環境
・Windows10
・Oracle19c 32bit
・PostgreSQL 16.2
Perlのインストール
まずはStrawberry Perl for Windowsをインストールします。64bitと32bitの2つがあるので、Oracleに合ったやつを選びましょう。
Strawberry PerlのサイトにアクセスしたらZIP, Portable, special editions
をクリック。でっけぇ🍓
ダウンロードリンク一覧ページに飛ぶので目的にあったものをRecommendeddownloadsの中からダウンロードします。今回はバージョン5.32.1.1/32bitのMSIエディションを選択。
bitはOracleに合わせ、バージョンは最新のものを選びました。
ダウンロードしたstrawberry-perl-5.32.1.1-32bit.msi
をクリックするとインストーラーが起動するので「Next」を押して進みます。
次に「I accept the terms in the License Agreement」というチェックボックスが出てくるのでチェックを付けます。
次に、インストール先を指定します。今回はデフォルトのCドライブ直下に指定しました。最後に「Install」を押せばインストールが開始します。
インストールされているかの確認としてコマンドプロンプトに以下のコマンドを入力しましょう。
perl --version
バージョン情報が表示されればインストール作業は完了です。
This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x86-multi-thread-64int
関連モジュールのインストール
スタートメニューから「Strawberry Perl」というフォルダを見つけて、中にある「CPAN Client」を起動します。
「install モジュール名」でモジュールをインストールできるので、CAPN上で以下のコマンドを入力しましょう
cpan> install DBI
cpan> install DBD::Oracle
環境変数の追加
Windowsの設定
>システム
>詳細情報
>システムの詳細設定
>環境変数
で環境変数タブを開きます。「新規(N)」をクリックして環境変数を追加をします。
追加するパスはOracleのディレクトリの「\product\19.0.0\client_1」と、それから1つ下の層にあるlibです。もちろん人によって若干違うので注意。Oracleのパスが見つからないならOracle関連のソフトのプロパティの作業フォルダを見て探すといいかも。
変数 | 値 |
---|---|
ORACLE_HOME | C:\app\client\Administrator\product\19.0.0\client_1 |
LD_LIBRARY_PATH | C:\app\client\Administrator\product\19.0.0\client_1\lib |
OKを押して設定を反映させることも忘れずに。
ora2pgのインストール
ora2pgの公式サイトに行くかGitHubのページに飛んでora2pgをインストールします。
最終的にora2pgのGitHubに移動したら、<>Code
>Download ZIP
でZIPファイルをダウンロードします。
ZIPファイルを適当な場所で展開して、解凍されたファイルをCドライブ直下に移動させた後、コマンドプロンプトで展開したディレクトリに移動してからperlを使ってインストールを行います。
cd C:\ora2pg # パスは人それぞれ
perl Makefile.PL
gmake
gmake install
確認作業として以下のコマンドを入力しましょう。
ora2pg –version
バージョン情報が出力されればインストールは成功。
Ora2Pg v24.1
これ以降はずっと基本的にora2pgのディレクトリ上で作業を行いましょう
設定
ora2pgのディレクトリにora2pg.conf.dist
というファイルがあるはずなので、コピーと名前変更でora2pg.conf
というファイルを作成しましょう。
ora2pg.conf.dist
は変更や削除はしないで初期のまま残しておきましょう。(なのでコピーしてから名前変更をしている)
ファイルを開いて中身を 移行元の環境 に合わせて編集しましょう。
ora2pgくんはこの設定ファイルの中身をみて変換作業を行います。
ORACLE_HOME [環境変数タブで追加したパス]
ORACLE_DSN dbi:Oracle:host=[ホスト名]:sid=[sid名]; port=[ポート番号]
ORACLE_USER [ユーザー名]
ORACLE_PWD [パスワード]
SHEMA [スキーマ名(大抵はユーザー名と同じ)]
TYPE [移行したいオブジェクトのタイプ]
TYPEに関してはファイル内に説明のコメントがあるのでそれを参考にキーワードを追加しましょう。
ora2pgのディレクトリ上で以下のコマンドを入力して接続確認を行います。
ora2pg -c ora2pg.conf -t SHOW_VERSION
バージョン情報が出力されればおk。
変換
以下のコマンドを入力します。
ora2pg -c ora2pg.conf
バーとパーセンテージが表示されるのでしばらく待ちましょう。
ディレクトリ直下に作成されるoutput.sql
というファイルが変換後のファイルです。
ちなみに
ora2pg -c [設定ファイルのパス] -o [変換後の.sqlの名前] -t [エクスポートタイプのキーワード]
とすると設定ファイルを弄らなくても変換後のファイル名やエクスポートするオブジェクトのタイプを変更できるので使えると便利!!