8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c |その他| PL / SQL | SQL | RAC | WebLogic | Linux
ホーム “記事” 8i “ここ
Oracle 8iでは、テーブルから列を削除する機能が導入されました。これまでは、テーブル全体を削除する必要がありました。これで、列を未使用としてマークする(論理的削除)か、完全に削除する(物理的削除)ことができます。
- 論理的削除
- 物理的削除
- 考慮事項
論理的削除
大きなテーブルでは、列を物理的に削除するプロセスは非常に時間とリソースを消費する可能性があります。このため、論理的に削除することを決定できます。
alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);
これが完了すると、列はユーザーに表示されなくなります。後日、列を物理的に削除する時間があれば、これは可能です。以下を使用して実行します。
alter table table_name drop unused columns;
大きなテーブルでは、指定された数の後にチェックポイントを強制するCHECKPOINTオプションを使用して、蓄積される元に戻すログの量を減らすことができます。行が処理されました。
DBA_UNUSED_COL_TABS
ビューを使用して、テーブルごとの未使用の列の数を表示できます。
物理的削除
列を物理的に削除するには、単一の列を削除するか複数の列を削除するかに応じて、次の構文のいずれかを使用できます。
alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);
テーブルの列を削除すると、そのテーブル内の未使用のすべての列が同時に削除されます。
考慮事項
列を削除しても、ブロック内に使用可能な空き領域が追加されない場合があります。列が小さい場合、再利用できない可能性のあるスペースの小さなチャンクのみが各ブロックに表示されます。これが再利用のために解放される唯一の方法は、テーブルを再構築/移動することです。列を使用不可としてマークしてから、テーブルを再構築する方が効率的です。デフォルトでは、移動はオンライン操作ではありません。
alter table table_name set unused (column_name);alter table table_name move;
以降のデータベースバージョンでは、移動操作をオンラインで実行できます。
alter table table_name set unused (column_name);alter table table_name move online;
これがお役に立てば幸いです。よろしくティム…
トップに戻る。