导读
今天,系统中的一个业务处理莫名地执行了6个小时都没有结束,正常处理也就是3分钟左右,对原因进行定位,发现是在Oracle客户端上同步执行一个命令没有响应。今天来分享一下这个问题,让更多的人避开这个坑。
正文
1、业务场景
我们要把一个csv文件(文件名biz.csv)中的数据读取到Oracle数据库表(表名t_biz,t_biz)中,数据库表t_biz表结构如下:
biz.csv文件内容如下:
id,a,b,c
1,a1,b1,c1
2,a2,b2,c2
3,a3,b3,c3
把biz.csv文件的内容读入到表t_biz,为了提高效率,这里使用了sqlldr 命令,命令如下:
sqlldr test/test123@biz control=/home/jinjunzhu/biz/T_BIZ.ctl log=/home/jinjunzhu/biz/T_BIZ.log bad=/home/jinjunzhu/biz/T_BIZ.bad
解释一下这个命令,test/test123 是要访问的数据库实例的用户名/密码,biz 是数据库实例名称。T_BIZ.ctl是控制文件,内容如下:
options(skip=1,rows=10000,errors=0,parallel=true,bindsize=1048576,readsize=10