我正在使用外壳脚本从'extr'表中提取数据。 extr table是一个有410列的非常大的桌子。该表有61047行数据。一个记录的大小约为5KB。在假脱机文件列中移位
我的脚本如下:
#!/usr/bin/ksh
sqlplus -s \/ << rbb
set pages 0
set head on
set feed off
set num 20
set linesize 32767
set colsep |
set trimspool on
spool extr.csv
select * from extr;
/
spool off
rbb
#-------- END ---------
一个细一天extr.csv文件具有2个记录用不正确的列数(即,一个记录有更多的列数和其他具有较少)。经调查,我知道这两个重复的记录在文件中重复。记录的主键理想情况下应该是唯一的文件,但在这种情况下,重复2条记录。另外,列中的转变是突然的。 输出文件的小例子:
5001|A1A|AAB|190.00|105|A
5002|A2A|ABB|180.00|200|F
5003|A3A|AAB|153.33|205|R
5004|A4A|ABB|261.50|269|F
5005|A5A|AAB|243.00|258|G
5006|A6A|ABB|147.89|154|H
5003|A7A|AAB|249.67|AAB|153.33|205|R
5004|A8A|269|F
5009|A9A|AAB|368.00|358|S
5010|AAA|ABB|245.71|215|F
这里是5003和5004的主键记录到位的5007和5008已经再次出现同样的重复reciords已通过追加/削减转移的5007和5008记录他们的专栏。
需要你的帮助来分析为什么会发生这种情况?为什么2行被多次提取?为什么其他2行从文件中丢失?为什么记录被转移? 注意:该脚本自过去两年以来一直运行良好,除了一次(以上提到)以外从未失败。它在下次运行中成功运行。最近我们又添加了一个用光标访问extr表的程序(仅供选择)。
有人在第一次使用相同的输出文件运行时启动脚本吗? extr.csv分区是否已满?什么东西重新启动?环境中发生了什么奇怪的事情? – 2015-02-27 21:22:07
在这种情况下,5个脚本由包装脚本并行运行。所有的脚本都在后台触发,包装器等待所有脚本完成。3个是使用'select'查询提取数据的shell脚本,其余2个是COBOL程序。一个COBOL程序通过声明一个游标来从'extr'中读取数据。包装脚本使用TWS调度程序进行调度。没有其他脚本与包装并行运行。文件系统中有足够的可用空间。什么都没有重新启动。事件发生当天环境很正常,没有什么奇怪的报道。 – Sandy 2015-03-02 07:34:41
嗨@WalterA您能否根据我的回答提供一些意见? – Sandy 2015-03-14 07:50:25