128 lines
2.9 KiB
Plaintext
128 lines
2.9 KiB
Plaintext
|
|
alias DEMO='rlwrap sqlplus DEMO/"secret"@bakura:1521/NIHILUS'
|
||
|
|
|
||
|
|
drop table T1 purge;
|
||
|
|
create table T1 (
|
||
|
|
id number generated always as identity,
|
||
|
|
n1 number(1),
|
||
|
|
c1 varchar2(10),
|
||
|
|
d1 DATE
|
||
|
|
);
|
||
|
|
|
||
|
|
alter table T1 add constraint T1_PK primary key (ID);
|
||
|
|
|
||
|
|
|
||
|
|
-- infinite_update2.sql
|
||
|
|
whenever sqlerror exit failure
|
||
|
|
declare
|
||
|
|
i NUMBER;
|
||
|
|
begin
|
||
|
|
i:=0;
|
||
|
|
loop
|
||
|
|
i:=i+1;
|
||
|
|
insert into T1(n1,c1,d1) values(mod(i,3),DBMS_RANDOM.string('a',10),sysdate);
|
||
|
|
commit;
|
||
|
|
dbms_session.sleep(1);
|
||
|
|
end loop;
|
||
|
|
end;
|
||
|
|
/
|
||
|
|
|
||
|
|
|
||
|
|
drop materialized view MW0;
|
||
|
|
drop materialized view MW1;
|
||
|
|
drop materialized view MW2;
|
||
|
|
|
||
|
|
create materialized view MW0 as select * from T1 where n1=0;
|
||
|
|
create materialized view MW1 as select * from T1 where n1=1;
|
||
|
|
create materialized view MW2 as select * from T1 where n1=2;
|
||
|
|
|
||
|
|
|
||
|
|
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
|
||
|
|
select max(d1) from MW0;
|
||
|
|
select max(d1) from MW1;
|
||
|
|
select max(d1) from MW2;
|
||
|
|
|
||
|
|
create materialized view log on T1 with primary key including new values;
|
||
|
|
|
||
|
|
set lines 256
|
||
|
|
|
||
|
|
col log_table for a30
|
||
|
|
col log_trigger for a30
|
||
|
|
col primary_key for a3 head PK
|
||
|
|
|
||
|
|
select log_table,log_trigger,primary_key from dba_mview_logs where log_owner='DEMO' and MASTER='T1';
|
||
|
|
|
||
|
|
|
||
|
|
-- on snap "server" site
|
||
|
|
|
||
|
|
set lines 256
|
||
|
|
|
||
|
|
col owner for a15
|
||
|
|
col name for a25
|
||
|
|
col master_owner for a15
|
||
|
|
col master for a25
|
||
|
|
col master_link for a25
|
||
|
|
col refresh_method for a15
|
||
|
|
col type for a10
|
||
|
|
col status for a7
|
||
|
|
col snaptime for a20
|
||
|
|
|
||
|
|
select
|
||
|
|
snap.owner
|
||
|
|
,snap.name
|
||
|
|
,snap.snapid
|
||
|
|
,snap.status
|
||
|
|
,slog.snaptime
|
||
|
|
,snap.master_owner
|
||
|
|
,snap.master
|
||
|
|
,snap.refresh_method
|
||
|
|
,snap.type
|
||
|
|
,snap.master_link
|
||
|
|
from
|
||
|
|
sys.slog$ slog
|
||
|
|
join dba_snapshots snap on slog.snapid=snap.snapid
|
||
|
|
where slog.mowner='DEMO' and slog.master='T1';
|
||
|
|
|
||
|
|
|
||
|
|
col snapname for a30
|
||
|
|
col snapsite for a30
|
||
|
|
col snaptime for a30
|
||
|
|
|
||
|
|
select
|
||
|
|
r.name snapname, snapid, nvl(r.snapshot_site, 'not registered') snapsite, snaptime
|
||
|
|
from
|
||
|
|
sys.slog$ s, dba_registered_snapshots r
|
||
|
|
where
|
||
|
|
s.snapid=r.snapshot_id(+) and mowner='DEMO' and master='T1';
|
||
|
|
|
||
|
|
|
||
|
|
exec dbms_mview.refresh('MW0');
|
||
|
|
exec dbms_mview.refresh('MW1');
|
||
|
|
exec dbms_mview.refresh('MW2');
|
||
|
|
|
||
|
|
-- point of view of snap "client"
|
||
|
|
select last_refresh_date,sysdate from dba_mviews where mview_name='MW0';
|
||
|
|
|
||
|
|
-- point of view of snap "server"
|
||
|
|
select sysdate,last_refresh from dba_snapshots where name='MW0';
|
||
|
|
|
||
|
|
|
||
|
|
select log_table from dba_mview_logs where master='T1';
|
||
|
|
|
||
|
|
select count(*) from DEMO.MLOG$_T1;
|
||
|
|
|
||
|
|
|
||
|
|
exec dbms_refresh.make('MWGROUP0', list=>'MW0,MW1', next_date=>null, interval=>'null',parallelism=>2);
|
||
|
|
|
||
|
|
exec dbms_refresh.refresh('MWGROUP0');
|
||
|
|
|
||
|
|
|
||
|
|
-- https://www.oracleplsqltr.com/2021/03/14/how-to-unregister-materialized-view-from-source-db/
|
||
|
|
|
||
|
|
exec dbms_mview.unregister_mview(mviewowner=>'DEMO',mviewname=>'MW2',mviewsite=>'NIHILUS');
|
||
|
|
exec dbms_mview.purge_mview_from_log(mview_id=>9);
|
||
|
|
|
||
|
|
select segment_name,bytes/1024 Kb from dba_segments where segment_name='MLOG$_T1';
|
||
|
|
|
||
|
|
|
||
|
|
|