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);
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;