Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1997565
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:09:40

前言

 

9i出现之前,你只能通过MOVE或导出和导入的方式来进行表格重定义,因此表格重定义的过程可能相当漫长或者说是一个离线过程,在此期间应用程序对该表的操作将失败,特别是大型的分区表上的操作(上次coolyl)就问到了这个问题,我们当时是建议他用move partition的办法解决,但是move可能很耗时并可能引起全局索引的失效(不过9i已经有了update global indexes)。除了这个,如果用exp,我们也不能保证exp的时候该表的数据没有改变(除非单用户),而imp更是一个漫长的过程。

 

为了解决这个问题,9i在其DBMS_REDEFINITION软件包中引入了在线表格重定义功能。这个特性对24/7Oracle数据库来说非常重要,这是由于DBA现在可以在保持表格的可更新性的同时重新组织表格的结构。

 

然而,在线表格重定义也不是完美无缺的。下面列出了Oracle9i重定义过程的部分限制。

 

·你必须有足以维护两份表格拷贝的空间。

 

·你不能更改主键栏。

 

·表格必须有主键。

 

·必须在同一个大纲中进行表格重定义。

 

·在重定义操作完成之前,你不能对新加栏加以NOT NULL约束。

 

·表格不能包含LONGBFILE以及用户类型(UDT)。

 

·不能重定义链表(clustered tables)。

 

·不能在SYSSYSTEM大纲中重定义表格。

 

·不能用具体化视图日志(materialized view logs)来重定义表格;不能重定义含有具体化视图的表格。

 

·不能在重定义过程中进行横向分集(horizontal subsetting)。

【责编:Amy】

--------------------next---------------------

阅读(183) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~