WEB开发网
开发学院数据库Oracle Oracle 10g R2特性之数据仓库和集成特性 阅读

Oracle 10g R2特性之数据仓库和集成特性

 2006-11-18 11:59:41 来源:WEB开发网   
核心提示: 可以使用 DBMS_REDEFINITION 程序包联机执行该操作,但在 Oracle 数据库 10g 第 2 之前,Oracle 10g R2特性之数据仓库和集成特性(9),有一个很大的限制,将 LONG 列转换为 LOB 列时,它被定义为 CLOB)空临时表,create table

可以使用 DBMS_REDEFINITION 程序包联机执行该操作。但在 Oracle 数据库 10g 第 2 之前,有一个很大的限制。

将 LONG 列转换为 LOB 列时,您很希望获得高性能;您需要使该过程尽可能地快。如果将表进行了分区,则该过程将跨分区并行执行。但如果未将表进行分区,则该过程将串行执行,从而可能持续很长时间。

幸好,在 Oracle 数据库 10g 第 2 版中,即使表未分区也可以在 DBMS_REDEFINITION 程序包内部执行从 LONG 到 LOB 的联机转换。我们通过一个示例来了解该转换的过程。以下是一个用于保存发送给客户的电子邮件的表。由于邮件正文(存储在 MESG_TEXT 中)通常是较长的文本数据,因此已将该列定义为 LONG。SQL> desc acc_mesg
Name               Null?Type
----------------------------------------- -------- ---------
ACC_NO                  NOT NULL NUMBER
MESG_DT                  NOT NULL DATE
MESG_TEXT                     LONG

您需要将该列转换为 CLOB。首先,创建一个结构相同的(最后一列除外,它被定义为 CLOB)空临时表。create table ACC_MESG_INT
(
acc_no number,
mesg_dt date,
mesg_text clob
);

现在,启动重新定义过程。1 begin
2   dbms_redefinition.start_redef_table (
3    UNAME    => 'ARUP',
4    ORIG_TABLE  => 'ACC_MESG',
5    INT_TABLE  => 'ACC_MESG_INT',
6    COL_MAPPING => 'acc_no acc_no, mesg_dt mesg_dt, to_lob(MESG_TEXT) MESG_TEXT'
 7 );
8* end;

上一页  4 5 6 7 8 9 10  下一页

Tags:Oracle 特性 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接