dbms_redefinition


首先查看DBMS_REDEFINITION包所带存储过程的功能:


1. ABSORT_REDEF_TABLE:清理重定义的错误和中止重定义;

2. CAN_REDEF_TABLE:检查表是否可以进行重定义;

3. COPY_TABLE_DEPENDENTS:同步依赖的对象,如索引、权限、约束、触发器等;

SET SERVEROUTPUT ON

DECLARE
      error_count pls_integer := 0;
BEGIN
     DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('HLB',
 			 'TEST',
       'TEST_TMP',
      dbms_redefinition.cons_orig_params ,
   TRUE,
    TRUE,
    TRUE,
    FALSE,
    error_count);
       DBMS_OUTPUT.PUT_LINE('errors := ' || TO_CHAR(error_count));
END;
/ 


4. FINISH_REDEF_TABLE:结束在线重定义;

5. REGISTER_DEPENDENTS_OBJECTS:注册依赖的对象,如索引、约束、触发器等;

该存储过程和 COPY_TABLE_DEPENDENTS 有同样的效果

6. START_REDEF_TABLE:开始在线重定义;

7. SYNC_INITERIM_TABLE:同步增量数据;

8. UNREGISTER_DEPENDENT_OBJECT:不注册依赖的对象,如索引、约束、触发器等;


下面以一个具体的实例做演示,该表有100个G,整个过程只花了1小时。

10:20:05 sys@TBDB>select * from (SELECt SUM(BYTES)/1024/1024/1024 FROM dba_SEGMENTS where SEGMENT_NAME ='GE_BI_SCAN_SIGN_RATE_DTL'); 

SUM(BYTES)/1024/1024/1024
-------------------------
               100.181702


第一步: 检查表能否进行在线重定义

exec dbms_redefinition.can_redef_table('USRBI', 'GE_BI_SCAN_SIGN_RATE_DTL',DBMS_REDEFINITION.CONS_USE_ROWID);

第二步: 创建目标表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangliang0703

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值