Modern versions of Siebel use the Cost Based Optimizer (CBO) so the strategy used for gathering (and refreshing) statistics and histograms becomes increasingly important.

Sometimes, the strategy can be articulated by the Oracle DBA or may even be documented or SQL scripts may be supplied that define the strategy.

Normally, however, the definitive version of the truth lies in the data dictionary.

SQL> exec dbms_stats.gather_table_stats(ownname=>user,tabname=>'PERSON',cascade=>TRUE,
method_opt=>'FOR ALL COLUMNS SIZE AUTO');
SQL> select column_name,
to_char(last_analyzed, 'mm/dd/yyyy hh24:mi:ss') as last_analyzed, num_nulls,
global_stats, user_stats
from user_tab_col_statistics where table_name='PERSON' and column_name = 'SALARY';
COLUMN_NAME         LAST_ANALYZED       NUM_NULLS   GLOBAL USER
SALARY              10/23/2006 14:55:15    0         YES       NO
SQL> exec dbms_stats.set_column_stats(ownname=>user,tabname=>'PERSON',colname=>'SALARY',
nullcnt=>1000000);
SQL> /
COLUMN_NAME         LAST_ANALYZED       NUM_NULLS  GLOBAL USER
SALARY              10/23/2006 14:55:18   1000000   YES       YES

So when trying to answer to question: ‘Have you ever had cause to manually populate column statistics ?’, although the Oracle DBA is your friend, the USER_STATS column in the DBA_TAB_COL_STATISTICS view is your best friend.