问题描述: 大量的外部终端通过socket访问内部的UNIX服务器,要求从服务器的Oracle数据库中得到数据在终端处理显示。这里要求socket最大的传输量是5000个字符,那么对于海量数据就要求分批次取得数据并且多次传输,怎么实现呢?
解决方案:首先考虑使用ROWNUM,但是在Oracle(version 10g)中,ROWNUM不能使用">", 并且经过简单测试,发现“ORDER BY XXX”与 ROWNUM结合起来查询时,不能确保查询到的数据一致,顺序变了(为什么?我想可能是先做了SELECT, 然后再做的ORDER BY 排序,所以会出现这种情形。真相以后再查证啦..)。所以考虑嵌套SELECT解决ROWNUM不能使用“>”的问题,那么ORDER BY 呢?考虑到ROWID是唯一标识记录的标志,就用ORDER BY ROWID吧,简单测试后,问题貌似解决了。
SELECT<

针对大量外部终端通过socket访问UNIX服务器上的Oracle数据库获取海量数据的问题,由于socket传输限制,需分批读取。由于ROWNUM在Oracle 10g中不能与">"配合使用,且与ORDER BY结合可能导致顺序不一致,解决方案是使用嵌套SELECT结合ORDER BY ROWID进行分批查询,以ROWID作为唯一标识进行有序分批读取。目前方案待进一步测试验证。
最低0.47元/天 解锁文章
3050

被折叠的 条评论
为什么被折叠?



