create pluggable database NIHILUS admin user NIHILUS$OWNER identified by secret;
alter pluggable database NIHILUS open;
alter pluggable database NIHILUS save state;

orapwd file=orapwSITHPRD password="ad420e57a205c9a7d80d!"

alias NIHILUS='rlwrap sqlplus adm/"secret"@bakura:1521/NIHILUS as sysdba'

alter session set container=NIHILUS;

create user DEMO identified by secret;
grant connect, resource to DEMO;
grant create materialized view to DEMO;
grant create view to DEMO;
grant unlimited tablespace to DEMO;

alias DEMO='rlwrap sqlplus DEMO/"secret"@bakura:1521/NIHILUS'

create table DEMO as 
  select 0 seq,current_timestamp now 
     from 
     xmltable('1 to 1000');


-- infinite_update.sql
whenever sqlerror exit failure
begin
   loop 
     update demo set seq=seq+1,now=current_timestamp where rownum=1;
     commit; 
     dbms_session.sleep(1);
   end loop;
end;
/


select max(seq),max(now) from DEMO.DEMO;
create materialized view DEMOMV1 as select * from DEMO;
create materialized view DEMOMV2 as select * from DEMO;

create view V as
              select 'DEMOMV1' source,seq,now from DEMOMV1
              union all
              select 'DEMOMV2' source,seq,now from DEMOMV2
              union all              
              select 'DEMO' source,seq,now from DEMO;

set lines 256
col maxseq for 999999999
col maxnow for a50

select source,max(seq) maxseq,max(now) maxnow from V group by source;


exec dbms_refresh.make('DEMO.DEMORGROUP', list=>'DEMOMV1,DEMOMV2', next_date=>null, interval=>'null');

exec dbms_refresh.refresh('DEMO.DEMORGROUP');

-- we can index and gather stats on materialized views
create index IMV1 on DEMOMV1(seq);
create index IMV2 on DEMOMV2(now);

exec dbms_stats.gather_table_stats(user,'DEMOMV1', method_opt=>'for all columns size SKEWONLY');
exec dbms_stats.gather_table_stats(user,'DEMOMV2', method_opt=>'for all columns size AUTO');

alter table DEMO add constraint PK_DEMO primary key (NOW);

create materialized view log on DEMO.DEMO
	including new values;

