Oracle PostgreSQL

OracleからpostgresSQLへのDB移行

2022/04/23

PR



Ora2PG

最近 OracleからpostgresSQLへのDB移行について検証中の今日この頃です。

さて、Oracleさんを移行する場合、Ora2PGと言うツールがありまして今回はこのツールとOracleとpostgresSQLの違いについてです。

Ora2PGは何者?

Ora2PGと言うのはOracleからpostgresSQLへデータ移行する無料のツールなのですがPerlで動作するツールなので普段Windowsしか使っていないとおぎょぎょて感じです。使い方も説明しているサイト見ても理解できないゾ的な感じ。

でも、使ってみたら以外と簡単にOracleのDB定義DDL文やPLSQLなどが抜けるのです。

使った感じと方法のメモ

Ora2PGの使い方

※ちなみにWindows環境です。
 Oracleさんは設定してつながるようにしておいて下さい。 tnsnames.ora


1.ダウンロード
ストロベリーPerlとOra2PGが必要です。ダウンロードしてきましょう。
・ストロベリーPerl ・・・strawberry-perl-5.30.2.1-32bit-PDL.zip(こんなやつをダウンロードした)
・Ora2PG・・・ora2pg-master.zip

ダウンロードできたら適当なフォルダにいれて解凍しておいて下さい。

2.コマンドプロンプトからportableshell.bat を動かしMakefile.PL

これでC:直下にOra2PGと言うフォルダができ、この中に移行に使う設定ファイルOra2PG.confができます。このコンフィグを変えるといろいろ抜けるうです。
※Oracleの接続の設定なので見ればなんとなくわかりますね。


簡単にora2pg.confの中身の解説

# Set the Oracle home directory
# Set the Oracle home directory ORACLE_HOME c:\Oracle\bin
# Set Oracle database connection (datasource, user, password)
ORACLE_DSN dbi:Oracle:host=XXXXX;sid=XXXXX;port=1521 ORACLE_USER XXXXX ORACLE_PWD XXXXX
# Oracle schema/owner to use SCHEMA XXXXX

#------------------------------------------------------------------------------ # EXPORT SECTION (Export type and filters) #------------------------------------------------------------------------------
TYPE TABLE

 

3.実行

 コマンドプロンプトからora2pgでOracleから吐き出されるようです。
吐き出されるフォルダはストロベリーPerlのフォルダ。
実際にはora2pg.confで出力ファイル名なども変更できるようです。試行錯誤してみてください。



OracleとpostgresSQLの違い

・OracleのスキーマとユーザーがpostgresSQLではスキーマとロールになる。扱いも違う。・・・違いはまたこんど。
・OracleのPLSQLのUTL_FILEなどはpostgresSQLにはないので自作するか汎用的なものをさがすかが必要。
 使い方や利用方法にもよるが・・・・私は自作。
・Oracleは大文字postgresSQLは小文字がデフォルトぽい。変えれるポイがダブルクォーテーションで囲んだり厄介かも・・・デフォルトで使う方ことにする。
PLSQLやアプリなども大文字小文字で動かないなら統一する必要があるかも・・・。
・OracleでOKでもpostgresSQLでアウトになる項目名が1つあったぞ。データはエラーなく移行できたぽい。中身はサラッとしか見てないが・・・コンペアしろよ!!!
・VB(ODP.NET)はpostgresSQL(PLPGSQL)に変更になるのかな。結構なエラー出てました。VBの接続テストアプリはDB読めることは確認できました。
・OracleとpostgresSQLではデータのバーキューム機能が違う。

・日付・・・timestampでミリ秒までファイリングされる。フォーマット指定必要。
      0値のファイリングとNULLのファイリングの違いがある。

・plpgsqlでsqlに(+)は使えない。

・plpgsql中に関数(function)は書けない。別functionにする or BGIN ENDでメインに組み込む。

・text出力がめんどう(copyで書けるけど・・・)、csvやショートレンジファイルやログなど
・テーブルリード中に別テーブルリードできない。やり方はあるがOracleでうごくがポスグレはエラーになる。

 


まとめ

問題はまだまだあるかもしれないけど、移行はできそうな感じがしてきました。


お知らせ

アイシステムでは、既存システム調査からシステム開発や改修まで何でもやってます。
香川県なら直ちに飛んでいきます。
こんなのできる?あんなのできる?・・・
とかありましたらお問合せフォームからお気軽にお問合せ下さい。

-Oracle, PostgreSQL