欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
物化視圖復制概念和體系結構——高級復制

物化視圖復制概念和體系結構——高級復制

 
  最近在重新看Oracle的高級復制文檔,正好昨天建立了一個(gè)物化視圖專(zhuān)用的索引貼,事情都趕到一塊了。于是找出了以前針對這篇文檔的翻譯進(jìn)行簡(jiǎn)單的修改后作為這篇讀書(shū)筆記。
  一、概述
  Oracle提供兩種不同的復制方法:多主復制和物化視圖復制。還可以通過(guò)兩種復制的組合構成混合復制。
  本文主要描述物化視圖復制,由于物化視圖復制中的主站點(diǎn)就是多主復制中的站點(diǎn),因此也會(huì )對相應的多主復制中涉及到的內容作相應的說(shuō)明。
  二、物化視圖的概念和體系結構
  Oracle的物化視圖主要用在兩個(gè)方面:高級復制和數據倉庫。在高級復制環(huán)境中,物化視圖用于復制數據到非主體站點(diǎn)。在數據倉庫環(huán)境中,物化視圖用于對代價(jià)昂貴的查詢(xún)進(jìn)行緩存。
  1.物化視圖是什么
  物化視圖是主體對象在某一時(shí)間點(diǎn)上的復制品。這個(gè)主體對象即可以是主體站點(diǎn)上的一個(gè)主表,也可以是物化視圖站點(diǎn)上的一個(gè)主物化視圖。在多主復制中,一個(gè)站點(diǎn)上的表被其他主體站點(diǎn)連續不斷的更新,而物化視圖則是從一個(gè)主體站點(diǎn)或主物化視圖站點(diǎn)批量的進(jìn)行更新。
  當物化視圖進(jìn)行快速刷新時(shí),Oracle會(huì )檢查主表或主物化視圖自上次刷新以來(lái)的所有改變,并將其應用到物化視圖上。因此,如果主體對象自上次刷新以來(lái)存在一些改變,則刷新操作則會(huì )花費一定的時(shí)間把這些改變應用到物化視圖上。如果自上次刷新以來(lái)沒(méi)有發(fā)生任何變化,則物化視圖刷新操作會(huì )迅速的完成。
  2.為什么使用物化視圖
  你可以使用物化視圖來(lái)完成以下目標:
  減輕網(wǎng)絡(luò )負載;
  創(chuàng )建一個(gè)Mass Deployment環(huán)境;
  數據子集;
  離線(xiàn)部署。
 ?。?)減輕網(wǎng)絡(luò )負載:
  你可以通過(guò)物化視圖將數據分布到許多站點(diǎn),所有用戶(hù)不需要再訪(fǎng)問(wèn)一個(gè)數據庫服務(wù)器,負載被分散到多個(gè)數據庫服務(wù)器上。和多主復制不同的是,你可以根據需要,只復制表中的一部分字段或者表中的一部分數據,從而降低了每次復制的數據量。
  多主復制也可以分布網(wǎng)絡(luò )負載,但與物化視圖相比它對網(wǎng)絡(luò )的要求要嚴格得多。由于多主復制各個(gè)站點(diǎn)間采用的是網(wǎng)狀連接,每個(gè)站點(diǎn)和其他所有的站點(diǎn)都有通信,而且多主復制一般用于提供實(shí)時(shí)或接近實(shí)時(shí)的復制,這會(huì )導致很高的網(wǎng)絡(luò )流量,對于網(wǎng)絡(luò )狀況要求比較嚴格。
  物化視圖采用高效的批量更新方式,從一個(gè)主體站點(diǎn)或一個(gè)主物化視圖站點(diǎn)獲得更新。和多主復制的連續通信不一樣,物化視圖復制只需要周期性的刷新,從而對網(wǎng)絡(luò )的要求大大降低。
 ?。?)創(chuàng )建Mass Deployment環(huán)境:
  展開(kāi)模板允許你在本地預先建立物化視圖環(huán)境。你可以利用展開(kāi)模板快速簡(jiǎn)便的展開(kāi)物化視圖環(huán)境。你可以不用修改展開(kāi)模板,而是利用參數來(lái)建立不同用戶(hù)的客戶(hù)化數據集。
 ?。?)數據子集:
  物化視圖允許你的復制建立在列或者行的基礎上,而多主復制需要復制整張表。通過(guò)使用Data subsetting,對于每個(gè)站點(diǎn)你可以?xún)H復制滿(mǎn)足本站點(diǎn)需要的數據。
 ?。?)離線(xiàn)部署:
  物化視圖不需要專(zhuān)用網(wǎng)絡(luò )連接。你可以利用job的調度機制完成物化視圖的定時(shí)自動(dòng)刷新,你也可以在需要的時(shí)候手工刷新物化視圖。而這第二種方法是在筆記本上運行應用程序的一種理想解決方案。
  3.物化視圖的分類(lèi)
  物化視圖分為只讀、可更新和可寫(xiě)三類(lèi)。不能對只讀物化視圖進(jìn)行DML操作,對于可更新和可寫(xiě)物化視圖則可以進(jìn)行DML操作。
  注意:對于只讀、可更新和可寫(xiě)物化視圖,定義物化視圖的查詢(xún)語(yǔ)句必須包含主體對象中的所有主鍵列。
 ?。?)只讀物化視圖
  在建立物化視圖時(shí),省略FOR UPDATE語(yǔ)句建立只讀物化視圖。除了不需要屬于一個(gè)物化視圖組之外,只讀物化視圖的許多機制都和可更新物化視圖相同。
  使用只讀物化視圖可以消除在主體站點(diǎn)或者主物化視圖站點(diǎn)上由物化視圖引入的數據沖突,這個(gè)優(yōu)點(diǎn)的代價(jià)是只讀物化視圖不能進(jìn)行dml操作。
  注意:使用只讀物化視圖只能消除由物化視圖站點(diǎn)引入的沖突,并不意味著(zhù)使用只讀物化視圖就不會(huì )由沖突產(chǎn)生,后面會(huì )舉例詳細說(shuō)明。
 ?。?)可更新物化視圖
  在建立物化視圖時(shí),指明FOR UPDATE語(yǔ)句建立可更新物化視圖。為了可更新物化視圖的修改在刷新時(shí)可以被“推回”主體對象,可更新物化視圖必須屬于一個(gè)物化視圖組。
  由于可更新物化視圖允許數據的修改,因此可以降低主體站點(diǎn)的負載。
  注意:
  1.不要在建立可更新物化視圖時(shí)使用列的別名,否則,在將物化視圖加入到物化視圖組的時(shí)候會(huì )發(fā)生錯誤。
  2.主表或主物化視圖列上的默認值不會(huì )自動(dòng)應用到可更新物化視圖上。
  3.可更新物化視圖不支持DELETE CASCADE操作。
 ?。?)可寫(xiě)物化視圖
  可寫(xiě)物化視圖指出FOR UPDATE語(yǔ)句,但是沒(méi)有加入到物化視圖組。用戶(hù)可以對可寫(xiě)物化視圖執行DML操作,但是在執行刷新操作時(shí),修改不會(huì )被“推回”,因此所有的修改在刷新后全部丟失。所有允許只讀物化視圖的情況也同樣允許可寫(xiě)物化視圖。
  由于可寫(xiě)物化視圖很少使用,因此以后大部分內容都只涉及只讀物化視圖和可更新物化視圖。
  4.物化視圖可用性
  Oracle提供幾種不同類(lèi)型的物化視圖,以滿(mǎn)足各種復制環(huán)境的需要。
  介紹下列物化視圖以及它們使用的環(huán)境:
  主鍵物化視圖;
  對象物化視圖;
  ROWID物化視圖;
  復雜物化視圖。
  當建立物化視圖時(shí),不管物化視圖屬于何種類(lèi)型,總是給出方案名,也就是查詢(xún)語(yǔ)句中表的所有者名稱(chēng)。
 ?。?)主鍵物化視圖
  主鍵物化視圖是默認的物化視圖。如果主鍵物化視圖是作為物化視圖組的一部分建立的,且指定了FOR UPDATE語(yǔ)句,那么這個(gè)物化視圖是可更新的,且這個(gè)物化視圖組必須和主站點(diǎn)中復制組的同名。另外,可更新物化視圖必須和主復制組在不同的數據庫中。
  當修改發(fā)生后,修改的數據以行級為單位被傳播,每行數據由主鍵確定。
  主鍵物化視圖可以包含一個(gè)子查詢(xún),因此你可以在建立物化視圖時(shí),建立所有數據的一個(gè)子集,也就是說(shuō),建立物化視圖時(shí)可以只選取你需要的數據行。子查詢(xún)是嵌入在主查詢(xún)中的查詢(xún),因此你可以在建立物化視圖時(shí)有超過(guò)一個(gè)的SELECT語(yǔ)句。子查詢(xún)可以是簡(jiǎn)單的WHERE語(yǔ)句也可以是復雜的多層WHERE EXISTS語(yǔ)句嵌套。如果主站點(diǎn)中的主對象建立了物化視圖日志表,那么一些包含特定類(lèi)型子查詢(xún)的主鍵物化視圖仍然可以快速(增量)刷新??焖偎⑿吕胢aterialized view logs只更新自上次刷新后被修改的記錄。
 
        (2)對象物化視圖
  如果物化視圖是基于對象表,并且在建立是指定了OF TYPE語(yǔ)句,那么這個(gè)物化視圖叫做對象物化視圖。對象物化視圖的結構和對象表相同——對象物化視圖由行對象組成,每一個(gè)行對象由一個(gè)對象標識列OID標識。
 ?。?)ROWID物化視圖
  為了后向兼容性,Oracle除了默認的主鍵物化視圖外,還支持ROWID物化視圖。ROWID物化視圖基于主對象中行記錄的物理標識ROWID。ROWID物化視圖只被用在基于Oracle7版本的主對象的物化視圖,它不能被用于建立基于Oracle8或更高版本主站點(diǎn)的物化視圖。
 ?。?)復雜物化視圖
  物化視圖的定義必須滿(mǎn)足某種約束,才能執行快速刷新。如果你需要的物化視圖的定義查詢(xún)語(yǔ)句更為一般化,不能滿(mǎn)足限制條件,那么這個(gè)物化視圖是復雜的,并且不能執行快速刷新。

#p# #e#

  一般來(lái)說(shuō),如果一個(gè)物化視圖的定義查詢(xún)包含下列語(yǔ)句,則被認為是復雜物化視圖:
  CONNECT BY語(yǔ)句;
  INTERSECT,MINUS或UNION ALL操作;
  在某些情況下的DISTINCT和UNIQUE關(guān)鍵字:包含DISTINCT和UNIQUE關(guān)鍵字的并不都是復雜物化視圖,簡(jiǎn)單物化視圖中也可以包含這兩個(gè)關(guān)鍵字;
  聚集操作;
  連接不在子查詢(xún)中的對象;
  某種情況下的UNION操作。
  以及其他任何不滿(mǎn)足特定約束條件的子查詢(xún)。具體條件見(jiàn)“物化視圖中的數據子集”的物化視圖子查詢(xún)約束
  注意:如果可能,盡量避免使用復雜物化視圖,因為復雜物化視圖不能快速刷新,將會(huì )降低網(wǎng)絡(luò )性能。
  對比簡(jiǎn)單物化視圖和復雜物化視圖:
  為了某種應用,你可能需要考慮使用一個(gè)復雜物化視圖。你有兩種方法可以選擇,它們各有利弊,具體如下:
  復雜物化視圖:這個(gè)復雜物化視圖在數據庫中展示出高效的查詢(xún)性能,因為連接操作在物化視圖刷新時(shí)已經(jīng)完成。然而,由于是復雜物化視圖,必須執行完全刷新,這將極為可能比執行快速刷新要慢得多。
  簡(jiǎn)單物化視圖通過(guò)視圖連接:展示了兩個(gè)簡(jiǎn)單物化視圖,它們通過(guò)一個(gè)視圖執行連接操作。通過(guò)視圖查詢(xún)不可能有方法A中查詢(xún)復雜物化視圖那樣的性能。然而,簡(jiǎn)單物化視圖可以更加有效的使用快速刷新和物化視圖日志。
  總的來(lái)說(shuō):
  如果你很少刷新,且需要比較高的查詢(xún)性能,則使用方法A。
  如果你經(jīng)常刷新,且可以犧牲查詢(xún)性能,則使用方法B。
  5.物化視圖操作所需權限
  三種不同類(lèi)型的用戶(hù)對物化視圖執行操作:
  建立者:建立物化視圖的用戶(hù)。
  刷新者:刷新物化視圖的用戶(hù)。
  所有者:擁有物化視圖的用戶(hù)。物化視圖存在于所有者的方案中。
  一個(gè)用戶(hù)對物化視圖可以執行所有的操作。然而,在一些復制環(huán)境中,不同的用戶(hù)對物化視圖執行不同的操作。執行這些操作需要的權限取決于操作由同一個(gè)用戶(hù)執行還是由不同的用戶(hù)執行。下面詳細解釋所需權限。
  注意:下文沒(méi)有包括用重寫(xiě)查詢(xún)選項來(lái)創(chuàng )建物化視圖時(shí)所需要的權限。
 ?。?)創(chuàng )建者是所有者
  如果一個(gè)物化視圖的創(chuàng )建者同時(shí)也是一個(gè)物化視圖的所有者,那么這個(gè)用戶(hù)可以通過(guò)明確授權或通過(guò)角色擁有下列權限來(lái)創(chuàng )建一個(gè)物化視圖。
  CREATE MATERIALIZED VIEW或者CREATE ANY MATERIALIZED VIEW權限;
  CREATE TABLE或者CREATE ANY TABLE權限;
  如果數據庫兼容性在8.1.0以下,需要CREATE VIEW或者CREATE ANY VIEW權限;
  對主站點(diǎn)上對象和物化視圖日志的SELECT權限或者SELECT ANY TABLE系統權限。如果主站點(diǎn)不是本地數據庫,則SELECT權限必須授權給一個(gè)主站點(diǎn)用戶(hù),這個(gè)用戶(hù)就是物化視圖站點(diǎn)通過(guò)數據庫鏈連接到主站點(diǎn)的用戶(hù)。
 ?。?)創(chuàng )建者不是所有者
  如果物化視圖的創(chuàng )建者不是所有者,必須授予創(chuàng )建者和所有者某種權限才能創(chuàng )建物化視圖。創(chuàng )建者的權限可以直接授權或通過(guò)角色授權,但是所有者的權限必須通過(guò)明確授權獲得。也就是說(shuō),所有者的權限不能通過(guò)角色獲得。
  創(chuàng )建者:
  CREATE ANY MATERIALIZED VIEW系統權限
  所有者:
  CREATE TABLE或者CREATE ANY TABLE權限;
  如果數據庫兼容性在8.1.0以下,需要CREATE VIEW或者CREATE ANY VIEW權限;
  對主站點(diǎn)上對象和物化視圖日志的SELECT權限或者SELECT ANY TABLE系統權限。如果主站點(diǎn)不是本地數據庫,則SELECT權限必須授權給一個(gè)主站點(diǎn)用戶(hù),這個(gè)用戶(hù)就是物化視圖站點(diǎn)通過(guò)數據庫鏈連到主站點(diǎn)的用戶(hù)。
 ?。?)刷新者是所有者
  如果一個(gè)物化視圖的刷新者同時(shí)也是物化視圖的擁有者,這個(gè)用戶(hù)需要主站點(diǎn)上對象和物化視圖日志的SELECT權限或者SELECT ANY TABLE系統權限。如果主站點(diǎn)不是本地數據庫,則SELECT權限必須授權給一個(gè)主站點(diǎn)用戶(hù),這個(gè)用戶(hù)就是物化視圖站點(diǎn)通過(guò)數據庫鏈連到主站點(diǎn)的用戶(hù)。權限可以通過(guò)直接授權或通過(guò)角色授權。
 ?。?)刷新者不是所有者
  如果物化視圖的刷新者不是所有者,必須授予刷新者和所有者某種權限。這些權限可以直接授權或通過(guò)角色授權。
  刷新者:
  ALTER ANY MATERIALIZED VIEW系統權限。
  所有者:
  主站點(diǎn)上對象和物化視圖日志的SELECT權限或者SELECT ANY TABLE系統權限。如果主站點(diǎn)不是本地數據庫,則SELECT權限必須授權給一個(gè)主站點(diǎn)用戶(hù),這個(gè)用戶(hù)就是物化視圖站點(diǎn)通過(guò)數據庫鏈連到主站點(diǎn)的用戶(hù)。
  6.物化視圖中的數據子集
  在某些情況下,你可能希望你的物化視圖反映主表或者主物化視圖中數據的子集。通過(guò)使用WHERE語(yǔ)句,行子集允許你包含主表或者主物化視圖中你想要的行記錄。列子集允許你從主表或者主物化視圖中只包含你所需要的列。在創(chuàng )建物化視圖時(shí),通過(guò)在SELECT語(yǔ)句中明確指出所要選取的列來(lái)實(shí)現列子集。如果你使用展開(kāi)模板來(lái)創(chuàng )建你的物化視圖,那么你可以在可更新物化視圖上定義列子集。
 ?。?)使用數據子集的一些原因
  降低網(wǎng)絡(luò )流量:在一個(gè)使用列子集的物化視圖中,只有滿(mǎn)足物化視圖定義中WHERE條件語(yǔ)句的修改才會(huì )傳播到物化視圖站點(diǎn),因此減少了事務(wù)傳輸數量,降低了網(wǎng)絡(luò )流量。
  保護敏感數據:用戶(hù)只能查看滿(mǎn)足物化視圖查詢(xún)定義的數據。
  減少資源需要:如果物化視圖建立在筆記本上,則硬盤(pán)與服務(wù)器上的硬盤(pán)相比要小得多。數據子集可以顯著(zhù)的減少存儲空間。
 
       提高刷新性能:由于較少的數據傳播到物化視圖站點(diǎn),刷新執行的更加迅速。這一點(diǎn)對于那些需要通過(guò)撥號連接來(lái)刷新物化視圖的用戶(hù)十分重要。
 ?。?)帶子查詢(xún)的物化視圖
  上面的例子是針對單個(gè)表的。如果創(chuàng )建基于多個(gè)表的物化視圖,則定義和維護這些物化視圖相對來(lái)說(shuō)困難得多。主要包括多對一子查詢(xún)、一對多子查詢(xún)、多對多子查詢(xún)以及包含UNION操作的子查詢(xún)幾種。這些物化視圖比較復雜,而且在實(shí)際復制中不經(jīng)常使用,因此這里不再詳細描述。如果對這部分有興趣,請參閱Oracle9i Advanced Replication 3-18 Materialized Views with Subqueries部分。下面描述一下建立快速刷新子查詢(xún)物化視圖的條件。
  物化視圖子查詢(xún)約束
  帶子查詢(xún)的物化視圖為了能達到快速刷新的能力,必須滿(mǎn)足許多約束條件,具體如下:
  必須是主鍵物化視圖;
  物化視圖日志必須包括某些在子查詢(xún)中出現的列;
  如果子查詢(xún)是多對多或一對多查詢(xún),連接列中非主鍵的部分必須包括在物化視圖日志中,多對一子查詢(xún)沒(méi)有這個(gè)約束;
  子查詢(xún)必須是肯定條件,比如,你可以使用EXISTS,但是不能使用NOT EXISTS;
  子查詢(xún)必須使用EXISTS連接到嵌套層,不能使用IN;
  每張表只允許一個(gè)EXISTS表達式;
  連接表達式必須采用精確匹配或等于連接;
  在子查詢(xún)中,每張表只能被連接一次;
  在嵌套層中,每張表必須有主鍵存在;
  嵌套層只能參考比它高的層中的表;
  子查詢(xún)可以包含AND操作,但是每個(gè)OR操作只能連接“能確定一條記錄”的列,子查詢(xún)中多個(gè)OR運算可以通過(guò)AND連接;
  子查詢(xún)中的所有表必須在同一個(gè)主體站點(diǎn)或主物化視圖站點(diǎn)中。
  7.決定物化視圖的快速刷新能力
  為了檢測所創(chuàng )建的帶子查詢(xún)的物化視圖是否滿(mǎn)足上面提到的建立快速刷新物化視圖的種種約束,在創(chuàng )建時(shí),如果違反任何約束條件,則Oracle會(huì )返回錯誤提示。如果在建立物化視圖時(shí)指明強制刷新,則不會(huì )收到任何錯誤信息。因為在強制刷新時(shí),如果不能執行快速刷新的話(huà),Oracle會(huì )自動(dòng)執行完全刷新。
  你也可以通過(guò)DBMS_MVIEW包中的EXPLAIN_MVIEW過(guò)程來(lái)檢測已存在的物化視圖甚至是還沒(méi)有建立的物化視圖的一些信息,具體信息如下:
  物化視圖的各種能力;
  對于這個(gè)物化視圖來(lái)說(shuō)每種能力是否可能;
  如果不可能,給出導致這種能力不可能的原因;
  這些信息可以存儲在varray中,也可以存儲在MV_CAPABILITIES_TABLE表中。如果你希望把信息存儲到表中,那么你必須在執行EXPLAIN_MVIEW存儲過(guò)程以前,執行ORACLE_HOME/rdbms/admin目錄下的utlxmv.sql腳本。

#p# #e#

  8.多級物化視圖
  物化視圖的創(chuàng )建可以基于表,也可以基于其他物化視圖,這種物化視圖叫做多級物化視圖。這種基于其他物化視圖的物化視圖可以是只讀的也可以是可更新的。
  當使用多級物化視圖時(shí),基于主體表的物化視圖叫做第一層物化視圖?;诘谝粚游锘晥D的物化視圖叫做第二層物化視圖。下一層是第三層,依此類(lèi)推。
  作為其他物化視圖的主對象的物化視圖叫做主物化視圖。處在任何一層的物化視圖都可以成為主物化視圖,而且可以存在多個(gè)其他的物化視圖基于同一個(gè)主物化視圖。
  主物化視圖和主站點(diǎn)中的主表起相同的作用。也就是說(shuō)把第二層物化視圖上的改變“推到”第一層物化視圖上的操作和把第一次物化視圖上的改變“推到”主表上的操作是完全一樣的。
  在主物化視圖站點(diǎn)必須注冊一個(gè)接收者。在多層物化視圖站點(diǎn)中接收者負責接受和應用來(lái)自主物化視圖站點(diǎn)傳播者的延遲事務(wù)。
  多層物化視圖在設計復制環(huán)境時(shí)提供了很高的靈活性。一些物化視圖站點(diǎn)不需要復制主表中所有的數據,實(shí)際上,這些站點(diǎn)可能根本沒(méi)有足夠的空間存儲這些數據。另外,只復制較少的數據意味著(zhù)在網(wǎng)絡(luò )上活動(dòng)的數據也較少。
  使用多層物化視圖的限制條件:
  主物化視圖和基于主物化視圖的物化視圖都必須滿(mǎn)足下列條件:
  1)必須是主鍵物化視圖;
  2)所在數據庫兼容性等于或者高于9.0.1。
  主物化視圖的一些限制。下列類(lèi)型的物化視圖不能作為可更新物化視圖的主物化視圖。
  1)ROWID物化視圖;
  2)復雜物化視圖;
  3)只讀物化視圖。
  不過(guò)這三種物化視圖可以成為只讀物化視圖的主物化視圖。
  基于物化視圖的可更新物化視圖的額外限制:
  1)所屬的物化視圖組必須和主物化視圖站點(diǎn)上的物化視圖組同名;
  2)必須和主物化視圖不在同一個(gè)數據庫上;
  3)必須基于可更新物化視圖,不能基于只讀物化視圖;
  4)主站點(diǎn)上的主物化視圖組必須存在于PUBLIC方案中。
  9.包含用戶(hù)定義類(lèi)型的物化視圖
  Oracle的復制支持用戶(hù)自定義類(lèi)型數據。Oracle不但支持行對象和列對象而且還支持collections的復制。Collection包括基于用戶(hù)自定義類(lèi)型的數組和嵌套表。
  使用用戶(hù)自定義類(lèi)型需要注意幾點(diǎn):
  主站點(diǎn)和物化視圖站點(diǎn)的數據庫兼容性等于或高于9.0.1;
  如果主對象包含用戶(hù)自定義類(lèi)型,則不能創(chuàng )建refresh-on-commit物化視圖;
  高級復制不支持對象的繼承。
  物化視圖復制中對用戶(hù)自定義類(lèi)型的要求和限制于多主環(huán)境中的限制比較類(lèi)似,這里不再詳細描述,如果對這部分內容感興趣,請參考Oracle9i Advanced Replication 3-36 Materialized Views with User-Defined Types。
  10.主站點(diǎn)的物化視圖注冊
  在主體站點(diǎn)或主物化視圖站點(diǎn),Oracle數據庫會(huì )自動(dòng)注冊基于主體對象的物化視圖的信息。下面介紹物化視圖的注冊機制
 ?。?)查看關(guān)于注冊物化視圖的信息
  第一層物化視圖或物化視圖組注冊在主體站點(diǎn)。第二層以上的物化視圖或物化視圖組注冊在主物化視圖站點(diǎn)??梢圆樵?xún)主站點(diǎn)或主物化視圖站點(diǎn)上的DBA_REGISTERED_MVIEWS視圖,列出遠端物化視圖的下列信息:
  1)物化視圖的所有者,名稱(chēng),以及包含物化視圖的數據庫名;
  2)物化視圖的定義查詢(xún)語(yǔ)句;
  3)其他物化視圖屬性,比如刷新方法等。
  也可以查詢(xún)主體站點(diǎn)或主物化視圖站點(diǎn)上的DBA_MVIEW_REFRESH_TIMES視圖,取得每個(gè)物化視圖的最后刷新時(shí)間。數據庫管理員可以查詢(xún)這些信息來(lái)監視遠端物化視圖的活動(dòng)。
       (2)內部機制
  當你創(chuàng )建物化視圖時(shí),Oracle會(huì )自動(dòng)在主體站點(diǎn)或主物化視圖站點(diǎn)上注冊物化視圖,在你刪除物化視圖時(shí),Oracle會(huì )自動(dòng)取消物化視圖的注冊。物化視圖組和物化視圖一樣。
  當你刪除一個(gè)主物化視圖時(shí),Oracle不會(huì )自動(dòng)刪除那些基于它的物化視圖,你必須手工刪除這些物化視圖。如果你沒(méi)有刪除這個(gè)物化視圖,且這個(gè)物化視圖嘗試刷新以及別刪除的主物化視圖,則Oracle會(huì )返回錯誤信息。
  例如:假設物化視圖orders_lev1基于主表oe.orders,物化視圖orders_lev2基于物化視圖orders_lev1。如果你刪除了orders_lev1,orders_lev2不會(huì )被自動(dòng)刪除。這時(shí),如果你嘗試去刷新orders_lev2,則Oracle返回錯誤消息,因為orders_lev1已經(jīng)不存在了。
  注意:Oracle無(wú)法保證在主站點(diǎn)上的注冊或取消注冊物化視圖操作和建立或刪除物化視圖操作完全一一對應。如果Oracle在創(chuàng )建物化視圖時(shí),無(wú)法成功的注冊,則你必須利用DBMS_MVIEW包的REGISTER_MVIEW過(guò)程手工完成注冊。如果在刪除物化視圖時(shí),Oracle無(wú)法成功的取消注冊,則注冊信息會(huì )一直保存在主體站點(diǎn)或主物化視圖站點(diǎn),直到你手工取消注冊。復雜物化視圖有可能無(wú)法注冊。
  注意:Oracle7版本的主站點(diǎn)不能注冊物化視圖。
 ?。?)手工物化視圖注冊
  如果有必要,你可以手工注冊物化視圖。使用DBMS_MVIEW包中的REGISTER_MVIEW和UNREGISTER_MVIEW過(guò)程完成主站點(diǎn)上的增加、修改和刪除物化視圖注冊信息。
  11.主站點(diǎn)和主物化視圖站點(diǎn)機制
  下圖中包含了物化視圖復制環(huán)境中涉及到的對象,有些對象是可選的。例如:如果你建立一個(gè)只讀物化視圖,那么在物化視圖站點(diǎn)既不需要可更新物化視圖日志也不需要內部觸發(fā)器;如果你建立一個(gè)無(wú)法快速刷新的復雜物化視圖,那么在主站點(diǎn)物化視圖日志。
  注意:主物化視圖可能同時(shí)存在物化視圖日志和可更新物化視圖日志。在設計主物化視圖站點(diǎn)時(shí),應當保證有足夠的空間存放這些日志。
  為了支持快速刷新物化視圖,下列機制是主體站點(diǎn)或主物化視圖站點(diǎn)所需要的。
 ?。?)主表或主物化視圖
  主表或主物化視圖是物化視圖的基礎。如果主體對象是主表的話(huà),這張表可能同時(shí)成為多主復制和物化視圖復制中的對象。物化視圖只能指向一個(gè)主體站點(diǎn)或主物化視圖指點(diǎn)。
  主表或主物化視圖上的改變被記錄在物化視圖日志中,并在刷新過(guò)程中,傳播并應用到物化視圖上。
  注意:快速刷新物化視圖可以基于主表或主物化視圖建立。但是基于同義詞或者視圖的物化視圖只能執行完全刷新。
 ?。?)內部觸發(fā)器
  當對主表或主物化視圖進(jìn)行DML操作時(shí),內部觸發(fā)器將受到影響的行記錄在物化視圖日志中。記錄的信息包括主鍵、ROWID或對象標識以及其他列的值。當你為主表或主物化視圖建立物化視圖日志時(shí),會(huì )自動(dòng)建立并激活一個(gè)內部的AFTER ROW觸發(fā)器。只要插入、更新或刪除語(yǔ)句修改表中的數據,則觸發(fā)器會(huì )在物化視圖日志中插入記錄。這個(gè)觸發(fā)器總是最后被點(diǎn)火的觸發(fā)器。
 ?。?)物化視圖日志
  如果你想要采用快速刷新的話(huà),必須建立基于主體對象的物化視圖日志。物化視圖可以記錄主體對象被更新記錄的主鍵、ROWID或對象標識或者二者全部。物化視圖日志也可以包含其他列用以支持帶子查詢(xún)的物化視圖的快速刷新。
  物化視圖日志表的名稱(chēng)為MLOG$_后面跟主體對象的名稱(chēng)。物化視圖日志和主體對象建立在相同的用戶(hù)模式下。一個(gè)物化視圖日志可以支持多個(gè)基于主體對象的物化視圖。
  有下列幾種物化視圖日志:
  主鍵:物化視圖日志在記錄主體對象發(fā)生變化的記錄時(shí),是根據主鍵定位的。
  ROWID:物化視圖日志在記錄主體對象發(fā)生變化的記錄時(shí),是根據ROWID定位的。
  對象標識:物化視圖日志在記錄主體對象發(fā)生變化的記錄時(shí),是根據對象標識定位的。
  組合類(lèi)型:物化視圖日志在記錄主體對象發(fā)生變化的記錄時(shí),是根據上面三種類(lèi)型的組合來(lái)定位的。如果物化視圖日志根據主鍵、ROWID和對象標識定位變化的數據,則這種物化視圖日志同時(shí)支持主鍵、ROWID和對象物化視圖,這種物化視圖日志對于一個(gè)包含三種類(lèi)型物化視圖的環(huán)境是很有用的。
  組合類(lèi)型物化視圖日志和其他類(lèi)型物化視圖日志工作方式相同,只不過(guò)多記錄了一、二種類(lèi)型。
  雖然主鍵物化視圖日志和ROWID物化視圖日志的差別很小,但是這些差別在實(shí)際使用中有著(zhù)很大的影響。如果ROWID物化視圖日志會(huì )導致重組和截斷十分困難,因為這回導致ROWID發(fā)生變化。如果你對主表進(jìn)行了重組和截斷,那么ROWID物化視圖必須執行完全刷新。
  1)基于對象表的物化視圖日志
  你可以在對象表上建立物化視圖日志。
  當你創(chuàng )建基于這個(gè)類(lèi)型的對象表時(shí),你可以指出對象標識是系統產(chǎn)生的或者基于主鍵的。
  當你為對象表創(chuàng )建物化視圖日志時(shí),你必須指明WITH OBJECT ID語(yǔ)句記錄對象標識。如果對象標識是基于主鍵的,你也可以指明記錄主鍵。
  2)導入物化視圖和物化視圖日志到其他用戶(hù)模式下的約束
  導出的物化視圖和物化視圖日志DDL語(yǔ)句中明確給出了方案名稱(chēng)。因此物化視圖和物化視圖日志不能導入到其他用戶(hù)方案中。如果你嘗試使用FROM USER和TO USER選項導入物化視圖或物化視圖日志,則導入過(guò)程中會(huì )收到錯誤。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle實(shí)踐總結
CSDN技術(shù)中心 ORACLE中的物化視圖
58 (轉)dblink+物化視圖同步兩個(gè)數據庫的表數據
物化視圖相關(guān)操作
Oracle分布式系統數據復制技術(shù)
Oracle數據庫常用十一大操作指令
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久