通过备份实现可传输表空间

Oracle8i 中引入的可传输表空间为实现更快的跨数据库数据传输提供了迫切需要的支持。使用此特性,

您可以只导出表空间的元数据、传输数据文件并将转储文件导出到目标数据库主机以及导入元数据以将表空间

“插入”到目标数据库中。该表空间中的数据在目标数据库中随即可用。该方法解决了数据仓库中曾一度存在

的一个很棘手的问题:快速、高效地跨数据库移动数据。

但在 OLTP 数据库中,该条件通常是不可能存在的,因此传输表空间也是不可能的。如果 OLTP 数据库

是数据仓库的数据源,则您可能始终无法使用可传输表空间加载它。

在 Oracle 数据库 10g 第 2 版中,可以传输表空间并从另一个数据源(即备份)中插入它。例如,

如果要传输表空间 ACCDATA,则可以发出 RMAN 命令RMAN> transport tablespace accdata

2> TABLESPACE DESTINATION = '/home/oracle'

3> auxiliary destination = '/home/oracle';该命令在位置 /home/oracle 中创建一个辅助实例,并从其中的备份恢复文件。此辅助实例的名称是

随机生成的。创建实例后,该过程将基于目录创建一个目录对象,并恢复表空间 ACCDATA(我们正在传输的

表空间)的文件 - 所有操作均自动完成,您不必发出任何命令!

目录 /home/oracle 将包含表空间 ACCDATA 的所有数据文件、表空间元数据的转储文件以及脚本

impscrpt.sql(最重要的)。该脚本包含将此表空间插入目标表空间所必需的所有命令。该表空间并非由

impdp 命令进行传输,而是通过对 dbms_streams_tablespace_adm.attach_tablespaces 程序包的

调用进行传输。可以在该脚本中找到所有必要的命令。

您可能会问,如果出现错误该怎么办?这种情况下,可以轻松地进行诊断。首先,该辅助实例在

$ORACLE_HOME/rdbms/log 中创建警报日志文件,以便您可以检查该日志以查明潜在的问题。其次,在提

供 RMAN 命令时,您可以通过发出 RMAN 命令(该命令将所有输出置于文件 tts.log 中)将命令和输出重

定向到日志文件 rman target=/ log=tts.log

然后,您便可以检查该文件来查明故障的确切原因。

最后,将把这些文件恢复到 /home/oracle 的 TSPITR__ 目录中。例如,

如果主数据库的 SID 为 ACCT,RMAN 创建的辅助实例的 SID 为 KYED,则目录名为

TSPITR_ACCT_KYED。该目录还包含两个其他子目录:datafile(用于数据文件)和 onlinelog

(用于重做日志)。在完成新表空间的创建之前,可以查看该目录以了解恢复了哪些文件。(这些文件在该过

程结束时会被删除。)

长期以来,DBA 一直期待着能够通过 RMAN 备份创建一个可传输的表空间。但请注意,您是从备份

(而不是从联机表空间)中插入传输的表空间。因此,它将不是最新的。

对已分区的按索引组织的表实现快速的分区分割

考虑这样一种情况:假设您拥有一个已分区的表。月末到了,但您忘了为下一个月定义分区。您现在有哪

些选择呢?

您唯一的救济方法就是将最大值分区分割为两个部分:一个用于新月份的分区和一个新的最大值分区。

但将该方法用于已分区的按索引组织的表时将遇到一个小问题。这种情况下,将先创建物理分区,并将行从最

大值分区移动到该分区,这样将消耗 I/O 和 CPU 周期。

在 Oracle 数据库 10g 第 2 版中,该过程得到显著简化。如下图所示,假设您将分区一直定义到

5 月份,然后已经将 PMAX 分区定义为一个通用分区。由于 6 月份没有特定分区,因此 6 月份数据进入

PMAX 分区。灰显的方框显示了填充到该段中的数据。由于只填充了部分 PMAX 分区,因此您只看到一部分

灰色区域。

现在,在 6 月 30 日对分区 PMAX 进行分割,以创建 6 月分区和新的 PMAX 分区。由于当前

PMAX 中的所有数据都将进入新的 6 月分区,因此 Oracle 数据库 10g 第 2 版只创建新的最大值分区,

并使现有分区成为新创建的月分区。这就导致了根本不会发生数据移动(因此没有“空”的 I/O 和 CPU 周

期)。而最好之处在于,ROWID 不会发生变化。

通过联机重新定义将 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。

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

oracle 数据仓库 特性,Oracle10g 特性之数据仓库和集成特性相关推荐

  1. Greenplum 实时数据仓库实践(1)——数据仓库简介

    目录 1.1    什么是数据仓库 1.2    操作型系统与分析型系统 1.2.1 操作型系统 1.2.2 分析型系统 1.2.3 操作型系统和分析型系统对比 1.3 抽取-转换-装载 1.3.1 ...

  2. Greenplum 实时数据仓库实践(2)——数据仓库设计基础

    目录 2.1    关系数据模型 2.1.1 关系数据模型中的结构 2.1.2 关系完整性 2.1.3 关系数据库语言 2.1.4 规范化 2.1.5 关系数据模型与数据仓库 2.2    维度数据模 ...

  3. 数据仓库介绍:什么是数据仓库、数据仓库功能、数据仓库价值、数仓领域职业发展方向规划

    数据仓库介绍:什么是数据仓库.数据仓库功能.数据仓库价值.数仓领域职业发展方向规划 大家好,本次分享的主题是数据仓库,通过本次分享的目的,一个是帮助到初次接触大数据行业.或者想要了解大数据体系的伙伴, ...

  4. HTML中三维特性,前端进阶系列(三):HTML5新特性

    HTML5 是对 HTML 标准的第五次修订.其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入.HTML5 的语法是向后兼容的.现在国内普遍说的 H5 是包 ...

  5. 戏说数据仓库,商业智能BI中数据仓库的本质是什么?

    平时和朋友聊天,一谈到商业智能BI总是离不开数据仓库,有很多人不太明白数据仓库到底在商业智能BI项目中有什么作用,对数据仓库的作用有些争论,所以今天来聊聊数据仓库,探讨下数据仓库的真正用处. 数据仓库 ...

  6. 数据仓库专题(6)-数据仓库、主题域、主题概念与定义

    一.数据仓库 关于数据仓库概念的标准定义业内认可度比较高的,是由数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的"Building the Data Warehouse&qu ...

  7. 二极管的结构、特性、参数、稳压管的特性和参数

    二极管的结构.特性.参数.稳压管的特性和参数 本文介绍的定义 一.半导体类型 二.PN结的结构与单向导电性 三.二极管的伏安特性 四.二极管的参数 五.稳压管 本文介绍的定义 本文介绍的定义:半导体. ...

  8. 数据中台的数据仓库和商业智能BI的数据仓库有什么区别?

    数据中台的数据仓库和商业智能BI的数据仓库本质上没有任何区别,都是在底层业务系统数据源和上层应用之间做了一个隔离层,进行上下两层的解耦合.从数据分析应用角度来讲,不管是大数据还是小数据,都是把业务系统 ...

  9. 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库

    数据中台-数据仓库建模设计方法和实现 客户包括中国移动等数十个世界五百强客户.长期为中国银行,招商银行,建设银行提供数据库和大数据相关培训服务. 目前担任上海某大数据技术公司CTO. 储成宇 ¥298 ...

  10. 政府信息化与电子政务、企业信息化与电子商务、数据库和数据仓库的区别、商业智能系统处理过程、数据仓库结构图、数据挖掘、数据仓库和数据湖的对比

    政府信息化与电子政务.企业信息化与电子商务.数据库和数据仓库的区别.商业智能系统处理过程.数据仓库结构图.数据挖掘.数据仓库和数据湖的对比 政府信息化与电子政务 企业信息化与电子商务 1.企业资源计划 ...

最新文章

  1. 增加内核的ceph模块的日志打印
  2. 算法导论——二叉查找树
  3. 块级格式化上下文(Block Formatting Context)
  4. Kubernetes存储之volume
  5. (七)boost库之单例类
  6. 开源项目|从0到1教你搭建一个适配于智能车的目标检测系统
  7. 巧用PowerShell维护Win2008服务器作业
  8. 把你的项目升级到IE8
  9. cpu顶盖怎么看步进_拆解报告|360AI音箱,深度硬件解析,带你看懂360智能音箱内部...
  10. DDoS是什么意思?
  11. ITIL框架结构剖析
  12. 三乘三魔方教程,按步骤来肯定能搞出来
  13. $.ajax %5b%5d,数据传回后台数带有%5B%5D的问题
  14. 算术平均值c语言函数名称,求算术平均数和集合平均数的源代码
  15. 塔望食业洞察|中国有机食品市场研究与发展策略思考
  16. EtcGame华丽升级为Coingame 新增ETH投注!
  17. subprocess
  18. 基于Axure的火车售票系统——高保真原型图
  19. 2022.7.26刷题合集
  20. SpringBoot整合支付宝付款(沙箱环境)

热门文章

  1. 晋中计算机专业对口大学,山西晋中计算机专业学校排名太重技校专业好
  2. CC1101无法进入WOR状态,参照手册发送SWOR命令之前应该是空闲状态并且WORCTRL.RC_PD=0.
  3. mysql英文怎么发音_mysql5.5安装教程:mysql下载与安装
  4. 看原版英文和译版中文
  5. echart象形图中的上方图片路径问题
  6. Kong 1.0通用(GA)版本正式发布!
  7. ng new my-app
  8. Android 壁纸应用之动态壁纸
  9. java基于springboot+vue+elementui的电子产品交流论坛
  10. 2022校招百度内推码 oi4rhj