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


所有评论(0)