目标表中的默认值

时间:2013-06-19 01:48:02

标签: oracle oracle11g informatica informatica-powercenter

我有一些映射,在转换逻辑之后填充业务实体。行卷位于较高的一侧,并且有相当多的业务属性默认为某些静态值。

因此,为了减少从映射推送的数据,我在目标表上创建了“default”子句,并停止从映射本身提供它们。现在,当我在“正常”模式下运行会话时,这很好用。这有效地为我提供了目标表行,其中一些列由映射提供,其余列根据表DDL上的“default”子句获取值。

但是,由于我们正在处理更高端的卷,因此我希望以批量模式运行会话(目标表上没有预先存在的索引)。

只要我将会话切换到批量模式,此特定功能(默认值)就会停止工作。因此,我在目标列中获取NULL值,而不是定义“默认”值。

我想知道 -

  1. 这是预期的行为吗?
  2. 如果没有,我是否错过了某处的某些配置?
  3. 我应该向甲骨文出票吗?还是Informatica?
  4. 我的配置 -

    Informatica 9.5.1 64位, 同 Oracle 11g r2(11.2.0.3) 继续前进 Solaris(SunOS 5.10)

    期待在这里提供帮助......

2 个答案:

答案 0 :(得分:3)

可能是预期的行为。

似乎Informatica中的批量模式在Oracle中使用“直接路径”API(例如参见https://community.informatica.com/thread/23522

从此文档(http://docs.oracle.com/cd/B10500_01/server.920/a96652/ch09.htm,搜索字段“直接路径上的默认值”)我收集到:

  

数据库中定义的默认列规范不是   使用直接路径加载时可用。默认的字段   必须使用DEFAULTIF子句指定所需的值。如果一个   未指定DEFAULTIF子句且该字段为NULL,则为null   值被插入到数据库中。

这可能就是这种行为的原因。

答案 1 :(得分:1)

我不相信你会看到不包括默认值的好处,特别是与直接路径加载的好处相比。如果数据是只读的,那么也要考虑压缩。

您还应该注意,SQL * Net在同一列中对相同值进行压缩,因此即使在传统路径插入中,网络开销也不如您想象的那么高。