oracle direct-load,oracle数据库数据加载---Direct*load

oracle数据库数据加载(Direct Load)

一.

对oracle数据库来说有很多数据加载方式,如 imp,sql*loader,directLoad。这些都是为了方便对oracle数据库进行快速的数据加载。 imp,sql*loader这两种工具的数据来源都依赖于外部文件。而directLoad却是一种不依赖外部文件,在不同数据库之间和数据库内部进行数据加载的方式。 现在就主要对directLoad进行说明。

二.

其实DirectLoad的功能就是一个表到一表的数据copy, 这过程中 oracle 允许有一些特殊的选项来加快数据的加载, 比如 并行DML , nologging 的方式。 正是有了这些加快数据加载的选项,才对此加载方式多了几分考虑(其实也算得上是忧虑)

下面来看忧虑何来,首先来看看下面这个加载操作:

insert /*+ append */ into target_tab   nologging

select  *  from source_tab ;

这个操作绕过数据redo,undo机制,sql引擎的方式直接将数据插入到target_tab表中。 如果你作为一数据管理者来说的话,你看这个这个操作之后第一反应就马上备份这个target_tab。 因为 append 和 nologging 这两个选项完全背离数据的基本机制,在数据恢复中会造成失败。 同时这个操作产生的新数据,是在来高水位之上的,这就会对部分空间的浪费,也会造成全表扫描减慢。

再来看一操作,

alter session enable parallel  dml ;

insert  /*+ paralle(target_tab , 2) */  into target_tab  nologging

select  * from source_tab ;

注意:这个操作必需在一个事物中完成。 如果还需此操作,还得另起事物。

这个操作是让DirectLoad并行加载,paralle(target_tab , 2)表示以两个并行会话对target_tab并行加载数据。 在oracle数据中,并行操作本质就是一种以牺牲物理资源,来换取时间(相当于空间换时间) 。 在这种情况下,做这种操作要仔细考虑你的硬件资源是否允许,盲目并行操作,有时适得其反。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值