1

私は以下のように私のplsqlブロックを持っています:

DECLARE
CURSOR cdrimei IS select distinct(table_name) as tname from user_tab_columns 
where column_name = 'CALLED_NUMBER_TIPO_ABONADO' and table_name not like '%_V' order by table_name;
BEGIN
FOR i in cdrimei
LOOP

execute immediate 'ALTER TABLE '||i.tname||' DROP (IMEI_CHAIN ,IMEI_STOLEN)';
execute immediate 'ALTER TABLE '||i.tname||' ADD (IMEI_CHAIN varchar2(255),IMEI_STOLEN varchar2(255))';

END LOOP;
END;
/

これを実行した後、私は以下のエラーに直面しています:

ORA-39726: unsupported add/drop column operation on compressed tables

圧縮テーブルの意味がわかりません。

4

1 に答える 1

2

圧縮されたテーブルには、管理者ガイドに記載されているいくつかの制限があります。

圧縮されたテーブルに列を追加する場合、次の制限が適用されます。

  • 基本的な圧縮 - 追加された列にデフォルト値を指定することはできません。

  • OLTP 圧縮 - 追加された列にデフォルト値が指定されている場合、その列は NOT NULL である必要があります。デフォルト値を持つ追加された null 許容列はサポートされていません。

圧縮されたテーブルで列を削除する場合、次の制限が適用されます。

  • 基本的な圧縮 - 列の削除はサポートされていません。

  • OLTP 圧縮 - DROP COLUMN はサポートされていますが、データベースは内部的に列 UNUSED を設定して、長時間実行される圧縮解除および再圧縮操作を回避します。

于 2013-07-10T07:22:58.220 に答える