- ベストアンサー
oracle ダンプファイルのサイズとインポート先の表領域の使用サイズの関係
- あるダンプファイル(2.5GB)をオラクルDBへimportしたら、そのDBの表領域が10GBほど使用されました。
- 2.5GBのものをimportしたのに、なぜここまで表領域を消費するのでしょうか?(これまでこのようなことはありませんでした。)
- 表領域の使用サイズをもっと少なくするにはどうすればよいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ExportファイルのサイズとImport後のサイズは同期しません。よくある誤解です。 ExportファイルにはCreate文とInsert文が書かれています。 Create文にテーブルの初期サイズが設定されてます。初期サイズはCreate時に確保されます。データが少なくても(=Insert文が少ない)初期サイズが大きければテーブルのサイズも大きくなってしまいます。 もちろん、索引のサイズが大きい可能性はあります。 ただ、索引がデータ量の4倍のサイズになるとは思えません。 show=yでインポートを行うと、Create文が表示されるので、そこの初期エクステントを調べればわかると思います。 >インデックスをインポートしないようにすると >DBへデータを入れたあとにインデックスがきかなくならないのでしょうか? 索引が存在しないので当然、索引検索は行われません。 >それともインポート後に検索したときに自動で >つくものなのでしょうか? 明示的に作成しない限り自動で作成はされません。
その他の回答 (1)
- SaKaKashi
- ベストアンサー率24% (755/3136)
エクスポートした表にインデックスがあるのでは。 エクスポートで作成されるダンプファイルには表、索引の定義とデータのみが含まれます。 インポートで表が作成されてデータがインサートされ、索引が作成されます。 エクスポート時にINDEXES=Nを指定してエクスポートしたダンプファイルをインポートしてみてください。 あ、一度インポートしているなら、表を削除してから試してくださいね。表を消さないと索引も残っているので、INDEXES=Nでエクスポートしても、インポートで同じ結果になりますから。
補足
早速の回答ありがとうございます。 重ねての質問で恐縮ですが、 インデックスをインポートしないようにすると DBへデータを入れたあとにインデックスがきかなくならないのでしょうか? それともインポート後に検索したときに自動で つくものなのでしょうか? インデックスについてよくわからなくて。
補足
回答ありがとうございます。 昨日、dba_segmentsで各オブジェクトのサイズを確認したところ、 すべてあわせて10GBほどありましたので、おっしゃるとおり私の勘違いでした。 重ねて質問させていただきたいのですが、 不要なデータを削除した上で、compress=nを指定して再度エクスポートしたのですが、 使用していないエクステントが解放されていないようです。 これはその初期エクステントが関係しているのでしょうか?