当前位置:  数据库>oracle

Oracle的在线重定义表功能

    来源: 互联网  发布时间:2017-05-20

    本文导语: 在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。...

在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作。

在线重定义表具有以下功能:

  • 修改表的存储参数;
  • 可以将表转移到其他表空间;
  • 增加并行查询选项;
  • 增加或删除分区;
  • 重建表以减少碎片;
  • 将堆表改为索引组织表或相反的操作;
  • 增加或删除一个列。

调用DBMS_REDEFINITION包需要EXECUTE_CATALOG_ROLE角色,除此之外,还需要CREATE ANY TABLE、ALTER ANY TABLE、DROP ANY TABLE、LOCK ANY TABLE和SELECT ANY TABLE的权限。

在线重定义表的步骤如下:

1.选择一种重定义方法:

存在两种重定义方法,一种是基于主键、另一种是基于ROWID。ROWID的方式不能用于索引组织表,而且重定义后会存在隐藏列M_ROW$$。默认采用主键的方式。

2.调用DBMS_REDEFINITION.CAN_REDEF_TABLE()过程,如果表不满足重定义的条件,将会报错并给出原因。

3.在用一个方案中建立一个空的中间表,根据重定义后你期望得到的结构建立中间表。比如:采用分区表,增加了COLUMN等。

4.调用DBMS_REDEFINITION.START_REDEF_TABLE()过程,并提供下列参数:被重定义的表的名称、中间表的名称、列的映射规则、重定义方法。

如果映射方法没有提供,则认为所有包括在中间表中的列用于表的重定义。如果给出了映射方法,则只考虑映射方法中给出的列。如果没有给出重定义方法,则认为使用主键方式。

5.在中间表上建立触发器、索引和约束,并进行相应的授权。任何包含中间表的完整性约束应将状态置为disabled。

当重定义完成时,中间表上建立的触发器、索引、约束和授权将替换重定义表上的触发器、索引、约束和授权。中间表上disabled的约束将在重定义表上enable。


    
 
 

您可能感兴趣的文章:

  • oracle异常(预定义异常,自定义异常)应用介绍
  • Oracle将查询的结果放入一张自定义表中并再查询数据
  • Oracle中用GROUPING SETS分组自定义汇总
  • Oracle返回表类型的自定义函数
  • 深入ORACLE变量的定义与使用的详解
  • Oracle中归档模式的定义简述
  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle10g 预定义主要角色
  • Oracle定义联合数组及使用技巧
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • MySQL实现类似Oracle中的decode()函数的功能
  • Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
  • oracle的plsql里有没有位操作的功能
  • 怎么写一个Shell来执行这样的功能,访问Oracle数据库,然后执行一个SQL脚本,生成一个文件。急!
  • Oracle数据库中分区功能详解
  • Oracle11g备份和恢复功能的提高
  • 细化解析Oracle 10g STATSPACK的新功能
  • Oracle数据库后台进程的功能分析
  • Oracle 11G闪回数据归档新功能详述
  • Oracle备份功能比较
  • Oracle同义词管理功能给你带来的惊喜与注意问题
  • 利用导出/导入功能实现重新组织Oracle数据库表空间
  • Oracle 数据库闪回功能设置出现ORA-19809和ORA-19804错误
  • JAVA简单链接Oracle数据库 注册和登陆功能的实现代码
  • Oracle SecureFile的功能第1/4页
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 杀掉oracle在线用户脚本分享
  • shell如何获取oracle错误码 在线等
  • Oracle与JSDK4.0环境变量冲突,如何解决(在线等待)?
  • 请问,我如何在unix下用c/c++连结数据(oracle)??在线等待!!!!
  • 在线等待:用子线程与ORACLE数据库建立连接的问题。
  • 寻求在Linux 8.0上安装Oracle 9i的安装文档,分不够,可以再加,在线等待。。。
  • 安装ORACLE时的安装界面显示一堆乱码如何解决(我很菜的,分100可再加)---在线
  • 请教: Oracle数据库,谢谢!!!!在线
  • Linux下安装oracle的问题,在线急等,高手帮忙 !!!
  • solaris9下怎么查看oracle服务是否启动,以及怎么启动,在线等待。
  • FC6下安装Oracle9i错误,请高手指教 在线等 解决即结贴
  • oracle9i在linux9上安装的权限问题!在线等候!
  • ubuntu系统中运行java程序调用oracle 的sqlplus,为什么找不到sqlplus呢?在线等
  • 急!!!linux9下安装oracle9i在configuration Tool过程出现错误,在线等待,解决立即给分!
  • ORACLE数据库在线备份原理祥述
  • 取Oracle数据库中的中文数据乱码的问题!!急:在线等待
  • linux 环境下 odbc程序 往oracle数据库insert 中文 乱码问题,请教高手,急!!!!在线等~~
  • linux(redhat9)下安装oracle9。新手问题(急,在线等)
  • jsp显示oracle中varchar2类型字段 在线等待
  • jsp访问oracle超出打开游标的最大数是什么原因?急,在线给分。
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,