ORACLE在线重定义

1、检查是否能够重定义

EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('用户名', '源表', DBMS_REDEFINITION.CONS_USE_PK);

2、开始重定义
EXEC DBMS_REDEFINITION.START_REDEF_TABLE('用户名', '源表','目标表');
3、复制约束,索引,授权
DECLARE
num_errors PLS_INTEGER;
begin
DBMS_REDEFINITION.copy_table_dependents(uname=> '用户名',
                                                   orig_table    => '源表',
                                                   int_table     => '目标表',
                                                   num_errors => num_errors,copy_statistics => true);
end;
/
4、同步数据
EXEC  dbms_redefinition.sync_interim_table(uname=> '用户名',orig_table => '源表',int_table  => '目标表');
5、结束
EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('用户名', '源表','目标表');
6、若死掉了,用这句终止

EXEC DBMS_REDEFINITION.abort_redef_table('用户名', '源表','目标表');

7、一般会遇到一个bug,

ORA-01442: 要修改为 NOT NULL 的列已经是 NOT NULL

11G可以忽略继续执行,但需要检查是否有无效对象

8、对于有外键的一定要格外小心,外键还是会指定到创建的INIT新表,导致报错

重定义物化视图,定义为有分区的视图

create  materialized view FACT_MV_CLI_AREACODE
partition by range(COMDATE)
(
partition P_2013 values less than (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
partition P_2014 values less than (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
partition P_2015 values less than (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
partition P_2016 values less than (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
partition P_2017 values less than (TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
partition P_2018 values less than (TO_DATE(' 2019-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
)
tablespace 表空间 
nologging
build immediate 
REFRESH COMPLETE ON DEMAND
WITH ROWID
enable query rewrite
as
原视图查询语句;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值