物化視圖建立的時候可以定義刷新方式,一般有: refresh fast 和 refresh complete之分,前者是只更新主表中變化的記錄(主表必須建立materialized view log),而后者是把MV里面的數(shù)據(jù)全部更新。此外,更新方式還可以有:on demand, on commit, on force之分. on commit是及時更新。其實用戶創(chuàng)建materialized view的時候可以指定更新頻率,給你個例子
辰溪ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
CREATE Materialized View mv_terminal
REFRESH FAST
NEXT SYSDATE + 30/(24*60)
AS
SELECT * FROM ........
這個MV每30分鐘刷新一次,只刷新改變的數(shù)據(jù)
mysql 新設(shè)置用戶或更改密碼后需用flush privileges刷新MySQL的系統(tǒng)權(quán)限相關(guān)表;而oracle中更改user的數(shù)據(jù)后會立即生效,不需要刷新。
1.建立物化視圖;
create materialview myview;
refresh force on demand;
as;
select c1,c2 from table where c150;
2.手動刷新物化視圖;
在pl/sql命令窗口輸入如下內(nèi)容,并回車;
execute dbms_mview_refresh('myview','c');
在Oracle9i里,Oracle提供了一個內(nèi)部事件,用以強制刷新Buffer Cache,其語法為:
alter session set events 'immediate trace name flush_cache level 1';
或者:
alter session set events = 'immediate trace name flush_cache';
類似的也可以使用alter system系統(tǒng)級設(shè)置:
alter system set events = 'immediate trace name flush_cache';
在Oracle 10g中,Oracle提供一個新的特性,可以通過如下命令刷新Buffer Cache:
alter system flush buffer_cache;
我們通過試驗來看一下刷新Cache的作用:
1.創(chuàng)建測試表
SQL create table t as select * from dba_objects;Table created.SQL analyze table t compute statistics;Table analyzed.SQL select blocks,empty_blocks from dba_tables
2 where table_name='T' and owner='SYS'; BLOCKS EMPTY_BLOCKS
---------- ------------
78 1
表T共有79個Block.
2. x$bh
SQL select count(*) from x$bh; COUNT(*)
----------
14375SQL select count(*) from x$bh where state=0; -- state =0 is free COUNT(*)
----------
13960SQL alter system set events = 'immediate trace name flush_cache';System altered.SQL select count(*) from x$bh where state=0; COUNT(*)
----------
14375
1、創(chuàng)建測試表,
createtabletest_date(idnumber,valuedate);
2、插入測試數(shù)據(jù)
insertintotest_datevalues(1,sysdate);
insertintotest_datevalues(2,sysdate-100);
insertintotest_datevalues(3,sysdate-55);
commit;
3、查詢表中全量數(shù)據(jù),selectt.*,rowidfromtest_datet;
4、編寫sql,更新date類型的value字段值為:2010-12-14;
updatetest_datesetvalue=to_date('2010-12-14','yyyy-mm-dd')whereid=3;
commit;
5、再次查詢sql,可以發(fā)現(xiàn)id為3的value值已變化;selectt.*,rowidfromtest_datet;
1、可以寫oracle腳本,從orcl1中將數(shù)據(jù)備份出來,然后將備份出來的數(shù)據(jù)導(dǎo)入orcl2中。
2、 程序員:自己用jdbc寫一個程序,用Timer類,會定時執(zhí)行的,從orcl1中將數(shù)據(jù)查出來,插入orcl2中。如果數(shù)據(jù)量特別大,oracle數(shù)據(jù)庫支持批量寫入,用批量寫入功能即可。
3、用DBLINK(oracle一個鏈接其他oracle庫功能),首先在orcl1中創(chuàng)建一個dblink,然后寫存儲過程,在存儲過程中用dblink通道將數(shù)據(jù)倒過去。