En realidad, no tengo disponibilidad de Oracle ahora, pero la mejor consulta SQL para la paginación es la siguiente, seguro
select *
from (
select rownum as rn, a.*
from (
select *
from my_table
order by ....a_unique_criteria...
) a
)
where rownum <= :size
and rn > (:page-1)*:size
http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
Para lograr una paginación consistente debe ordenar filas utilizando un criterio único , al hacerlo evitará cargar para la página X una fila que ya cargó para una página Y ( !=X ).
EDITAR:
1) Ordenar filas usando un criterio único significa ordenar datos de manera que cada fila mantenga la misma posición en cada ejecución de la consulta
2) Un índice con todas las expresiones utilizadas en la cláusula ORDER BY ayudará a obtener resultados más rápido, especialmente para las primeras páginas. Con ese índice, el plan de ejecución elegido por el optimizador no necesita ordenar las filas porque devolverá filas desplazando el índice por su orden natural.
3) Por cierto, la forma más rápida de obtener un resultado de página de una consulta es ejecutar la consulta solo una vez y manejar todo el flujo desde el lado de la aplicación.