ORACLE 在线表重定义
ORACLE 在实际中一些表由于业务量增大,一些原先规划不是很大的表的数据量大增,为了优化要把这些表从普通表变成分区表。现在就介绍ORACLE自带的一种技术来处理这种情况-这种技术叫在线表重定义。 第一步建立临时表: create table test_table ( ID NUMEBER(10) NOT NULL, STATUS VARCHAR2(30) NULL,'Microsoft YaHei';">CREATE_DATE DATE )PARTITION BY RANGE(CREATE_DATE) alter table test_table add constraint test_table_pk primary key(id); 第二步 判断目标数据表是否可以进行重定义 。利用的DBMS_REDEFINITION包的CAN_REDEF_TABLE的方法进行判断。 exec dbms_redefinition.can_redef_table('user','table',dbms_redefinition.cons_use_pk); 使用cons_use_pk重定义的时候创建的物化视图是基于普通的刷新模式. 也可以用ROWID的方法 使用cons_use_rowid重定义的时候创建的物化视图是基于ROWID刷新的. 第三步 开始重定义 exec dbms_redefinition.start_redef_table('user','test_table'); 同步临时表与原始表中的数据 exec dbms_redefinition.sync_interim_table('user','Microsoft YaHei';">开始复制表的属性 declareCLAR num_errorsPLS_INTEGER; BEGIN DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('user','test_table', DBMS_REDEFINITION.CONS_ORIG_PARAMS,TRUE,num_errors);END;/包括索引,规则,促发器完成重定义exec dbms_redefinition.finish_redef_table('user','test_table'); _pk); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |