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

 
   | |

导读:本文主要介绍Oracle 10g R2特性之数据仓库和集成特性并列举了一些相关实例。

关键词:Oracle 10g R2 数据仓库 集成

正在加载数据...

  通过联机重新定义将LONG转换为LOB

  如果数据仓库数据库已经存在一段时间,并且您要处理大型文本数据,则您可能拥有大量数据类型为LONG的列。毋庸质疑,LONG数据类型在大多数数据操作环境(如通过SUBSTR 进行搜索)中是没有用处的。您肯定需要将它们转换为 LOB 列。

  可以使用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;

  注意第6行,该行已经对列进行了映射。前两列保持不变,但第三列MESG_TEXT已被映射,以便通过对源表的列应用函数TO_LOB来填充目标表的MESG_TEXT 列。

  如果要重新定义的表很大,则需要定期对源表和目标表之间的数据进行同步。该方法加快了最终同步的速度。

  begin
  dbms_redefinition.sync_interim_table( 
  uname      => ’ARUP’,  
  orig_table => ’ACC_MESG’, 
  int_table  => ’ACC_MESG_INT’
       );
  end;
  /

  根据表的大小,您可能需要多次执行以上命令。最后,使用以下代码完成重新定义过程

  begin
  dbms_redefinition.finish_redef_table (
  UNAME        => ’ARUP’,
  ORIG_TABLE   => ’ACC_MESG’,
  INT_TABLE    => ’ACC_MESG_INT’
  );
  end;
  /

  表 ACC_MESG 已经发生了变化:

  SQL> desc acc_mesg
  Name                              Null?Type
   ----------------------------------------- -------- ---------

  ACC_NO                                    NOT NULL NUMBER
  MESG_DT                                   NOT NULL DATE
  MESG_TEXT

  注意,MESG_TEXT列现在为CLOB而非LONG。

  该特性对于将错误定义的数据结构或原先遗留的数据结构转换为更容易管理的数据类型非常有用。

联机重组单个分区

  假设您有一个包含事务历史的表TRANS。该表基于TRANS_DATE进行分区,每个季度作为一个分区。在正常的业务过程中,最新的分区经常更新。某个季度过后,该分区上可能没有很多活动了,因此可以将它移动到其他位置。但移动本身将需要对表进行锁定,从而拒绝对分区的公共访问。如何在不影响其可用性的情况下移动分区?

  在Oracle数据库10g第2版中,可以对单个分区使用联机重新定义。您可以像对整个表执行重新定义(使用 DBMS_REDEFINITION 程序包)一样执行此任务,但底层机制并不相同。常规表是通过对源表创建物化视图重新定义的,而单个分区是通过交换分区方法重新定义的。

  我们来看一下它的工作原理。以下是TRANS表的结构:

  SQL> desc trans
  Name                              Null?Type
   --------------------------------- -------- -------------------------
  TRANS_ID                                   NUMBER
  TRANS_DATE                                 DATE
  TXN_TYPE                                   VARchar2(1)
  ACC_NO                                     NUMBER
  TX_AMT                                     NUMBER(12,2)
  STATUS     

  该表已经按如下所示进行了分区:

  partition by range (trans_date)
  (
  partition y03q1 values less than (to_date(’04/01/2003’,’mm/dd/yyyy’)),
  partition y03q2 values less than (to_date(’07/01/2003’,’mm/dd/yyyy’)),
  partition y03q3 values less than (to_date(’10/01/2003’,’mm/dd/yyyy’)),
  partition y03q4 values less than (to_date(’01/01/2004’,’mm/dd/yyyy’)),
  partition y04q1 values less than (to_date(’04/01/2004’,’mm/dd/yyyy’)),
  partition y04q2 values less than (to_date(’07/01/2004’,’mm/dd/yyyy’)),
  partition y04q3 values less than (to_date(’10/01/2004’,’mm/dd/yyyy’)),
  partition y04q4 values less than (to_date(’01/01/2005’,’mm/dd/yyyy’)),
  partition y05q1 values less than (to_date(’04/01/2005’,’mm/dd/yyyy’)),
  partition y05q2 values less than (to_date(’07/01/2005’,’mm/dd/yyyy’))


Oracle 10g R2特性之数据仓库和集成特性
 Oracle 10g R2特性之数据仓库和集成特性(五)
 Oracle 10g R2特性之数据仓库和集成特性(四)
 Oracle 10g R2特性之数据仓库和集成特性(三)
 Oracle 10g R2特性之数据仓库和集成特性(二)
 Oracle 10g R2特性之数据仓库和集成特性(一)

 
来源:iTbulo    
 
 
 
 
 

Oracle数据仓储与商业智能

 
距甲骨文顺利收购Sun微系统已经有一个多月的时间了,但貌似到现在为止,最新的数据仓库策略还是很不明朗。
 
还需要更多的理由来证明数据仓库市场中的竞争还像原来一样激烈吗?这个观点怎样呢:很多厂家正在免费开放他们的分析型数据库,虽然有一些附加条件。
 
云计算和相关的“数据云”适合分布式数据和分布式企业。创业和那些喜欢研究样机的人也将受益于云模型。
 
面向列的分析型数据库越来越引起人们的注意。简明扼要地说,面向列的数据库将行分解成多个数据元素,并且储存的数据库元素对应于所有的行。
 
OBIEE使得构造流感监控仪表盘变得更加容易。Kaleida从Oracle的Discoverer产品转向OBIEE,前者可以生成一个比较仪表盘,但是不易于使用。

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录