Ok. How to redesign the query?
You mean in where clause for first query
set:
where ...
rownum between 1 and 2147483647
for second query set:
where ...
rownum between 2147483647 and 4294967294 --2147483647+2147483647

of course I'm use bind variables instead of integer values

If used rownum, this is will be guaranteed what queries not return cross records?