rownum é uma pseudo coluna que conta linhas no conjunto de resultados após a aplicação da cláusula where.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
No entanto, essa consulta sempre retornará zero linhas, independentemente do número de linhas na tabela.
Para explicar esse comportamento, precisamos entender como o Oracle processa o ROWNUM. Ao atribuir ROWNUM a uma linha, o Oracle inicia em 1 e só incrementa o valor quando uma linha é selecionada; ou seja, quando todas as condições da cláusula WHERE forem atendidas. Como nossa condição requer que ROWNUM seja maior que 2, nenhuma linha é selecionada e ROWNUM nunca é incrementado além de 1.
http://blog.lishman.com/2008/03/rownum.html
outro link stackoverflow
Editado
este parágrafo eu encontro no oracle site que é muito melhor
As condições de teste para valores ROWNUM maiores que um número inteiro positivo são sempre falsas. Por exemplo, esta consulta não retorna nenhuma linha:
SELECT * FROM employees
WHERE ROWNUM > 1;
A primeira linha buscada recebe um ROWNUM de 1 e torna a condição falsa. A segunda linha a ser buscada agora é a primeira linha e também recebe um ROWNUM de 1 e torna a condição falsa. Todas as linhas subsequentemente falham em satisfazer a condição, portanto, nenhuma linha é retornada.
Você também pode usar ROWNUM para atribuir valores exclusivos a cada linha de uma tabela, como neste exemplo: