加字段
SQL> alter table tbname add cloum3 varchar2(10) default ‘ICBC’; --默认所有行的新加字段赋值为ICBC
风险:对于大表,add cloum 和 指定默认值不能同时进行。如果加字段的同时指定 DEFAULT 默认值,那么所有旧数据行的该字段都会update为default value,在表的数据量较大时,有导致生产库相关表长时间被锁表的风险。
修改字段
SQL> alter table RC_LISTING modify CUST_NAME VARCHAR2(200);
SQL> alter table tb1 rename column clum1 to clum2;
**修改建议:
1、如果已存在的数据行不需要更新为default value,建议分两条写add+modify。
SQL> alter table tbname add cloum3 varchar2(10);
SQL> alter table tbname modify cloum3 default ‘ICBC’; —旧的行对应的新字段就默认为 null,新加值才会设置为default value
2、如果已存在的数据行需要更新为default value,建议单独执行update语句,根据表的数据量手动分批次、或存储过程分批次循环执行。
SQL> update tbname set cloum3=‘ICBC’ where col_date < ‘2018-01-01 00:00’ and cloum3 is null;
SQL> commit;
SQL> update tbname set cloum3=‘ICBC’ where col_date < ‘2018-06-01 00:00’ and cloum3 is null;
SQL> commit;
获取ddl信息:
set linesize 200 pagesize 200
set serveroutput on
set feedback off
set long 99999
—去除storage等多余参数(可选)
execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,‘STORAGE’,false);
select dbms_metadata.get_ddl(‘TABLE’,‘TBNAME’,‘USER’) from dual; ##(‘TABLE’,‘表名’,‘用户名’)




