I read that analyze_schema can sometimes lock the whole system...is this true ? how do you avoid that ?

I have these 2 scripts for analyze_schema..

BEGIN

sys.dbms_utility.analyze_schema ( '&OWNER','COMPUTE');

END ;

/
BEGIN

dbms_utility.analyze_schema ( '&OWNER', 'ESTIMATE', NULL, 5 ) ;

END ;

/

Whats the difference between ESTIMATE and COMPUTE...
We always do compute here. When will you do Estimate ?
When do you do validate structure ?

Also if you do analyze table it does analyze indexes too right, I saw the new date in user_indexes tables..just wanted to confirm this.

If say I analyze all of my tables today i.e May 21st... and I do lots of DML on that database. For how long will they be using cost based optimizer ? In other words when do I need to analyze all my tables again ?


thanks
Sonali