首页 / MYSQL / 通过在线重定义来增加大表列默认值
通过在线重定义来增加大表列默认值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过在线重定义来增加大表列默认值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2289字,纯文字阅读大概需要4分钟。
内容图文
![通过在线重定义来增加大表列默认值](/upload/InfoBanner/zyjiaocheng/555/1dd2be95600243a9b2ba57f5b3b7018d.jpg)
其中提到11G之前,可以通过在线重定义表的方式,来进行列的增加(且有默认值)。
之前的文章讨论过11G中关于大表增加列的新特性 ,
其中提到11G之前,可以通过在线重定义表的方式,来进行列的增加(且有默认值)。
在线重定义权限需求:
grant create any table to 用户;
grant alter any table to 用户;
grant drop any table to 用户;
grant lock any table to 用户;
grant select any table to 用户;
grant create any trigger to 用户;
grant create any index to 用户;
1.SQL获取原始表的DDL
可通过如下设置,,将storage 子句去除,也可以不去执行
begin
Dbms_Metadata.Set_Transform_Param(Dbms_Metadata.Session_Transform,
'SQLTERMINATOR',
True);
Dbms_Metadata.Set_Transform_Param(Dbms_Metadata.Session_Transform,
'STORAGE',
False);
end;
获取原始表的DDL语句(这里例子为T)
set pagesize 5000
set long 50000
Select Dbms_Metadata.Get_Ddl(Object_Type => 'TABLE', Name => 'T') from dual
union all
select Dbms_Metadata.Get_Dependent_Ddl(Object_Type => 'CONSTRAINT',Base_Object_Name => 'T') from dual
union all
select Dbms_Metadata.Get_Dependent_Ddl(Object_Type => 'INDEX',Base_Object_Name => 'T') from dual
union all
select Dbms_Metadata.Get_Dependent_Ddl('OBJECT_GRANT', 'T', 'SCOTT') from dual;
2.将获取的语句中的 表名T,替换为T2,之后建立。
3.给t2表 增加字段(带有默认值)
alter table t2 add MrDai varchar2(10) default 'MrDai';
4.检查一下能否T表能否进行重定义,如果执行成功,则表示可以,否则将会报错显示为什么不可以
exec Dbms_Redefinition.Can_Redef_Table(USER, 'T');
5.开始重定义
注意:如原始表有未提交的事物,该过程会一直在等待,等待事件为enq: TX - row lock contention
exec dbms_redefinition.start_redef_table(uname => USER,orig_table => 'T',int_table => 'T2',options_flag => DBMS_REDEFINITION.cons_use_pk);
6.完成重定义
exec dbms_redefinition.finish_redef_table(uname=>USER,orig_table=>'T',int_table=>'T2');
查看重定义以后的t
SQL> desc t;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
.
.
.
MRDAI VARCHAR2(10)
已经添加列完成。
内容总结
以上是互联网集市为您收集整理的通过在线重定义来增加大表列默认值全部内容,希望文章能够帮你解决通过在线重定义来增加大表列默认值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。