rownum es una pseudocolumna que cuenta filas en el conjunto de resultados después de que se haya aplicado la cláusula where.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
Sin embargo, esta consulta siempre devolverá cero filas, independientemente del número de filas de la tabla.
Para explicar este comportamiento, necesitamos entender cómo Oracle procesa ROWNUM. Al asignar ROWNUM a una fila, Oracle comienza en 1 y solo incrementa el valor cuando se selecciona una fila; es decir, cuando se cumplen todas las condiciones de la cláusula WHERE. Dado que nuestra condición requiere que ROWNUM sea mayor que 2, no se seleccionan filas y ROWNUM nunca se incrementa más allá de 1.
http://blog.lishman.com/2008/03/rownum.html
Editado
este párrafo lo encuentro en oracle sitio web que es mucho mejor
Las condiciones que prueban valores ROWNUM mayores que un entero positivo siempre son falsas. Por ejemplo, esta consulta no devuelve filas:
SELECT * FROM employees
WHERE ROWNUM > 1;
A la primera fila recuperada se le asigna un ROWNUM de 1 y hace que la condición sea falsa. La segunda fila que se recuperará ahora es la primera fila y también se le asigna un ROWNUM de 1 y hace que la condición sea falsa. Todas las filas posteriormente no cumplen la condición, por lo que no se devuelven filas.
También puede usar ROWNUM para asignar valores únicos a cada fila de una tabla, como en este ejemplo: