博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

oracle 在线重定义

Posted on 2021-04-25 08:35  和风细雨汪汪  阅读(116)  评论(0编辑  收藏  举报

--预备检查
BEGIN
DBMS_REDEFINITION.CAN_REDEF_TABLE('GMSTEST','BGP_HSE_ENTITYHISTORY_NEW',DBMS_REDEFINITION.CONS_USE_PK);
END;

BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE('GMSTEST', 'BGP_HSE_ENTITYHISTORY_NEW', 'BGP_HSE_ENTITYHISTORY_NEW_TEST');
END;

BEGIN
dbms_redefinition.sync_interim_table('GMSTEST', 'BGP_HSE_ENTITYHISTORY_NEW', 'BGP_HSE_ENTITYHISTORY_NEW_TEST');
END;

-- 完成关闭
BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE('GMSTEST', 'BGP_HSE_ENTITYHISTORY_NEW', 'BGP_HSE_ENTITYHISTORY_NEW_TEST');
END;
--报错还原
BEGIN
全局索引重建
alter index ENTITYHISTORY_GUID_INDEX rebuild online parallel 10;
DBMS_REDEFINITION.ABORT_REDEF_TABLE(uname => 'GMSTEST',
orig_table => 'BGP_HSE_ENTITYHISTORY_NEW',
int_table => 'BGP_HSE_ENTITYHISTORY_NEW_TEST');
END;

-- 移动分区到其他表空间
ALTER TABLE tabname MOVE PARTITION partitionname TABLESPACE tbsname;
-- 分区移动后索引变化
alter index “index name” rebuild partition “partition name” tablespace “tbs name”;
-- 因为是复合分区,所以只需要移动子分区
alter table bgp_hse_entityhistory_new move subpartition SUB1P1 tablespace gmstest
alter index PID_GLOBAL_INDEX rebuild subpartition SUB1P1;