自从我使用压缩表将加载器从 direct=false 切换到 direct=true 那天起,我在 Oracle 10g 数据库中得到了非常奇怪的结果..
例如,当我在加载程序之后进行类似的查询时:
从 mytable 中选择 *,其中月份为空
我没有得到答案..
但是当我查询特定行时 从 mytable 中选择 *,其中 id = 123 出现的行有一个“月”列 (vharchar2(10)),该列为空! 我从来没有见过这个..
而且这只发生在我的 200000 多行表中的几行..
你知道会发生什么吗?
我已经切换回 direct=false 并且运行正常..不再出现奇怪的行为.. 我能做些什么 ?测试?
谢谢
最佳答案
也许您的列不为空,但包含不可打印的字符。您可以对列进行转储吗,即:
SQL> select rownum, dump(a) from test;
ROWNUM DUMP(A)
---------- ---------------------------------
1 NULL
2 Typ=1 Len=1: 0
这里第一行有一个 NULL 值,而第二行有一个非空字符 (CHR(0)
)。
您可以在数据库上运行以下查询来查看您的列是否确实为 NULL:
select dump(month) from mytable where id = 123
关于Oracle直接加载似乎会产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023388/