サイトアイコン IT NEWS

【Oracle】dumpを下位バージョンでインポートするとエラーになる

oracle-impdp-error

データベースに限らずバージョンは上がっていくものと思っているが、ひょんなことから、Oracleでエクスポートしたデータを下位バージョンインポートした時のお話です。
結論から言うと、エラーが発生してインポートに失敗しました。

impdpコマンドでインポート

OSWindows 10で、Oracle 12.2系でエクスポートしたdumpファイルを、impdpコマンドを利用して12.1系インポートしました。

impdp system/MANAGER@192.168.XXX.XXXX/ORADB directory=DUMP_DIR dumpfile=sample.dump logfile=sample.log table_exists_action=replace

impdpコマンドの使い方を知りたい方はググってくださいな。

エラー内容

上記のコマンドを実行すると以下のようなエラーが出ました。

接続先: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
ORA-39001: 引数値が無効です
ORA-39000: ダンプ・ファイル指定が無効です
ORA-39142: 互換性のないバージョン番号5.1が、ダンプ・ファイル"c:dumpsample.dump"内にあります

これはインポートする前に、expdpコマンドでエクスポートする際に事前にインポート先のOracleバージョンを指定しとけよってことらしいです。

バージョンを指定してエクスポート

expdpコマンドバージョンを指定すには、VERSIONオプションを使用します。
今回は下位バージョンである12.1にデータをインポートしたいので、

VERSION=12.1.0

を追加します。

使用例

# before
expdp system/MANAGER@192.168.XXX.XXXX/ORADB directory=DUMP_DIR dumpfile=sample.dump logfile=sample.log job_name=job_sample
# after
expdp system/MANAGER@192.168.XXX.XXXX/ORADB directory=DUMP_DIR dumpfile=sample.dump logfile=sample.log job_name=job_sample VERSION=12.1.0

これでめでたくインポートできました!

モバイルバージョンを終了