If you think Oracle should be using an index to resolve your query and it is not doing so, then make sure the index exists. Here are two ways to check:
Using Oracle Enterprise Manager (OEM), open up your database in the Navigator window; open the Schema folder; open the schema that owns your query table; open Tables; find your table name and open it; open Indexes. Click on each index listed, and the indexed column(s) will show in the right hand pane.
For those who don't have OEM (and those that find it too slow), download
show.sql and run it from SQL*Plus as follows:
my_table_name is the table you expect to be indexed.
show.sql will list the columns in the table, followed by a list of the indexes including their uniqueness, followed by the columns of each index.
If you can't find the table, perhaps it is a VIEW, or a SYNONYM to a table in another schema.
Do any indexes exist? If so, is there one where the leading columns of the index match the columns of your WHERE clause?
If the answer is NO to either of these questions, then the problem is that there is no index that covers your SQL. Perhaps the index has been accidently dropped, or it never existed at all. You have four choices: