【お題】引っかけ問題(締め切り10月27日(日)23時)

oracle ダンプファイルのサイズとインポート先の表領域の使用サイズの関係
あるダンプファイル(2.5GB)をオラクルDBへimportしたら、
そのDBの表領域が10GBほど使用されました。
2.5GBのものをimportしたのに、なぜここまで表領域を消費するのでしょうか?
(これまでこのようなことはありませんでした。)
表領域の使用サイズをもっと少なくするにはどうすればよいのでしょうか?

エクスポート時のコマンド
exp aaaa/aaaa file=bbbb.dmp log=exp_cccc.log consistent=y

インポート時のコマンド
imp aaaa/aaaa file=bbbb.dmp log=imp_cccc.log

エクスポート時に「compress=n」をつけたり、
インポート時に「ignore=y」をつけたりしたのですが、
とくに変化はありませんでした。

A 回答 (2件)

ExportファイルのサイズとImport後のサイズは同期しません。

よくある誤解です。

ExportファイルにはCreate文とInsert文が書かれています。
Create文にテーブルの初期サイズが設定されてます。初期サイズはCreate時に確保されます。データが少なくても(=Insert文が少ない)初期サイズが大きければテーブルのサイズも大きくなってしまいます。

もちろん、索引のサイズが大きい可能性はあります。
ただ、索引がデータ量の4倍のサイズになるとは思えません。
show=yでインポートを行うと、Create文が表示されるので、そこの初期エクステントを調べればわかると思います。

>インデックスをインポートしないようにすると
>DBへデータを入れたあとにインデックスがきかなくならないのでしょうか?
索引が存在しないので当然、索引検索は行われません。

>それともインポート後に検索したときに自動で
>つくものなのでしょうか?
明示的に作成しない限り自動で作成はされません。

この回答への補足

回答ありがとうございます。
昨日、dba_segmentsで各オブジェクトのサイズを確認したところ、
すべてあわせて10GBほどありましたので、おっしゃるとおり私の勘違いでした。
重ねて質問させていただきたいのですが、
不要なデータを削除した上で、compress=nを指定して再度エクスポートしたのですが、
使用していないエクステントが解放されていないようです。
これはその初期エクステントが関係しているのでしょうか?

補足日時:2010/09/09 08:19
    • good
    • 0

エクスポートした表にインデックスがあるのでは。


エクスポートで作成されるダンプファイルには表、索引の定義とデータのみが含まれます。
インポートで表が作成されてデータがインサートされ、索引が作成されます。
エクスポート時にINDEXES=Nを指定してエクスポートしたダンプファイルをインポートしてみてください。

あ、一度インポートしているなら、表を削除してから試してくださいね。表を消さないと索引も残っているので、INDEXES=Nでエクスポートしても、インポートで同じ結果になりますから。

この回答への補足

早速の回答ありがとうございます。
重ねての質問で恐縮ですが、
インデックスをインポートしないようにすると
DBへデータを入れたあとにインデックスがきかなくならないのでしょうか?
それともインポート後に検索したときに自動で
つくものなのでしょうか?
インデックスについてよくわからなくて。

補足日時:2010/09/07 23:29
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報