質問: ### 経緯 この度Oracleを最新版に移行する作業があり、 移行後のデータベースから exp コマンドでエクスポートしたファイルを、 移行後のデータベースへ imp コマンドでインポートしようとすると、 表が作成されない等のエラーが発生し正常にリストアできませんでした。 ``` exp user/pass@HOGE owner=HOGE direct=y file=HOGE.dmp --ユーザDROP & CREATE 処理-- imp user/pass@HOGE fromuser=HOGE touser=HOGE file=HOGE.dmp ignore=y ``` そこで、【RP Dump Browser Free for Oracle】というソフトでエクスポートしたDMPファイルを解析したところ、 「failed in parsing」「failed in analyzing dumpfile」等と、ファイルが破損している可能性が高いことがわかりました。 また、**direct=y**オプションを利用した場合に、 エクスポートしたDMPファイルが破損する場合もあるらしい。。。というのもわかりました。 スレッド: exp結果のファイルが壊れている そこで**direct=y**オプションを外したDMPファイルをインポートすると、 正常にインポート出来てしまいました。 ### 実現したいこと ここからが本題なのですが、 なぜDMPファイルが破損してしまうのかを調べる方法はあるのでしょうか? たまたま破損したというわけではなく、 何度エクスポートを行っても必ず破損したDMPファイルが作成されるため、 データベースの状態に問題があるのだろうと推測するのですが、 どこをどう調査したら良いのか入口すらわからない状態です。 ### 環境 [新環境] Oracle Database 12.2.0.1.0 Enterprise Edition [旧環境] Oracle Database 12.1.0.2.0 Standard Edition [旧環境] exp direct=y でエクスポートしたファイルを、 [新環境] impコマンドで正常にインポートが完了した状態。 ### 試したこと * [新環境]で [exp direct=y -> imp]はエラーが発生し、中途半端にリストアされる。(表が抜け落 ちる) * [新環境]で [exp direct=n -> imp]にてリストアは出来た。 * [新環境]で [expdp -> impdp]にてリストアは出来た。 * [旧環境]で「exp direct=y -> imp」の処理を行ってもエラーとはならない。 * [旧環境]のどの時点のDMPファイルを[新環境]へインポートしても、[新環境]から[exp direct=y]でエクスポートされたDMPファイルは破損する。 ### 追記 * [新環境]の12EEをアンインストールし12SE(12.2.0.1.0)をインストール、 [旧環境]データをimp 後に、[exp direct=y -> imp]するとリストアは出来た。
回答: 以下あたりは参照されていますか? リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用 異なるデータベース・リリース間のエクスポートとインポート インポート先のバージョンのユーティリティで、インポートもエクスポートも行う必要がありそうです。 内部的にはDUMPファイル中にバージョン情報を保持していて、それでチェックなどの制御を行っている模様。 荒業で対処した人もいるみたい。 バージョンの高いexpで作成したダンプファイルを取り込む方法