【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 impdp 使い方 – Google 検索


エラー内容

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

接続先: 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:\dump\sample.dump"内にあります

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

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

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

VERSION=12.1.0

を追加します。

Data Pumpを利用してOracle 11g R2からexpdpで取得したバックアップを、10g R2にimpdpで移行しようとしたところエラーとなってしまいました。(そもそも11gから10gが無理あるような‥) ORA
Data Pumpの注意点。下位バージョンへデータを移行する際はVERSIONパラメータによ... - www.lesstep.jp

使用例

# 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

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




コメント

このブログの人気の投稿

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

RHEL 7でスタティック(静的)ルートを追加する4つの方法

SQLPlusでのOracleリモート接続とSQLファイルを実行する方法