第一个是在用高版本的sqlldr向低版本的数据库中装载数据时遇到的, 解决的方法是将DIRECT=TRUE去掉, 不用DIRECT方式装载. 错误信息为:
SQL*Loader-951: Error calling once/load initialization
ORA-00942: table or view does not exist
第二个问题是, sqlldr装载很慢, 一开始几乎以为是sqlldr死了, 装载几十条记录恢然等了足足十几分钟, 不管是DIRECT方式还是常规方式. 最后仔细地检查了一下, 原来是数据库中表的字段定义小了, 在log中报字段值过长, 改了就好了.
第三个问题的情况和上面一个一样, 只不过最后的原因是因为出问题的数据库的字符集是UTF8, 而好的那个数据库的字符集是ZHS16GBK, 一些中文转换成UTF8时变长了, 导致了和字段不够长一样的效果.
其中第二个问题是别人遇到的, 当时他用805版本的sqlldr试的, 而我用10g的版本试的, 还以为是sqlldr版本的问题. 其实没有那么多版本的问题, 这种最基本的功能应当是最稳定的. 值得写下来纪念一下.
留言 (1)
自从Oracle有了External Table以后,
已经很少很少接触SQL*Loader啦.
Posted by 木匠 | May 8, 2007 1:36 AM