首页 > 开发 > 综合 > 正文

9i新特性之——在线表格重定义研究2

2024-07-21 02:39:49
字体:
来源:转载
供稿:网友
基本步骤如下 第一步:利用dbms_redefinition.can_redef_table过程检查该表是否能被在线重定义。 第二步:创建一个与原表类似的空表结构,用于重定义该表,这里叫做是中间表 第三步:用dbms_redefinition.start_redef_table PRocedure定义重构开始 该过程可以输入如下参数信息用户的名称原表的名称中间表的名称需要同步改变的列的名称 这个过程将回自动执行如下操作: 1、插入所有行从原有表到中间表 2、创建MLOG$_EMP快照与快照日志,临时存储DML语句直到完成。 
第四步:与原表一致,在中间表上面创建约束,索引,触发器 与原表一致(假如需要),中间表的对象权限被授予给别的对象 任何中间表上的外键约束将被禁止 第五步:用dbms_redefinition.finish_redef_table过程完成表的最终重定义 该过程将自动完成应用快照日志中的DML到中间表互换原表与中间表的名字,包括所有可能出现的数据字典但是需要注重的是,并不对换约束,索引,触发器的名称,这些需要手工修改 第六步:删除中间表、 第七步:假如是920以上,可以利用ALTER TABLE ... RENAME CONSTRAINT ...语句来修改约束名称,假如以下版本,就只有删除并重建了,当然,假如约束名称并不重要,也就无所谓了 第八步:假如重组织失败,那么你就必须采取非凡的步骤来让它重新开始。由于重定义过程需要创建表格的快照,因此为了重新开始这一过程,你必须调用DBMS_REDEFINITION.ABORT_REDEF_TABLE来释放快照。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表