小叶同学在使用sqlldr加载数据时,觉得commit次数太多了,想加载更多行后再commit一次,而不是默认的每64行commit一次
我提醒他使用rows参数可以控制多少行提交一次
结果他加上rows=1000后,没有生效,如下图:
我在自己机器上测试,rows参数是生效的,如下:
[oracle@goolen goolen]$ seq 1 10000 > id.txt
[oracle@goolen goolen]$ cat a.ctl
load data
append into table sqlldr_test
(id)
SQL> create table sqlldr_test(id number);
[oracle@goolen goolen]$ sqlldr scott/tiger control=a.ctl data=id.txt
SQL*Loader: Release 10.2.0.4.0 - Production on Wed Dec 24 15:49:50 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Commit point reached - logical record count 64
Commit point reached - logical record count 128
Commit point reached - logical record count 192
Commit point reached - logical record count 256
Commit point reached - logical record count 320
Commit point reached - logical record count 384
Commit point reached - logical record count 448
Commit point reached - logical record count 512
Commit point reached - logical record count 576
Commit point reached - logical record count 640
Commit point reached - logical record count 704
默认没加rows参数时,每64行提交一次
下面是加了rows参数后的情况:
[oracle@dg_135 goolen]$ sqlldr scott/tiger control=a.ctl data=id.txt rows=1000
SQL*Loader: Release 11.2.0.1.0 - Production on Wed Dec 24 15:53:52 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 1000
Commit point reached - logical record count 2000
Commit point reached - logical record count 3000
Commit point reached - logical record count 4000
Commit point reached - logical record count 5000
Commit point reached - logical record count 6000
Commit point reached - logical record count 7000
Commit point reached - logical record count 8000
Commit point reached - logical record count 9000
Commit point reached - logical record count 10000
后来看了下帮助手册,rows参数其实还受到参数bindsize的限制,决定让小叶加上这个参数试一次
发现加了bindsize参数后,虽然不是rows设置的每1000行提交一次,但是行数已经明显提高
这个应该是bindsize设置不够大的问题,决定让小叶再次加大bindsize后,已经能按rows设置的行数来提交。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23249684/viewspace-1378741/
,如需转载,请注明出处,否则将追究法律责任。