ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> Oracle >> dbms_redefinition

dbms_redefinition(1/3)

来源:网络整理     时间:2015-12-28     关键词:

本篇文章主要介绍了"dbms_redefinition",主要涉及到方面的内容,对于Oracle感兴趣的同学可以参考一下: 首先查看DBMS_REDEFINITION包所带存储过程的功能:1. ABSORT_REDEF_TABLE:清理重定义的错误和中止重定义;2. CAN_REDE...

首先查看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);

第二步: 创建目标表

GE_BI_SCAN_SIGN_RATE_DTL_TEMP

第三步: 开始进行在线重定义

相关图片

相关文章