Ya se ha dicho que Oracle puede darle las filas en el orden que desee, cuando no especifica una cláusula ORDER BY. Especular cuál será el orden cuando no se especifica la cláusula ORDER BY no tiene sentido. Y confiar en su código es un "movimiento limitante de carrera".
Un ejemplo sencillo:
SQL> create table t as select level id from dual connect by level <= 10
2/
Tabel is aangemaakt.
SQL> select id from t
2/
ID
----------
1
2
3
4
5
6
7
8
9
10
10 rijen zijn geselecteerd.
SQL> delete t where id = 6
2/
1 rij is verwijderd.
SQL> insert into t values (6)
2/
1 rij is aangemaakt.
SQL> select id from t
2/
ID
----------
1
2
3
4
5
7
8
9
10
6
10 rijen zijn geselecteerd.
Y esto es sólo después de un simple + inserto de eliminación. Y hay muchas otras situaciones pensables. Ejecución paralela, particiones, tablas organizadas por índice para nombrar solo algunas.
En pocas palabras, como ya dijo muy bien por ammoQ: si necesita las filas ordenadas, use una cláusula ORDER BY.
Esta es una pregunta que muchos (He visto el pop-up en varios foros). Creo que puede ser desencadenada por la falsa creencia de que "ORDER BY" obligará a la CBO a realizar una clasificación, lo que obviamente es más costoso que realizar una consulta desordenada. Hay formas de mejorar el rendimiento de clasificación en Oracle, pero no requieren evitar la cláusula "ORDER BY". –