如果你有这个需求,要删除某一个表上的某些列,但是由于这个表拥有非常大量的数据,如果你在尖峰时间直接执行 ALTER TABLE ABC DROP (COLUMN);可能会收到 ORA-01562 - failed to extend rollback segment number string,
这是因为在这个删除列的过程中你可能会消耗光整个RBS,造成这样的错误出现,因此这样的做法并不是一个好方法,就算你拼命的加大RBS空间来应付这个问题,也不会是个好主意。
--不要马上drop column,应该先set unused让column无法使用,避开系统尖峰时间再来处理,要注意的是一但你set unused column,这个栏位是无法再回复使用的。
alter table ttttt set unused (b) CASCADE CONSTRAINTS;
--我们应该避免一次写入那么多的undo log,可以每删除一千笔资料就commit一次。
alter table ttttt drop unused columns checkpoint 1000;