【tool】基于主键的表在线重定义
来源:互联网 发布:日语原版小说软件 编辑:程序博客网 时间:2024/06/06 00:27
以下为整个实验过程,主要是把一个表通过在线重定义改为分区表
创建源表
create table wjf_user_objects as select * from user_objects
创建索引、约束、触发器(为了验证在线重定义对这些信息的复制情况)
create index idx_wjf_user_objects_wjf_001 on wjf_user_objects(object_name);alter table wjf_user_objects add constraint con_wjf_user_objects_wjf_001 unique(object_name,object_type);
select count(*) from wjf_user_objects ----3519
创建中间表
create table wjf_user_object_zjb partition by list(object_type)(partition par_table values('TABLE'),
partition par_index values('INDEX'),
partition par_other values(default))
as select * from wjf_user_objects where 1=0
创建主键
alter table wjf_user_objects add primary key(object_id)alter table wjf_user_object_zjb add primary key(object_id)
重定义定义
exec dbms_redefinition.can_redef_table(uname => 'ykyh1203',tname => 'wjf_user_objects',options_flag => dbms_redefinition.cons_use_pk);开始重定义转化
exec dbms_redefinition.start_redef_table(uname => 'ykyh1203',orig_table => 'wjf_user_objects',int_table => 'wjf_user_object_zjb')查询相关物化视图(在线重定义的内部实现是基于物化视图,此处只做查验)
select owner,mview_name from user_mviews;
select log_owner,master,log_table from user_mview_logs;
复制依赖对象(默认复制索引、约束、权限、触发器信息)
DECLAREnum_errors PLS_INTEGER;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('ykyh1203', 'wjf_user_objects','wjf_user_object_zjb',DBMS_REDEFINITION.CONS_ORIG_PARAMS,true,true,true,true,num_errors);
END;
/
同步对象
exec dbms_redefinition.sync_interim_table(uname => 'ykyh1203',orig_table => 'wjf_user_objects',int_table => 'wjf_user_object_zjb')完成
exec dbms_redefinition.finish_redef_table(uname => 'ykyh1203',orig_table => 'wjf_user_objects',int_table => 'wjf_user_object_zjb')删除中间表(中间表需要手动删)
drop table wjf_user_object_zjb 0 0
- 【tool】基于主键的表在线重定义
- 基于rowid的表的在线重定义
- 基于 dbms_redefinition 在线重定义表
- 表的在线重定义
- 【转】 基于主键的重定义表,解决delete日志表产生的碎片问题
- 在线重定义表
- 在线重定义表
- Oracle普通表基于Rowid在线重定义表分区
- ORACLE表的在线重定义
- 在线重定义更改主键字段类型/ORA-23539
- Oracle的在线重定义
- 关于在线重定义表
- oracle9i表在线重定义
- 在线重定义表(dbms_redefinition)
- oracle表在线重定义
- DBMS_REDEFINITION在线重定义表
- DBMS_REDEFINITION在线重定义表
- DBMS_REDEFINITION在线重定义表
- Android Window 整理
- 总结8
- ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】
- C++类和类的定义
- Oracle数据类型
- 【tool】基于主键的表在线重定义
- 有序单链表的合并
- php学习之道[1]
- tianchai 12035 宝岛探险 (BFS)
- 【Dongle】【BS学习】BS学习总结
- ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】
- 为什么我们做不到【领导篇】
- Java中ThreadLocal介绍
- vim 的配置