瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))

          Posted on 2011-08-11 15:26 瘋狂 閱讀(48225) 評論(5)  編輯  收藏 所屬分類: database

          我們?nèi)绻龅叫枰獜钠渌到y(tǒng)的數(shù)據(jù)庫中取數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的問題,可疑選擇使用ORACLE的ODI工具進(jìn)行抽數(shù),但是對方提供的數(shù)據(jù)庫用戶下沒有任何對象,只是有查詢所有表的權(quán)限,因此無法做數(shù)據(jù)反向。

          于是決定使用物化視圖,把對方數(shù)據(jù)庫中的數(shù)據(jù)拿過來,雖然數(shù)據(jù)量比較大,但是每月只拿一次,而且如果設(shè)置成增量更新,也不會太慢?,F(xiàn)在記錄下物化視圖的創(chuàng)建過程(以一張表為例)。

          一、準(zhǔn)備條件以及備注

          假設(shè)雙方數(shù)據(jù)庫都是ORACLE10g,需要同步過來的表名叫:GG_ZLX_ZHU,對方數(shù)據(jù)庫用戶名:username,密碼:password,SID:CPEES。

          二、開始干活

          1、首先要?jiǎng)?chuàng)建DB_LINK

          1. CREATE DATABASE LINK to_cpees  
          2.  
          3. CONNECT TO "username" identified by "password"  
          4.  
          5. using "CPEES"  

          其中CPEES為新建的到對方數(shù)據(jù)庫的TNS。執(zhí)行,現(xiàn)在我們就已經(jīng)創(chuàng)建了到對方數(shù)據(jù)庫的DB_LINK TO_CPEES。

          2、創(chuàng)建Oracle物化視圖快速刷新日志

          因?yàn)樯厦嬲f過,以后視圖的刷新將采用增量刷新的方式,因此,為配合增量刷新,ORACLE要求要在住表上建立物化視圖日志。

          1. CREATE MATERIALIZED VIEW LOG ON GG_ZLX_ZHU  
          2.  
          3. WITH PRIMARY KEY  
          4.  
          5. INCLUDING NEW VALUES;  
          6.  

          (上面的SQL要在遠(yuǎn)程數(shù)據(jù)庫上執(zhí)行,不能在本地執(zhí)行)

          3、創(chuàng)建Oracle物化視圖

          Oracle物化視圖,從名字上面來開,它應(yīng)該是屬于視圖,但是確實(shí)物化。其物化是針對普通視圖并沒有真正的物理存儲而言,其實(shí)可以簡單的把物化視圖看做一個(gè)物理表(不再做具體解釋)。

          1. CREATE MATERIALIZED VIEW GG_ZLX_ZHU --創(chuàng)建物化視圖  
          2.  
          3. BUILD IMMEDIATE  --在視圖編寫好后創(chuàng)建  
          4.  
          5. REFRESH FAST WITH PRIMARY KEY  --根據(jù)主表主鍵增量刷新(FAST,增量)  
          6.  
          7. ON DEMAND  -- 在用戶需要時(shí),由用戶刷新  
          8.  
          9. ENABLE QUERY REWRITE  --可讀寫  
          10.  
          11. AS  
          12.  
          13. SELECT * FROM GG_ZLX_ZHU@TO_CPEES; --查詢語句  

          4、視圖刷新

          根據(jù)業(yè)務(wù)需要,每月不定時(shí)刷新,所以不能是JOB,而且數(shù)量多,所以也不能一個(gè)一個(gè)刷新。根據(jù)以上條件,選擇使用ORACLE自帶工具DBMS_MVIEW工具包中REFRESH方法對物化視圖進(jìn)行刷新。該方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是需要刷新的物化視圖名稱,第二個(gè)參數(shù)是刷新方式。我們可以寫存儲過來,對每個(gè)物化視圖調(diào)用一次REFRESH方法,也可以使用“,”把物化視圖連接以來,一次刷新。如下:

          1. CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS  
          2.  
          3. BEGIN  
          4.  
          5. DBMS_MVIEW.REFRESH('GG_ZLX_ZHU','f');  
          6.  
          7. END P_MVIEW_REFRESH;  
          8.  

          或者使用

          1. CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS  
          2.  
          3. BEGIN  
          4.  
          5. DBMS_MVIEW.REFRESH('GG_ZLX_ZHU,GG_ZLX_FU','ff');  
          6.  
          7. END P_MVIEW_REFRESH;  
          8.  

          注意:

          1、如果需要同時(shí)刷新多個(gè)物化視圖,必須用逗號把各個(gè)物化視圖名稱連接起來,并對

          每個(gè)視圖都要指明刷新方式(f、增量刷新,c、完全刷新,?、強(qiáng)制刷新)。

          2、當(dāng)日志和物化視圖創(chuàng)建好后,刪除日志,則需要重新創(chuàng)建物化視圖,否則無法增量

          刷新。

          3、因?yàn)樯厦鎸懙奈锘晥D時(shí)根據(jù)主鍵進(jìn)行更新,因此,主表必須有主鍵。

          4、以上文章中紅色是為可替換的,大家可以根據(jù)自己項(xiàng)目需求來修改。

          希望上面的內(nèi)容對大家能有幫助。

          忘了寫刪除方法了,日志和物化視圖要分開刪除

          1. DROP MATERIALIZED VIEW LOG ON GG_ZLX_ZHU@TOCPEES;  
          2.  
          3. DROP MATERIALIZED VIEW GG_ZLX_ZHU;  

          評論

          # re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))  回復(fù)  更多評論   

          2014-07-03 22:42 by ll
          樓主是長軟的嗎?

          # re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))  回復(fù)  更多評論   

          2015-09-10 17:42 by 234234
          234234

          # re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))  回復(fù)  更多評論   

          2015-09-22 10:40 by sdsa
          wss

          # re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))  回復(fù)  更多評論   

          2016-08-09 15:59 by ya
          17. ORA-06548錯(cuò)誤
          18. 項(xiàng)目規(guī)劃與管理記錄2
          19. tmpFile.renameTo(classFile) failed
          20. redhat6.4 64位安裝rlwrap
          21. ora-01031:insufficient privileges

          # re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))  回復(fù)  更多評論   

          2016-08-09 16:03 by ya
          1、時(shí)間:8月9日(七夕)晚8點(diǎn)
          2、參加對象:微學(xué)院全體成員(可邀約家人配合)
          3、釆取自愿報(bào)名方式,請于8月9日下午5點(diǎn)之前將曲目以接龍方式報(bào)主持人閆瑛娟。
          4、展示形式:唱歌,器樂演奏,誦讀(詩歌或散文等),以講述的方式回味我的愛情故事,我心中的愛情期待等,時(shí)間控制在3分鐘之內(nèi)。
          主站蜘蛛池模板: 东方市| 长宁区| 石首市| 房山区| 息烽县| 鸡泽县| 奉节县| 南开区| 南康市| 大新县| 清徐县| 化德县| 新余市| 枞阳县| 阳城县| 克什克腾旗| 育儿| 武乡县| 沙湾县| 千阳县| 苍山县| 平乡县| 桂东县| 安阳县| 克拉玛依市| 松桃| 松滋市| 宝应县| 南丹县| 彭水| 汝阳县| 申扎县| 张家川| 滁州市| 商丘市| 长沙市| 正安县| 贵阳市| 英德市| 江口县| 茂名市|