General

Note: DBMS_REFRESH is used to manage materialized view (snapshot) refresh groups

Source {ORACLE_HOME}/rdbms/admin/dbmssnap.sql

First Available 7.3.4

Constants Name Data Type Value

REPAPI_RGROUP

NUMBER 8

Dependencies ku$_refgroup_view  rgroup$

DBA_REGISTERED_MVIEW_GROUPS DBMS_REPCAT_RGT_CUST2

DBMS_IAS_MT_INST DBMS_REPCAT_SNA_UTL

DBMS_IJOB DBMS_SYS_ERROR

DBMS_IREFRESH DBMS_UTILITY

DBMS_ISNAPSHOT RGCHILD$

DBMS_REFRESH RGROUP$

Security Model Execute granted to PUBLIC

ADD

Add A Refresh Group

Overload 1 dbms_refresh.add(

name      IN VARCHAR2,

list      IN VARCHAR2,

lax       IN BOOLEAN := FALSE

siteid    IN BINARY_INTEGER := 0,

export_db IN VARCHAR2 := NULL );

See DBMS_REFRESH demo

Overload 2 dbms_refresh.add(

name      IN VARCHAR2,

tab       IN DBMS_UTILITY.UNCL_ARRAY,

lax       IN BOOLEAN := FALSE

siteid    IN BINARY_INTEGER := 0,

export_db IN VARCHAR2 := NULL );

See DBMS_REFRESH demo

CHANGE

Change A Refresh Group dbms_refresh.change(

name                 IN VARCHAR2,

next_date            IN DATE := NULL,

interval             IN VARCHAR2 := NULL,

implicit_destroy     IN BOOLEAN := NULL,

rollback_seg         IN VARCHAR2 := NULL,

push_deferred_rpc    IN BOOLEAN := NULL,

refresh_after_errors IN BOOLEAN := NULL,

purge_option         IN BINARY_INTEGER := NULL,

parallelism          IN BINARY_INTEGER := NULL,

heap_size            IN BINARY_INTEGER := NULL);

See DBMS_REFRESH demo

DESTROY

Drop A Refresh Group dbms_refresh.destroy(name IN VARCHAR2);

See DBMS_REFRESH demo

MAKE

Create A New Refresh Group

Overload 1 dbms_refresh.make(

name                 IN VARCHAR2

list                 IN VARCHAR2,

next_date            IN DATE,

interval             IN VARCHAR2,

implicit_destroy     IN BOOLEAN := FALSE,

lax                  IN BOOLEAN := FALSE,

job                  IN BINARY_INTEGER := 0,

rollback_seg         IN VARCHAR2 := NULL,

push_deferred_rpc    IN BOOLEAN := TRUE,

refresh_after_errors IN BOOLEAN := FALSE

purge_option         IN BINARY_INTEGER := 1,

parallelism          IN BINARY_INTEGER := 0,

heap_size            IN BINARY_INTEGER := 0);

exec dbms_refresh.make('group1', 'RB_ATT_DNS_LOOKUPS, RB_COUNTRIES, RB_GEOCODES', SYSDATE + 6, 'next_day(trunc(sysdate), ''SUNDAY'') + 3/24', FALSE, TRUE);

Overload 2 dbms_refresh.make(

name                 IN VARCHAR2

tab                  IN DBMS_UTILITY.UNCL_ARRAY,

next_date            IN DATE,

interval             IN VARCHAR2,

implicit_destroy     IN BOOLEAN := FALSE,

lax                  IN BOOLEAN := FALSE,

job                  IN BINARY_INTEGER := 0,

rollback_seg         IN VARCHAR2 := NULL,

push_deferred_rpc    IN BOOLEAN := TRUE,

refresh_after_errors IN BOOLEAN := FALSE

purge_option         IN BINARY_INTEGER := 1,

parallelism          IN BINARY_INTEGER := 0,

heap_size            IN BINARY_INTEGER := 0);

See DBMS_REFRESH demo

MAKE_REPAPI

Undocumented dbms_refresh.make_repapi(

refgroup    IN BINARY_INTEGER,

name        IN VARCHAR2,

siteid      IN BINARY_INTEGER,

refresh_seq IN BINARY_INTEGER,

export_db   IN VARCHAR2,

flag        IN BINARY_INTEGER DEFAULT REPAPI_RGROUP);

TBD

REFRESH

Manually refreshes a refresh group dbms_refresh.refresh(name IN VARCHAR2);

See DBMS_REFRESH demo

SUBTRACT

Removes materialized views from a refresh group

Overload 1 dbms_refresh.subtract(

name  IN VARCHAR2,

list  IN VARCHAR2,

lax   IN BOOLEAN := FALSE);

See DBMS_REFRESH demo

Overload 2 dbms_refresh.subtract(

name IN VARCHAR2,

tab  IN DBMS_UTILITY.UNCL_ARRAY,

lax  IN BOOLEAN := FALSE);

See DBMS_REFRESH demo

USER_EXPORT

Undocumented dbms_refresh.user_export(

rg#    IN     BINARY_INTEGER,

mycall IN OUT VARCHAR2);

TBD

USER_EXPORT_CHILD

Undocumented dbms_refresh.user_export_child(

myowner  IN     VARCHAR2,

myname   IN     VARCHAR2,

mytype   IN     VARCHAR2,

mycall   IN OUT VARCHAR2,

mysite   IN     BINARY_INTEGER := 0);

TBD

Refresh Group Demo

Demo using DBMS_REFRESH package components conn / as sysdba

GRANT select ON ku$_refgroup_view TO uwclass;

conn uwclass/uwclass

desc ku$_refgroup_view

SELECT COUNT(*) FROM sys.ku$_refgroup_view;

CREATE MATERIALIZED VIEW mv1

TABLESPACE uwdata

REFRESH COMPLETE

AS SELECT s.srvr_id, COUNT(*)

FROM servers s, serv_inst i

WHERE s.srvr_id = i.srvr_id

GROUP BY s.srvr_id;

CREATE MATERIALIZED VIEW mv2

TABLESPACE uwdata

REFRESH COMPLETE

AS SELECT s.srvr_id, AVG(latitude)

FROM servers s, serv_inst i

WHERE s.srvr_id = i.srvr_id

GROUP BY s.srvr_id;

CREATE MATERIALIZED VIEW mv3

TABLESPACE uwdata

REFRESH COMPLETE

AS SELECT s.srvr_id, AVG(longitude)

FROM servers s, serv_inst i

WHERE s.srvr_id = i.srvr_id

GROUP BY s.srvr_id;

exec dbms_refresh.make('REFGRP','mv1,mv2' ,SYSDATE+1/96,'SYSDATE+1/96',FALSE,TRUE);

SELECT refname, refowner, ref_make_user

FROM sys.ku$_refgroup_view;

SELECT refname, refowner, ref_make_dba

FROM sys.ku$_refgroup_view;

SELECT refname, refowner, ref_child

FROM sys.ku$_refgroup_view;

exec dbms_refresh.add('REFGRP', 'mv3');

SELECT refname, refowner, ref_child

FROM sys.ku$_refgroup_view;

exec dbms_refresh.change(name=>'REFGRP', parallelism=>2);

SELECT refname, refowner, ref_make_dba

FROM sys.ku$_refgroup_view;

UPDATE serv_inst

SET srvr_id = 14;

SELECT * FROM mv1;

SELECT * FROM mv2;

SELECT * FROM mv3;

COMMIT;

SELECT * FROM mv1;

SELECT * FROM mv2;

SELECT * FROM mv3;

-- wait 10+ minutes

SELECT * FROM mv1;

SELECT * FROM mv2;

SELECT * FROM mv3;

exec dbms_refresh.subtract('REFGRP', 'mv2');

SELECT refname, refowner, ref_child

FROM sys.ku$_refgroup_view;

exec dbms_refresh.destroy('REFGRP');

SELECT refname, refowner, ref_child

FROM sys.ku$_refgroup_view;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐