匿名用户oracle修改表字段长度后,需要做特殊维护吗?
比如 char(10) 变成了char(20) ,alter完成后,需要特殊维护吗?比如表数据重新构建一次
在Oracle数据库中,修改表字段长度不需要做特殊维护,因为Oracle数据库系统已经为这种操作提供了丰富的支持。
当需要修改表字段的长度时,可以使用ALTER TABLE语句来修改表的结构。例如,如果要将表t1的字段age的长度从5个字符修改为10个字符,可以使用以下SQL语句:
ALTER TABLE t1 MODIFY COLUMN age VARCHAR2(10);
该语句使用了MODIFY COLUMN子句来修改表t1中的字段age的长度。注意,VARCHAR2是一种可变长度的数据类型,它可以存储任意长度的字符串数据。
在修改表结构之后,需要使用ALTER TABLE语句来保存新的结构。例如,可以使用以下SQL语句来保存新的表结构:
ALTER TABLE t1 SAVESTRUCTURE;
该语句使用了SAVESTRUCTURE子句来保存新的表结构。注意,SAVESTRUCTURE是一种特殊的行为,它表示在修改表结构之后,需要将新的结构保存到数据库中,以便以后使用。
总之,在Oracle数据库中,修改表字段长度不需要做特殊维护,只需要使用ALTER TABLE语句来修改表结构即可。在修改表结构之后,需要使用SAVESTRUCTURE语句来保存新的表结构。
评论
有用 3从性能的角度来看, 是需要的。
因为char(10) 改成char(20) 后,行长马上就变长了, 会导致大量的行迁移,影响性能(如果表的平均行长比较大, 一个数据块中包含的记录数比较少,则出现行迁移的几率也会降低)。 如果表的pctfree之前设置了一个比较大的值,可能会减少行迁移的可能性,但是一般建表时都会使用默认的10.
如果是varchar2(10) 改成 varchar2(20) , 这个操作只是修改了数据字典,没有真正把行长变长,只有当大量的记录真正的被update变长之后, 才会出现行迁移的情况。
综上,如果是char(10)modify 到char(20),还是建议做一个move操作,消除行迁移。 而varchar2的变长,则需要根据具体情况进行move重组操作。
评论
有用 7修改表字段前,先检查下存储过程、触发器、包体 有没有包含这个表字段,因为修改表字段后,可能会导致相关的存储过程、触发器、包体失效,需要重新编译下。
评论
有用 0
墨值悬赏


