The schema object to be analyzed must be local, and it must be in your own schema or you must have the ANALYZE ANY system privilege.
If you want to list chained rows of a table or cluster into a list table, the list table must be in your own schema, or you must have INSERT privilege on the list table, or you must have INSERT ANY TABLE system privilege.
If you want to validate a partitioned table, you must have INSERT privilege on the table into which you list analyzed rowids, or you must have INSERT ANY TABLE system privilege
Originally posted by davey23uk a user can analyze their own tables
someone with dba rights can analyze other peoples tables
This changed in 9.2 a bit. I tried (as user A having the DBA role) to analyze the (tables and) indexes of user B using DBMS_STATS. ANALYZE ANY was not enough. SELECT ANY TABLE is now also needed in 9.2.
Check 203220.1 for more information.
Oracle Certified Master
Oracle Certified Professional 6i,8i,9i,10g,11g