Tal y como te he comentado por otros cauces, creo que el problema es debido a que no estás haciendo lo mismo en ambos casos. No estás trayendo el mismo número de registros.
Me da la impresión (y me ha parecido leer que usas ClientDataset -cosa que lo reafirmaría-) de que con delphi estás trayendo TODOS los registros de la consulta, cosa que no se hace cuando la ejecutas desde el cliente de Oracle.
Has una prueba; Te puedo decir cómo hacerla con ADO, porque no se si los componentes que utilizas poseen la propiedad de cambiar el
tipo de cursor.
Si la tienen prueba con los que usas, sino prueba con ADO y sabrás si ese es el problema:
(1) Coloca un formulario y un ADOQuery.
(2) Rellena la SQL y creo la cponexión con Oracle.
(3) Abre la consulta a ver qué tarda.
(4) Haz lo mismo cambiando los valores del cursor para Cliente y Server y a ver si se nota diferencia.
Un saludo.