I'm not following your example. You need to add the column to the MV table you preserved:
create table t (x integer primary key, y integer);
create materialized view log on t;
insert into t values (1, 10);
commit;
create materialized view mv as
select x from t;
select * from mv;
X
1
drop materialized view mv preserve table;
select * from mv;
X
1
create materialized view mv on prebuilt table
refresh fast on demand
as
select x, y from t;
SQL Error: ORA-12060: shape of prebuilt table does not match definition query
alter table mv add y int;
create materialized view mv on prebuilt table
refresh fast on demand
as
select x, y from t;
set null <null>
select * from mv;
X Y
1 <null>
Then do a complete refresh of the MV to pick up the new values:
exec dbms_mview.refresh('MV', 'F');
select * from mv;
X Y
1 <null>
exec dbms_mview.refresh('MV', 'C');
select * from mv;
X Y
1 10