From what I can see from your posting:
begin
DBMS_MVIEW.REFRESH('sys.My_View','c');
end;
You're creating the materialized view in schema SYSTEM, but try to refresh an mview in schema SYS - that cannot work.
The error message you're getting doesn't seem to be accurate, though, you should be getting ora-23401 if that is the cause - I only tested on 10gr2, so 9i might react differently but I cannot test this right now.
system@CENTRAL> grant create session, alter any materialized view to user1 identified by user1;
Grant succeeded.
system@CENTRAL> create table t1 (x int primary key);
Table created.
system@CENTRAL> create materialized view v1 as select * from t1
2 ;
Materialized view created.
system@CENTRAL> @conn user1/user1
Connected.
user1@CENTRAL> exec dbms_mview.refresh('SYSTEM.V1
');
PL/SQL procedure successfully completed.
user1@CENTRAL>
Either way, you really shouldn't be using SYS or SYSTEM for userdata.
Stefan