使用的数据库: Oracle 11g
操作系统: Red Hat linux
使用的技术: Java& ibatis的
说明:
怎么做?
问题:
目前我们使用java / Ibatis完成了这项工作。我们经常遇到java堆空间问题,因为它包含在crontab中,每隔30分钟它会处理数据并使环境变慢。
当前方法:
- 使用以下查询获取的参考号,用户名,年龄和状态 从tableA中选择referenceno,name,age,status,status =' FAILED'。 它几乎返回20lac行,并且存储在arraylist中。
,每行与referenceno,name,age在表格中进行比较如下 从tableB中选择count(*),其中referenveno = tableA.referenceno和name = tableA.name和age = tableA.age和deleteflag =' N&#39 ;.(如上所述,tableB有近40lac记录)。
如果上面的查询返回1,那么它将更新tableA,状态为PASSED,
如果返回(< 1),它将更新tableA,状态为FAILED,并且备注为未找到匹配。
如果返回(> 1),它会更新tableA,状态为FAILED并且备注为'找到多个匹配'。
希望使用shell脚本/ perl可以完成这项工作吗?请建议最好的方法!!!
答案 0 :(得分:2)
我建议写PL / SQL存储过程应该是最快的方法 - Oracle数据库不需要将数据发送到java应用程序。
您可以通过oracle作业机制安排这样的PL / SQL程序。