Следующий запрос не возвращает результат в правильном порядке между клиентом и сервером в oracle 12 c
SELECT /*+ FIRST_ROWS INDEX_ASC( IDX) */ .... Union all SELECT /*+ FIRST_ROWS INDEX_ASC(IDX) */
Используйте предложение ORDER BY:
SELECT ... UNION ALL SELECT ... ORDER BY idx
ORDER BY применяется глобально к наборам результатов, возвращаемым на каждой стороне UNION.