LONG类型迁移到LOB类型(三)

LONG类型由于过多的限制,Oracle很早就推荐使用LOB类型进行替代,在Oracle的官方文档中给出了几种将LONG类型迁移到LOB类型的方法,这里简单讨论一下。

这一篇讨论在线重定义功能。

LONG类型迁移到LOB类型(一):http://yangtingkun.itpub.net/post/468/501065

LONG类型迁移到LOB类型(二):http://yangtingkun.itpub.net/post/468/501094

 

 

如果对并发要求很高,那么还可以选择在线重定义的方式来转换LONG列:

SQL> CREATE TABLE T
  2  (ID NUMBER,
  3  CONTENTS LONG);

Table created.

SQL> INSERT INTO T
  2  SELECT ROWNUM, OWNER || OBJECT_NAME || OBJECT_TYPE
  3  FROM ALL_OBJECTS;

75338 rows created.

SQL> COMMIT;

Commit complete.

SQL> ALTER TABLE T ADD PRIMARY KEY (ID);

Table altered.

下面建立中间表,并利用在线重定义的方式来转换LONGCLOB类型:

SQL> CREATE TABLE T_INTER
  2  (ID NUMBER,
  3  CONTENTS CLOB);

Table created.

SQL> SET SERVEROUT ON SIZE 100000
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T')

PL/SQL procedure successfully completed.

SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_INTER', 'ID ID, TO_LOB(CONTENTS) CONTENTS')

PL/SQL procedure successfully completed.

SQL> DECLARE
  2  V_NUM NUMBER;
  3  BEGIN
  4  DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(USER, 'T', 'T_INTER', DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUE, TRUE, TRUE, TRUE, V_NUM, TRUE);
  5  DBMS_OUTPUT.PUT_LINE(V_NUM);
  6  END;
  7  /
0

PL/SQL procedure successfully completed.

SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'T', 'T_INTER')

PL/SQL procedure successfully completed.

SQL> DESC T
 Name                                          Null?    Type
 --------------------------------------------- -------- ------------------------
 ID                                                     NUMBER
 CONTENTS                                               CLOB

SQL> DESC T_INTER
 Name                                          Null?    Type
 --------------------------------------------- -------- -------------------------
 ID                                            NOT NULL NUMBER
 CONTENTS                                               LONG

这种方式也不复杂,而且锁表的时间更断,更适合7*24的环境。

Oracle给出的方法还包括EXP/EXPDB的方式,不过这种方式借助导出、导入工具,而且在删除表后还要手工创建表,再执行导入,并没有性能和操作简单度上的优势,这里就不讨论了。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-665749/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-665749/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值