下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >大数据 >Oracle9i在线表格重定义来组织表格

Oracle9i在线表格重定义来组织表格

好汉发布于 2015-10-17 21:28查看:723回复:5

   在一个高可用系统中,如果要变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作。   
      在Oracle9i出现之前,你只能通过导出和导入的方式来进行表格重定义,因此表格重定义的过程是一个离线过程。甚至在线变化(“ALTER TABLE ADD NEW_COL NUMBER(3)”)也会导致独占性死锁(exclusive locks),这就需要在DDL完成之前防止所有(插入、更新)的运行。 为了解决这个问题,Oracle9i在其_REDEFINITION软件包中引入了在线表格重定义功能。有了DBMS_REDEFINITION软件包,你就可以: 1.拷贝表格(用CTAS)。 2.创建表格的快照(snapshot)。 3.把重定义表格的过程中所发生的变化进行排队。 4.并用变化队列来同步重定义后的表格。 这个特性对24/7Oracle来说非常重要,这是由于DBA现在可以在保持表格的可更新性的同时重新组织表格的结构。 我们以下面的脚本为例来说明重新组织表格结构的完整过程。

exec dbms_redefinition.abort_redef_table('PUBS','TITLES','TITLES2');
alter table titles add constraint pk_titles primary key (title_id);

exec dbms_redefinition.can_redef_table('PUBS','TITLES');

create table titles2
as
select * from titles;

exec dbms_redefinition.start_redef_table('PUBS','TITLES','TITLES2','
title_id title_id,title title,type type,
pub_id pub_id,price price,advance advance,
royalty*1.1 royalty,ytd_sales ytd_sales,notes notes,pubdate pubdate');

exec dbms_redefinition.sync_interim_table('PUBS','TITLES','TITLES2');
exec dbms_redefinition.finish_redef_table('PUBS','TITLES','TITLES2');

drop table titles2;


如果重组织失败,那么你就必须采取特殊的步骤来让它重新开始。由于重定义过程需要创建表格的快照,因此为了重新开始这一过程,你必须调用DBMS_REDEFINITION.ABORT_REDEF_TABLE来释放快照。 DBMS_REDEFINITION.ABORT_REDEF_TABLE过程有三个参数,即大纲(schema)、原始表格(original table name)名称以及持有表格名称(holding table name)。它“出栈”并允许你开始重组织表格。

 
dbms_redefinition.abort_redef_table('PUBS','TITLES','TITLES2');>


然而,在线表格重定义也不是完美无缺的。下面列出了i重定义过程的部分限制。 你必须有足以维护两份表格拷贝的空间。 你不能更改主键栏。 表格必须有主键。 必须在同一个大纲中进行表格重定义。 在重定义操作完成之前,你不能对新加栏加以NOT NULL约束。 表格不能包含LONG、BFILE以及用户类型(UDT)。 不能重定义链表(clustered tables)。 不能在SYS和SYSTEM大纲中重定义表格。 不能用具体化视图日志(matelized view logs)来重定义表格;不能重定义含有具体化视图的表格。 不能在重定义过程中进行横向分集(horizontal subsetting)。 
上面就是小编的总结,需要的朋友可以的登录课课家官网查看视频教程。


收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

共有5条评论

  • 慧星的那一夜
  • Real Madrid
  • 药师
  • mr jack
  • YUI
  • Mr ken
  • Mright
  • cappuccino
  • 课课家技术团队1
  • love洒脱留守
  • 酸酸~甜甜
  • 课课家团队03
  • K哥馆
  • 选择版块:

  • 标题:

  • 内容

  • 验证码:

  • 标题:

  • 内容

  • 选择版块:

移动帖子x

移动到: