Most likely the execution of your query is very slow.
You can see how the query in executed in the database by using explain plan.
If you have SQL*Plus you can do this very easy with the following statement:
set autotrace traceonly
Then type in the query, and you will get statistics on your query like this:
SQL> set autotrace traceonly
SQL> select * from o_drops;
4461 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 3820245448
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4287 | 280K| 11 (10)| 00:00:01 |
| 1 | TABLE ACCESS FULL| O_DROPS | 4287 | 280K| 11 (10)| 00:00:01 |
-----------------------------------------------------------------------------
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
333 consistent gets
48 physical reads
0 redo size
337057 bytes sent via SQL*Net to client
2316 bytes received via SQL*Net from client
299 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4461 rows processed
If one of the resources is very high, it could work to rewrite the query and/or add indexes to the
table you are using.