質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

2回答

4410閲覧

expコマンド でエクスポートしたDMPファイルが破損する原因と、それを調査する方法

cha-ra

総合スコア40

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/04/04 03:00

編集2022/01/12 10:55

経緯

この度Oracleを最新版に移行する作業があり、
移行後のデータベースから exp コマンドでエクスポートしたファイルを、
移行後のデータベースへ imp コマンドでインポートしようとすると、
表が作成されない等のエラーが発生し正常にリストアできませんでした。

sql

1exp user/pass@HOGE owner=HOGE direct=y file=HOGE.dmp 2 3--ユーザDROP & CREATE 処理-- 4 5imp 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]するとリストアは出来た。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下あたりは参照されていますか?
リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用
異なるデータベース・リリース間のエクスポートとインポート

インポート先のバージョンのユーティリティで、インポートもエクスポートも行う必要がありそうです。
内部的にはDUMPファイル中にバージョン情報を保持していて、それでチェックなどの制御を行っている模様。

荒業で対処した人もいるみたい。
バージョンの高いexpで作成したダンプファイルを取り込む方法

投稿2018/04/04 05:11

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cha-ra

2018/04/04 05:44 編集

>異なるデータベース・リリース間のエクスポートとインポート こちらのリンク先にある【リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用例】の項目において、 今回の場合は「9.0.1 -> 9.0.2、9.0.1、9.0.2」の行にあたりますので、 【旧環境(12.1.0.2)】でexpし、【新環境(12.2.0.1)】でimpした、、、というところまでは問題なかったのです。 問題なのは上記の後に、【新環境(12.2.0.1)】でexpし、【新環境(12.2.0.1)】でそのままimpした場合にエラーになることなのです。 わかりにくい書き方となってしまいすみません。
sazi

2018/04/04 06:10 編集

>旧環境(12.1.0.2)】でexpし、【新環境(12.2.0.1)】でimpした、、、というところまでは問題なかった >【新環境(12.2.0.1)】でexpし、【新環境(12.2.0.1)】でそのままimpした場合にエラーになる データ移行なら、1番目で問題ないならOKだと思いますけど、そうじゃないってことですか?
cha-ra

2018/04/04 06:46 編集

少なくとも見た目上は、データ移行に問題ありませんでした。 ただ、その後運用を開始した際に exp/imp ではデータのリストアが出来ないことが問題でした。 exp の際に[direct=y]オプションを利用した場合に、100%の確立でDMPファイルが破損し、インポートが出来ません。 [direct=y]オプションを外すと、正常なDMPファイルが作成されインポートできます。
sazi

2018/04/04 07:28

>旧環境(12.1.0.2)】でexpし、【新環境(12.2.0.1)】 では、「インポートには問題なかったが実際にはデータ破損している。」というのが質問の内容なのは分かりますが、 >【新環境(12.2.0.1)】でexpし、【新環境(12.2.0.1)】でそのままimpした場合にエラーになる というのも同じエラーの状況なのでしょうか?
sazi

2018/04/04 07:36

同じユーティリティを使用して、direct=yで行ってエラーになるというのはバージョンの違いをユーティリティが吸収できていないと推測されます。 従来型(direct=yを指定しない)であれば、selectでデータを取得するということなので、ある意味CSVのようなデータとなっていて、エラーが発生しないのでは無いかと推測。
cha-ra

2018/04/04 08:12 編集

データ破損していると「思われる」という状況です。 【新環境】内で exp/imp するとインポートエラーが発生します。 >同じユーティリティを使用して、direct=yで行ってエラーになるというのはバージョンの違いをユーティリティが吸収できていないと推測されます。 【新環境】が「Standard Edition 12.2.0.1」の場合は移行後のexp/impでエラーが発生しませんでしたので、 【Edition】が異なると同一の【Version】でもインポート時の内部状態も異なるということが、今回の原因ということですね。 その原因を特定するために、内部の状態をどう調査すれば良いか、 そもそもそんなことが出来るのかというのを知りたいのです。
sazi

2018/04/04 08:24 編集

少なくとも私にできるのは、起きている事象から原因を推測し、回避策になりそうなことを伝えるのみで、 原因特定についてアドバイスできるとしたら、早めにサポートに問い合わせした方がいいということ位です。 何れにせよ回避策を講じる必要があるので、それも合わせて問い合わせですね。
guest

0

一部だけですが、
exp/impは過去のバージョンとの互換の為に残っています。expdp/impdpが使えるバージョンなら処理時間が短いはずなので、expdp/impdpを使いましょう。
exp/expdpのバージョンで作られたdmpファイルは、それより古いバージョンのimp/impdpでは動作しません。

両バージョンのユーティリティ マニュアルを確認されては?

投稿2018/04/04 03:15

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cha-ra

2018/04/04 04:15

exp/imp は今後無くなると考えてますので、 ご指摘の通りゆくゆくは expdp/impdp に置き換えることになります。 出来ることなら exp/imp のままで行きたいのが現状ですが。 (セキュリティ的な面で仕方ないのでしょうが、運用上DMPファイルを取得するのに移動や手続き等で1時間以上かかったりすることまるので。。。expでローカルに直接バックアップをしたいというのが本音です) ただ、それとは別になぜDMPファイルが破損するのか? DMPファイルが破損する場合、どこをどう調査したら良いのか? ということが気になった次第です。
Orlofsky

2018/04/04 16:50 編集

dmpが壊れるのはバグかもしれません。Oracle製品のバグは良くあることです。サポート契約して必要なパッチがないか、オラクル社カスタマ・サポート・センターに問合せては?オラクル・サポートからの回答はサポートの了解を得ない限り公開することは禁止されていますのでご注意ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問