Oracle 11 g空のテーブル、少数のテーブルをエクスポートする解決策
1775 ワード
ORACLE 11 gには、テーブルにデータがない場合にsegmentを割り当てず、スペースを節約する新しい特性があります.
解決方法:
1.insert一行、さらにrollbackでsegmentが発生
この方法は,空のテーブルにデータを挿入し,削除するとsegmentを生成する.エクスポート時に空のテーブルをエクスポートできます.
2.deferred_の設定segment_牙列缺损
注意:この値を設定すると、前にインポートした空のテーブルは機能せず、エクスポートできません.後に追加したテーブルにのみ機能します.以前の空のテーブルをエクスポートするには、最初の方法しか使用できません.
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';
解決方法:
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';