列の削除

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;

これがお役に立てば幸いです。よろしくティム…

トップに戻る。

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です