Oracle 分区表之在线重定义
九江浔兴贸易有限公司
九江浔兴贸易有限公司

今日概况

Oracle 分区表之在线重定义

发布日期:2022-08-07 02:53    点击次数:127

一、介绍

「DBMS_REDEFINITION(在线重定义):」

「支持的数据库版本」:Oracle Database - Enterprise Edition - Version 9.2.0.4 and later 在线重定义是通过 「物化视图」 实现的。 「使用在线重定义的一些限制条件」: 必须有足够的表空间来容纳表的两倍数据量。 主键列不能被修改。 表必须有主键。 必须在同一个用户下进行在线重定义。 SYS和SYSTEM用户下的表无法进行在线重定义。 在线重定义无法采用nologging。 如果中间表有新增列,则不能有NOT NULL约束 「DBMS_REDEFINITION包:」 ABSORT_REDEF_TABLE:清理重定义的错误和中止重定义; CAN_REDEF_TABLE:检查表是否可以进行重定义,存储过程执行成功代表可以进行重定义; COPY_TABLE_DEPENDENTS:同步索引和依赖的对象(包括索引、约束、触发器、权限等); FINISH_REDEF_TABLE:完成在线重定义; REGISTER_DEPENDENTS_OBJECTS:注册依赖的对象, 仙乐飘飘如索引、约束、触发器等; START_REDEF_TABLE:开始在线重定义; SYNC_INTERIM_TABLE:增量同步数据; UNREGISTER_DEPENDENT_OBJECT:不注册依赖的对象,如索引、约束、触发器等; 二、实战 1、构建测试数据创建测试表空间和用户:
sqlplus / as sysdba create tablespace PAR; create user par identified by par; grant dba to par; 

创建测试表:

sqlplus par/par create table lucifer( id number(8) PRIMARY KEY, name varchar2(20) not null, par_date date) tablespace PAR; comment on table lucifer is 'lucifer表'; comment on column lucifer.name is '姓名'; comment on column lucifer.par_date is '分区日期'; create index id_name on lucifer(name) tablespace par; 

 

插入测试数据:

sqlplus par/par begin   for i in 0 .. 24 loop     insert into lucifer values       (i,        'lcuifer_'