Oracle 11 g空のテーブル、少数のテーブルをエクスポートする解決策

1775 ワード

ORACLE 11 gには、テーブルにデータがない場合にsegmentを割り当てず、スペースを節約する新しい特性があります.
解決方法:
1.insert一行、さらにrollbackでsegmentが発生
この方法は,空のテーブルにデータを挿入し,削除するとsegmentを生成する.エクスポート時に空のテーブルをエクスポートできます.
2.deferred_の設定segment_牙列缺损
SQL> show parameter deferred_segment_creation; 

NAME                            TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
deferred_segment_creation       boolean     TRUE 

SQL> alter system set deferred_segment_creation=false; 
     。 

SQL> show parameter deferred_segment_creation; 

NAME                            TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
deferred_segment_creation       boolean     FALSE

注意:この値を設定すると、前にインポートした空のテーブルは機能せず、エクスポートできません.後に追加したテーブルにのみ機能します.以前の空のテーブルをエクスポートするには、最初の方法しか使用できません.
 3. バッチ処理空のテーブル
(1)現在のユーザの下にあるすべての空のテーブルを問い合わせる
        select table_name from user_tables where num_rows='0';
(2)次のSQL文でクエリーを実行する
        select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;         select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
ここに空きテーブルがあるとしたらTABLE_1,TABLE_2,TABLE_3,TABLE_4.クエリの結果は次のとおりです.
        alter table TABLE_1 allocate extent;         alter table TABLE_2 allocate extent;         alter table TABLE_3 allocate extent;         alter table TABLE_4 allocate extent;
(3)上のalter SQL文を実行すればよい(4)現在のユーザの下にあるすべての空のテーブルを問い合わせると、空のテーブルはないはずselect'analyze table'||table_name||' compute statistics;' from user_tables;         select table_name from user_tables where num_rows='0';