Tamil showed you Oracle just read 500 (only) when you specify ROWNUM <=500 and how Oracle will do an ORDER BY on rows which was never red?

Use subquery for this

SELECT * FROM ( Your original query with ORDER BY) where rownum <=500

But the plan will be different and will fetch all rows satisfying your condition.