Try to discover this problem with ur optimazer:

1) Event 10053 will put to trace file choices which will made CBO.

alter sesssion set events '10053 trace name context forever level 1; -- for more detailed report
or
alter sesssion set events '10053 trace name context forever level 2; -- for less detailed report

in trace file check how optimazer use bind variables in both
(from sqlplus and DBI) cases.
Oracle will output text sql statments from sql area,
as i can undestand AS IS.
Then in trace file will be information about all indexes, that can be use in query and about all tables/partitions,
but oracle print table names and object #, not index name.
U have to check index names from dictionary.