- - PR -
Oracle10g 実データ数より多くエクスポートされる
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-14 20:53
こんばんは。ぴんふです。
Linux上のDB(Oracle10g)からexpコマンドでテーブルデータをエクスポートしたところ、 実際にテーブルに格納されている件数より多くエクスポートされました。 (500万件程度のテーブルで2万件ほど多くエクスポートされたというメッセージが出力) そのDMPデータを別サーバの同定義のテーブルにインポートしたところキー重複が発生しました。 エラーは出ていません。 コマンドは exp XXXX/XXXX@XXXXXX tables=TBL_A file=TBL_A.dmp log=TBL_A.log という具合です。 「Oracle10g exp 件数」等で検索しましたが同様の状況についてはヒットしませんでした。 似たような経験をされた方がいらしたらアドバイスをお願いします。 | ||||
|
投稿日時: 2008-03-17 12:58
若干訂正します。
多かった件数は約2000件でした。 エラーが出ていないというのは エクスポート時にエラーが出ていないということです。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2008-03-17 15:24
インポート先のデータベースに同一テーブルに重複分のデータが既に登録済みという ことはありませんか? | ||||
|
投稿日時: 2008-03-17 16:06
YASUOKAさん、ご返答ありがとうございます。
インポート前にTRUNCATEしているのでそれは無いです、業務上の制約でexpしたデータをワークテーブルにインポートしての比較もできない状態なので困っている次第です。 | ||||
|
投稿日時: 2008-03-17 18:09
エクスポートした時点で想定より多かったのではないでしょうか。
expコマンドを発行する直前でcountを取って確認してみてはどうでしょうか。 ステップ毎に確認するのが確実かと思います。 1. EXP元の件数取得 2. EXP 3. IMP先をTRUNCATE 4. IMP先の件数取得 5. IMP | ||||
|
投稿日時: 2008-03-17 19:44
いーたさんご返答ありがとうございます。
お勧めいただいた方法で2.まで試しました。 1.の件数(SELECT結果)と 2.の件数(expのログに出力されるXXXX行エクスポートされましたのXXXX行) において、やはり2.の件数のほうが焼く2000件多い状態です。 件数に差異がある状態なので3.以降は試していません。 (何か他の環境的な要因があるかと思い、いったんテーブルスペースを再作成、データを再投入してからexpを試したり、expではなくData Pumpを使ったりもしましたが、結果は上記と同じでした) サポートに聞くしかないのでしょうか・・・? | ||||
|
投稿日時: 2008-03-17 19:51
最近Oracle触ってないな。。。(あまり詳しくないですが)
expのオプションでCONSISTENTをYに設定して実行してはどうでしょうか? (ロールバックセグメント消費するらいいので注意) 分離レベルが低いのでファントムが発生しているのではと。。。 | ||||
|
投稿日時: 2008-03-17 20:06
Oracleのインポートではどうか分かりませんが、PostgreSQLではインポート処理時に
トリガー(INSERTトリガー)が起動する為、デュプリケートエラーが発生する事があり ます。(INSERT時に別テーブルへINSERT処理を行うトリガー) [ メッセージ編集済み 編集者: 上総 編集日時 2008-03-17 20:07 ] |