首页 > 开发 > 综合 > 正文

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

2024-07-21 02:39:49
字体:
来源:转载
供稿:网友
前言 在Oracle9i出现之前,你只能通过MOVE或导出和导入的方式来进行表格重定义,因此表格重定义的过程可能相当漫长或者说是一个离线过程,在此期间应用程序对该表的操作将失败,非凡是大型的分区表上的操作(上次coolyl)就问到了这个问题,我们当时是建议他用move partition的办法解决,但是move可能很耗时并可能引起全局索引的失效(不过9i已经有了update global indexes)。除了这个,假如用eXP,我们也不能保证exp的时候该表的数据没有改变(除非单用户),而imp更是一个漫长的过程。 为了解决这个问题,Oracle9i在其DBMS_REDEFINITION软件包中引入了在线表格重定义功能。这个特性对24/7Oracle数据库来说非常重要,这是由于DBA现在可以在保持表格的可更新性的同时重新组织表格的结构。 然而,在线表格重定义也不是完美无缺的。下面列出了Oracle9i重定义过程的部分限制。 ·你必须有足以维护两份表格拷贝的空间。 ·你不能更改主键栏。 ·表格必须有主键。 ·必须在同一个大纲中进行表格重定义。 ·在重定义操作完成之前,你不能对新加栏加以NOT NULL约束。
 ·表格不能包含LONG、BFILE以及用户类型(UDT)。 ·不能重定义链表(clustered tables)。 ·不能在SYS和SYSTEM大纲中重定义表格。 ·不能用具体化视图日志(materialized view logs)来重定义表格;不能重定义含有具体化视图的表格。 ·不能在重定义过程中进行横向分集(horizontal subsetting)。

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