Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL、DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的。当然在线重定义期间,前端性能会稍微有所下降。Oracle提供的重定义包dbms_redefinition即是用与完成此操作。其实质是Oracle使用了智能物化视图及物化视图日志的方式。在对象结构重组期间,表现为一个本地对象的复制,重组期间发生的任何变化都会被刷新到最新。--------------------------------------------------------------------------------Linux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm--------------------------------------------------------------------------------1、在线重定义表的主要功能:修改表或簇的存储参数将表移动到相同或不同schema下不同的tablespace(如果不要求表始终可用的话,也可以直接使用alter table move 实现)为表添加,修改或删除列为表添加或删除分区,改变分区结构改变物化视图日志或者Streams Advanced Queuing queue 表结构增加并行查询支持重建表以减少碎片将堆表变为索引组织表或相反2、图示在线重定义下面的图示便于理解是如何进行在线重定义,其本质是基于基表的一个快照3、在线重定义的步骤a、选择在线重定义的方式,基于键(主键或唯一键)还是rowid(无主键或唯一键的情形)b、校验表能否被在线重定义,使用过程CAN_REDEF_TABLEc、创建用于在线重定义的临时表(该临时表使用新的表结构,即添加删除列,列长度变化,存储属性变化等)d、如果重定义的为分区表且使用rowid方式,应该为临时表开启行移动(ALTER TABLE ... ENABLE ROW MOVEMENT;)e、对于大型表的在线重定义可以通过启用并行以提高性能(此步骤可选)ALTER SESSION FORCE PARALLEL DML PARALLEL degree-of-parallelism;ALTER SESSION FORCE PARALLEL QUERY PARALLEL degree-of-parallelism;f、调用过程start_redef_table启动在线重定义,如果启动失败,应调用ABORT_REDEF_TABLE先终止查找原因后再次启动g、从被重定义的表复制依赖对象到临时表(triggers, indexes, materialized view logs, grants, and constraints)及统计信息到临时表h、同步被重定义的表到临时表(调用过程sync_interim_table,此步可选)i、调用过程FINISH_REDEF_TABLE完成表的在线重订义j、删除临时表
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-06/103628p2.htm
MySQL新旧版本ORDER BY 处理方法使用DBMS_REDEFINITION在线切换普通表到分区表相关资讯 Oracle在线重定义 dbms_redefinition
- Oracle在线重定义 (11/27/2015 09:11:37)
- Oracle Online Redefinition在线重 (05/18/2014 17:05:09)
| - 使用DBMS_REDEFINITION在线切换普 (06/24/2014 20:23:09)
- Oracle的在线重定义表功能 (04/15/2013 06:23:48)
|
本文评论 查看全部评论 (0)