DB version 9.2.0.4.0 on Sun Solaris

I have a table BALANCE which partitioned on a date column and has other local indexes which start with the date column e.g.

Index1:
Date_col
Reason_code
...

I do a simple query such as:

select * from balance where date_col = '31-mar-06'

and the query plan shows it is using Index1. This is extremely inefficient: since the table is partitioned on date_col, it is obviously much more effective just to do a full table scan of the partition than use an index. If I add a FULL hint to query, performance improves dramatically.

To get stats on the tables, I used the dbms_stats package:

Code:
begin 
dbms_stats.gather_table_stats( 
OWNNAME => 'XXX', 
TABNAME =>'BALANCE', 
PARTNAME =>'XXX',
METHOD_OPT => 'FOR ALL INDEXED COLUMNS SIZE 1',
ESTIMATE_PERCENT => 20,
GRANULARITY => 'ALL',
CASCADE => TRUE );
end;
It looks as if DBMS_STATS is not really understanding that the table is partitioned and is not coming up with plans which utilize the partitioning properly. Is there any way to get better stats and plans ?