`
血色-浪漫
  • 浏览: 7651 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

oracle表在线重定义

 
阅读更多

基本原理
oracle表的在线重定义是间接通过prebuild物化视图实现的,在执行DBMS_REDEFINITION.START_REDEF_TABLE()后,我们可以通过查询,user_mviews与user_mview_logs,发现增

加了对应的物化视图和物化视图日志,而SYNC_INTERIM_TABLE(),其实也只是物化视图的增量刷新,最终执行FINISH_REDEF_TABLE()的时候,将锁定原表,防止表上的DML,物化视

图执行刷新,完成刷新后,将删除物化视图和对应的日志,将中间表rename成目标表。

主要功能
修改表的存储参数
在同一个schema下将表移动到不同的tablespace
增加并行查询支持
添加或则删除分区支持
重建表以减少碎片
将堆表变为索引组织表或相反
添加或删除列

好处:
重组表数据、压缩空间
在线把表从一个表空间迁移到另一个表空间
把表从普通表转换成分区表或者从分区表转换成普通表
在线删除字段
修改表的一些参数,一些需要重组才能起效的特性,比如INITRANS参数。

限制:
如果使用基于主键的方式,则原表后重定义的表必须有相同的主键
如果使用基于ROWID的方式,则不能是索引组织表
如果原表上有物化视图或者高级队列不能在线重定义
物化视图容器表或者高级队列表不能在线重定义
拥有bfile、long列的表不能在线重定义
cluster中的表不能在线重定义
sys和system下的表不能在线重定义
临时表不能在线重定义
不支持水平数据子集
在列映射时只能使用有确定结果的表达式,如子查询就不行
如果中间表有新增列,则不能有not  null约束
原表和中间表之间不能有引用完整性
在线重定义无法使用nologging


在线重定义分区表的实施步骤
1 2 建个和源表表结构一样的分区表,作为中间表

2 在线重定义的表自行验证,看是否可以重定义

SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('username', 'table_name', 'table_name_tmp');
PL/SQL procedure successfully completed.

3 执行表的在线重定义

SQL>EXEC DBMS_REDEFINITION.START_REDEF_TABLE('username', 'table_name', 'table_name_tmp');

PL/SQL procedure successfully completed.

4 执行把中间表的内容和数据源表进行同步

SQL> execute dbms_redefinition.sync_interim_table('username', 'table_name', 'table_name_tmp');

PL/SQL procedure successfully completed.

5 执行结束在线定义过程

SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('username', 'table_name', 'table_name_tmp');

PL/SQL procedure successfully completed.


6 如果执行在线重定义的过程中出错
可以在执行dbms_redefinition.start_redef_table之后到执行dbms_redefinition.finish_redef_table之前的时间里执行:DBMS_REDEFINITION.abort_redef_table('username',

'table_name', 'table_name_tmp')以放弃执行在线重定义。

分享到:
评论

相关推荐

    在线重定义分区表

    ORACLE生产环在线重定义分区表,不停机,不影响业务

    在线重定义脚本

    自己的做的在线重定义 记录一次工作内容步骤,方便使用 基于rowid 的方式

    在线表重定义——Oracle 10g系列专栏(二).pdf

    在线表重定义——Oracle 10g系列专栏(二).pdf

    在线重定义表实验记录

    在线重定义表实验记录(普通表在线重定义为分区表)

    oracle普通表转表分区

    oracle数据库在生产上运行时,需要对表进行分区操作,不能停生产但还需要进行表分区,使用在线重定义方式进行操作即可,严格按照文档操作即可完成。

    ORACLE大表分区

    使用联机重定义 只有C方案才能保证数据的完全一致性; -- 但是经过测试发现方案B和C都存在分区过程的不透明性,对EXCEPTION不好控制,另外C方案比较适合手工操作,不适合自动运行; -- B方案比较适合将非分区表中的数据放...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    11 管理表 目标 11-2 储存用户数据 11-3 Oracle 数据类型 11-5 ROWID 格式 11-8 行的结构 11-10 创建一张表 11-11 创建临时表 11-13 创建表:指南 11-14 修改储存参数 11-15 手工分配片 11-16 重构非分区表 11-17 ...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    常用oracle动态性能视图

    常用oracle视图 V$SESSION  在本视图中,每一个连接到数据库实例中的session都拥有...注意:当使用SQL*Plus进行选择时,确认你重定义的列宽不小于11以便看到完整的数值。 STATUS:这列用来判断session状态是: .....

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

     第33章使用重定义联机表  第34章修正损坏块  第35章使用日里民挖掘  第36章使用管道  第37章使用精细访问控制  第38章使用精细审计  第39章使用预警事件  第40章转换ROWID  第41章其他常用包 习题答案

    Oracle 11g SQL和PL SQL从入门到精通part2 pdf格式电子书 下载(二)

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    Oracle 11g SQL和PL SQL从入门到精通.part1

     第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 ...

    oracle数据库经典题目

    21. 一个表空间具有离线(OFFLINE)、在线(ONLINE)、只读(READ ONLY)、读写(READ WRITE)状态。 二、选择 1.在全局存储区SGA中,哪部分内存区域是循环使用的?( B ) A.数据缓冲区 B.日志缓冲区 C. 共享池 D...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 修改跟踪文件 103 3.10 闪回日志文件 104 3.10.1 闪回数据库 104 3.10.2 闪回恢复区 105 3.11 DMP文件(EXP/IMP文件) 106 3.12 数据泵...

    本机不安装ORACLE直接连接服务器上的ORACLE

    第一个黄色字块:表示定义远程服务器的在本地主机名 第二个黄色字块:远程数据库的IP地址 第三个黄色子块:远程数据库实例名 3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。比如我的本...

    oracle学习经典教程

    1.3.2.3 使用在线重定义:DBMS_REDEFINITION .........................50 1.3.2.4 使用导出导入.........54 1.3.2.4.1 迁移分区表的步骤.....................55 1.3.2.4.2 示例1:使用exp/imp ............

Global site tag (gtag.js) - Google Analytics