物化檢視複製概念和體系結構——高階複製

yangtingkun發表於2010-05-31

最近在重新看Oracle的高階複製文件,正好昨天建立了一個物化檢視專用的索引貼,事情都趕到一塊了。於是找出了以前針對這篇文件的翻譯進行簡單的修改後作為這篇讀書筆記。

 
一、概述
Oracle提供兩種不同的複製方法:多主複製和物化檢視複製。還可以透過兩種複製的組合構成混合複製。
本文主要描述物化檢視複製,由於物化檢視複製中的主站點就是多主複製中的站點,因此也會對相應的多主複製中涉及到的內容作相應的說明。
二、物化檢視的概念和體系結構
Oracle的物化檢視主要用在兩個方面:高階複製和資料倉儲。在高階複製環境中,物化檢視用於複製資料到非主體站點。在資料倉儲環境中,物化檢視用於對代價昂貴的查詢進行快取。
1.物化檢視是什麼
物化檢視是主體物件在某一時間點上的複製品。這個主體物件即可以是主體站點上的一個主表,也可以是物化檢視站點上的一個主物化檢視。在多主複製中,一個站點上的表被其他主體站點連續不斷的更新,而物化檢視則是從一個主體站點或主物化檢視站點批次的進行更新。
當物化檢視進行快速重新整理時,Oracle會檢查主表或主物化檢視自上次重新整理以來的所有改變,並將其應用到物化檢視上。因此,如果主體物件自上次重新整理以來存在一些改變,則重新整理操作則會花費一定的時間把這些改變應用到物化檢視上。如果自上次重新整理以來沒有發生任何變化,則物化檢視重新整理操作會迅速的完成。
2.為什麼使用物化檢視
你可以使用物化檢視來完成以下目標:
減輕網路負載;
建立一個Mass Deployment環境;
資料子集;
離線部署。
(1)減輕網路負載:
你可以透過物化檢視將資料分佈到許多站點,所有使用者不需要再訪問一個資料庫伺服器,負載被分散到多個資料庫伺服器上。和多主複製不同的是,你可以根據需要,只複製表中的一部分欄位或者表中的一部分資料,從而降低了每次複製的資料量。
多主複製也可以分佈網路負載,但與物化檢視相比它對網路的要求要嚴格得多。由於多主複製各個站點間採用的是網狀連線,每個站點和其他所有的站點都有通訊,而且多主複製一般用於提供實時或接近實時的複製,這會導致很高的網路流量,對於網路狀況要求比較嚴格。
物化檢視採用高效的批次更新方式,從一個主體站點或一個主物化檢視站點獲得更新。和多主複製的連續通訊不一樣,物化檢視複製只需要週期性的重新整理,從而對網路的要求大大降低。
(2)建立Mass Deployment環境:
展開模板允許你在本地預先建立物化檢視環境。你可以利用展開模板快速簡便的展開物化檢視環境。你可以不用修改展開模板,而是利用引數來建立不同使用者的客戶化資料集。
(3)資料子集:
物化檢視允許你的複製建立在列或者行的基礎上,而多主複製需要複製整張表。透過使用Data subsetting,對於每個站點你可以僅複製滿足本站點需要的資料。
(4)離線部署:
物化檢視不需要專用網路連線。你可以利用job的排程機制完成物化檢視的定時自動重新整理,你也可以在需要的時候手工重新整理物化檢視。而這第二種方法是在筆記本上執行應用程式的一種理想解決方案。
3.物化檢視的分類
物化檢視分為只讀、可更新和可寫三類。不能對只讀物化檢視進行DML操作,對於可更新和可寫物化檢視則可以進行DML操作。
注意:對於只讀、可更新和可寫物化檢視,定義物化檢視的查詢語句必須包含主體物件中的所有主鍵列。
(1)只讀物化檢視
在建立物化檢視時,省略FOR UPDATE語句建立只讀物化檢視。除了不需要屬於一個物化檢視組之外,只讀物化檢視的許多機制都和可更新物化檢視相同。
使用只讀物化檢視可以消除在主體站點或者主物化檢視站點上由物化檢視引入的資料衝突,這個優點的代價是隻讀物化檢視不能進行dml操作。
注意:使用只讀物化檢視只能消除由物化檢視站點引入的衝突,並不意味著使用只讀物化檢視就不會由衝突產生,後面會舉例詳細說明。
(2)可更新物化檢視
在建立物化檢視時,指明FOR UPDATE語句建立可更新物化檢視。為了可更新物化檢視的修改在重新整理時可以被“推回”主體物件,可更新物化檢視必須屬於一個物化檢視組。
由於可更新物化檢視允許資料的修改,因此可以降低主體站點的負載。
注意:
1.不要在建立可更新物化檢視時使用列的別名,否則,在將物化檢視加入到物化檢視組的時候會發生錯誤。
2.主表或主物化檢視列上的預設值不會自動應用到可更新物化檢視上。
3.可更新物化檢視不支援DELETE CASCADE操作。
(3)可寫物化檢視
可寫物化檢視指出FOR UPDATE語句,但是沒有加入到物化檢視組。使用者可以對可寫物化檢視執行DML操作,但是在執行重新整理操作時,修改不會被“推回”,因此所有的修改在重新整理後全部丟失。所有允許只讀物化檢視的情況也同樣允許可寫物化檢視。
由於可寫物化檢視很少使用,因此以後大部分內容都只涉及只讀物化檢視和可更新物化檢視。
4.物化檢視可用性
Oracle提供幾種不同型別的物化檢視,以滿足各種複製環境的需要。
介紹下列物化檢視以及它們使用的環境:
主鍵物化檢視;
物件物化檢視;
ROWID物化檢視;
複雜物化檢視。
當建立物化檢視時,不管物化檢視屬於何種型別,總是給出方案名,也就是查詢語句中表的所有者名稱。
(1)主鍵物化檢視
主鍵物化檢視是預設的物化檢視。如果主鍵物化檢視是作為物化檢視組的一部分建立的,且指定了FOR UPDATE語句,那麼這個物化檢視是可更新的,且這個物化檢視組必須和主站點中複製組的同名。另外,可更新物化檢視必須和主複製組在不同的資料庫中。
當修改發生後,修改的資料以行級為單位被傳播,每行資料由主鍵確定。
主鍵物化檢視可以包含一個子查詢,因此你可以在建立物化檢視時,建立所有資料的一個子集,也就是說,建立物化檢視時可以只選取你需要的資料行。子查詢是嵌入在主查詢中的查詢,因此你可以在建立物化檢視時有超過一個的SELECT語句。子查詢可以是簡單的WHERE語句也可以是複雜的多層WHERE EXISTS語句巢狀。如果主站點中的主物件建立了物化檢視日誌表,那麼一些包含特定型別子查詢的主鍵物化檢視仍然可以快速(增量)重新整理。快速重新整理利用materialized view logs只更新自上次重新整理後被修改的記錄。
(2)物件物化檢視
如果物化檢視是基於物件表,並且在建立是指定了OF TYPE語句,那麼這個物化檢視叫做物件物化檢視。物件物化檢視的結構和物件表相同——物件物化檢視由行物件組成,每一個行物件由一個物件標識列OID標識。
(3)ROWID物化檢視
為了後向相容性,Oracle除了預設的主鍵物化檢視外,還支援ROWID物化檢視。ROWID物化檢視基於主物件中行記錄的物理標識ROWID。ROWID物化檢視只被用在基於Oracle7版本的主物件的物化檢視,它不能被用於建立基於Oracle8或更高版本主站點的物化檢視。
(4)複雜物化檢視
物化檢視的定義必須滿足某種約束,才能執行快速重新整理。如果你需要的物化檢視的定義查詢語句更為一般化,不能滿足限制條件,那麼這個物化檢視是複雜的,並且不能執行快速重新整理。
一般來說,如果一個物化檢視的定義查詢包含下列語句,則被認為是複雜物化檢視:
CONNECT BY語句;
INTERSECT,MINUS或UNION ALL操作;
在某些情況下的DISTINCT和UNIQUE關鍵字:包含DISTINCT和UNIQUE關鍵字的並不都是複雜物化檢視,簡單物化檢視中也可以包含這兩個關鍵字;
聚集操作;
連線不在子查詢中的物件;
某種情況下的UNION操作。
以及其他任何不滿足特定約束條件的子查詢。具體條件見“物化檢視中的資料子集”的物化檢視子查詢約束
注意:如果可能,儘量避免使用複雜物化檢視,因為複雜物化檢視不能快速重新整理,將會降低網路效能。
對比簡單物化檢視和複雜物化檢視:
為了某種應用,你可能需要考慮使用一個複雜物化檢視。你有兩種方法可以選擇,它們各有利弊,具體如下:
複雜物化檢視:這個複雜物化檢視在資料庫中展示出高效的查詢效能,因為連線操作在物化檢視重新整理時已經完成。然而,由於是複雜物化檢視,必須執行完全重新整理,這將極為可能比執行快速重新整理要慢得多。
簡單物化檢視透過檢視連線:展示了兩個簡單物化檢視,它們透過一個檢視執行連線操作。透過檢視查詢不可能有方法A中查詢複雜物化檢視那樣的效能。然而,簡單物化檢視可以更加有效的使用快速重新整理和物化檢視日誌。
總的來說:
如果你很少重新整理,且需要比較高的查詢效能,則使用方法A。
如果你經常重新整理,且可以犧牲查詢效能,則使用方法B。
5.物化檢視操作所需許可權
三種不同型別的使用者對物化檢視執行操作:
建立者:建立物化檢視的使用者。
重新整理者:重新整理物化檢視的使用者。
所有者:擁有物化檢視的使用者。物化檢視存在於所有者的方案中。
一個使用者對物化檢視可以執行所有的操作。然而,在一些複製環境中,不同的使用者對物化檢視執行不同的操作。執行這些操作需要的許可權取決於操作由同一個使用者執行還是由不同的使用者執行。下面詳細解釋所需許可權。
注意:下文沒有包括用重寫查詢選項來建立物化檢視時所需要的許可權。
(1)建立者是所有者
如果一個物化檢視的建立者同時也是一個物化檢視的所有者,那麼這個使用者可以透過明確授權或透過角色擁有下列許可權來建立一個物化檢視。
CREATE MATERIALIZED VIEW或者CREATE ANY MATERIALIZED VIEW許可權;
CREATE TABLE或者CREATE ANY TABLE許可權;
如果資料庫相容性在8.1.0以下,需要CREATE VIEW或者CREATE ANY VIEW許可權;
對主站點上物件和物化檢視日誌的SELECT許可權或者SELECT ANY TABLE系統許可權。如果主站點不是本地資料庫,則SELECT許可權必須授權給一個主站點使用者,這個使用者就是物化檢視站點透過資料庫鏈連線到主站點的使用者。
(2)建立者不是所有者
如果物化檢視的建立者不是所有者,必須授予建立者和所有者某種許可權才能建立物化檢視。建立者的許可權可以直接授權或透過角色授權,但是所有者的許可權必須透過明確授權獲得。也就是說,所有者的許可權不能透過角色獲得。
建立者:
CREATE ANY MATERIALIZED VIEW系統許可權
所有者:
CREATE TABLE或者CREATE ANY TABLE許可權;
如果資料庫相容性在8.1.0以下,需要CREATE VIEW或者CREATE ANY VIEW許可權;
對主站點上物件和物化檢視日誌的SELECT許可權或者SELECT ANY TABLE系統許可權。如果主站點不是本地資料庫,則SELECT許可權必須授權給一個主站點使用者,這個使用者就是物化檢視站點透過資料庫鏈連到主站點的使用者。
(3)重新整理者是所有者
如果一個物化檢視的重新整理者同時也是物化檢視的擁有者,這個使用者需要主站點上物件和物化檢視日誌的SELECT許可權或者SELECT ANY TABLE系統許可權。如果主站點不是本地資料庫,則SELECT許可權必須授權給一個主站點使用者,這個使用者就是物化檢視站點透過資料庫鏈連到主站點的使用者。許可權可以透過直接授權或透過角色授權。
(4)重新整理者不是所有者
如果物化檢視的重新整理者不是所有者,必須授予重新整理者和所有者某種許可權。這些許可權可以直接授權或透過角色授權。
重新整理者:
ALTER ANY MATERIALIZED VIEW系統許可權。
所有者:
主站點上物件和物化檢視日誌的SELECT許可權或者SELECT ANY TABLE系統許可權。如果主站點不是本地資料庫,則SELECT許可權必須授權給一個主站點使用者,這個使用者就是物化檢視站點透過資料庫鏈連到主站點的使用者。
6.物化檢視中的資料子集
在某些情況下,你可能希望你的物化檢視反映主表或者主物化檢視中資料的子集。透過使用WHERE語句,行子集允許你包含主表或者主物化檢視中你想要的行記錄。列子集允許你從主表或者主物化檢視中只包含你所需要的列。在建立物化檢視時,透過在SELECT語句中明確指出所要選取的列來實現列子集。如果你使用展開模板來建立你的物化檢視,那麼你可以在可更新物化檢視上定義列子集。
(1)使用資料子集的一些原因
降低網路流量:在一個使用列子集的物化檢視中,只有滿足物化檢視定義中WHERE條件語句的修改才會傳播到物化檢視站點,因此減少了事務傳輸數量,降低了網路流量。
保護敏感資料:使用者只能檢視滿足物化檢視查詢定義的資料。
減少資源需要:如果物化檢視建立在筆記本上,則硬碟與伺服器上的硬碟相比要小得多。資料子集可以顯著的減少儲存空間。
提高重新整理效能:由於較少的資料傳播到物化檢視站點,重新整理執行的更加迅速。這一點對於那些需要透過撥號連線來重新整理物化檢視的使用者十分重要。
(2)帶子查詢的物化檢視
上面的例子是針對單個表的。如果建立基於多個表的物化檢視,則定義和維護這些物化檢視相對來說困難得多。主要包括多對一子查詢、一對多子查詢、多對多子查詢以及包含UNION操作的子查詢幾種。這些物化檢視比較複雜,而且在實際複製中不經常使用,因此這裡不再詳細描述。如果對這部分有興趣,請參閱Oracle9i Advanced Replication 3-18 Materialized Views with Subqueries部分。下面描述一下建立快速重新整理子查詢物化檢視的條件。
物化檢視子查詢約束
帶子查詢的物化檢視為了能達到快速重新整理的能力,必須滿足許多約束條件,具體如下:
必須是主鍵物化檢視;
物化檢視日誌必須包括某些在子查詢中出現的列;
如果子查詢是多對多或一對多查詢,連線列中非主鍵的部分必須包括在物化檢視日誌中,多對一子查詢沒有這個約束;
子查詢必須是肯定條件,比如,你可以使用EXISTS,但是不能使用NOT EXISTS;
子查詢必須使用EXISTS連線到巢狀層,不能使用IN;
每張表只允許一個EXISTS表示式;
連線表示式必須採用精確匹配或等於連線;
在子查詢中,每張表只能被連線一次;
在巢狀層中,每張表必須有主鍵存在;
巢狀層只能參考比它高的層中的表;
子查詢可以包含AND操作,但是每個OR操作只能連線“能確定一條記錄”的列,子查詢中多個OR運算可以透過AND連線;
子查詢中的所有表必須在同一個主體站點或主物化檢視站點中。
7.決定物化檢視的快速重新整理能力
為了檢測所建立的帶子查詢的物化檢視是否滿足上面提到的建立快速重新整理物化檢視的種種約束,在建立時,如果違反任何約束條件,則Oracle會返回錯誤提示。如果在建立物化檢視時指明強制重新整理,則不會收到任何錯誤資訊。因為在強制重新整理時,如果不能執行快速重新整理的話,Oracle會自動執行完全重新整理。
你也可以透過DBMS_MVIEW包中的EXPLAIN_MVIEW過程來檢測已存在的物化檢視甚至是還沒有建立的物化檢視的一些資訊,具體資訊如下:
物化檢視的各種能力;
對於這個物化檢視來說每種能力是否可能;
如果不可能,給出導致這種能力不可能的原因;
這些資訊可以儲存在varray中,也可以儲存在MV_CAPABILITIES_TABLE表中。如果你希望把資訊儲存到表中,那麼你必須在執行EXPLAIN_MVIEW儲存過程以前,執行ORACLE_HOME/rdbms/admin目錄下的utlxmv.sql指令碼。
8.多級物化檢視
物化檢視的建立可以基於表,也可以基於其他物化檢視,這種物化檢視叫做多級物化檢視。這種基於其他物化檢視的物化檢視可以是隻讀的也可以是可更新的。
當使用多級物化檢視時,基於主體表的物化檢視叫做第一層物化檢視。基於第一層物化檢視的物化檢視叫做第二層物化檢視。下一層是第三層,依此類推。
作為其他物化檢視的主物件的物化檢視叫做主物化檢視。處在任何一層的物化檢視都可以成為主物化檢視,而且可以存在多個其他的物化檢視基於同一個主物化檢視。
主物化檢視和主站點中的主表起相同的作用。也就是說把第二層物化檢視上的改變“推到”第一層物化檢視上的操作和把第一次物化檢視上的改變“推到”主表上的操作是完全一樣的。
在主物化檢視站點必須註冊一個接收者。在多層物化檢視站點中接收者負責接受和應用來自主物化檢視站點傳播者的延遲事務。
多層物化檢視在設計複製環境時提供了很高的靈活性。一些物化檢視站點不需要複製主表中所有的資料,實際上,這些站點可能根本沒有足夠的空間儲存這些資料。另外,只複製較少的資料意味著在網路上活動的資料也較少。
使用多層物化檢視的限制條件:
主物化檢視和基於主物化檢視的物化檢視都必須滿足下列條件:
1)必須是主鍵物化檢視;
2)所在資料庫相容性等於或者高於9.0.1。
主物化檢視的一些限制。下列型別的物化檢視不能作為可更新物化檢視的主物化檢視。
1)ROWID物化檢視;
2)複雜物化檢視;
3)只讀物化檢視。
不過這三種物化檢視可以成為只讀物化檢視的主物化檢視。
基於物化檢視的可更新物化檢視的額外限制:
1)所屬的物化檢視組必須和主物化檢視站點上的物化檢視組同名;
2)必須和主物化檢視不在同一個資料庫上;
3)必須基於可更新物化檢視,不能基於只讀物化檢視;
4)主站點上的主物化檢視組必須存在於PUBLIC方案中。
9.包含使用者定義型別的物化檢視
Oracle的複製支援使用者自定義型別資料。Oracle不但支援行物件和列物件而且還支援collections的複製。Collection包括基於使用者自定義型別的陣列和巢狀表。
使用使用者自定義型別需要注意幾點:
主站點和物化檢視站點的資料庫相容性等於或高於9.0.1;
如果主物件包含使用者自定義型別,則不能建立refresh-on-commit物化檢視;
高階複製不支援物件的繼承。
物化檢視複製中對使用者自定義型別的要求和限制於多主環境中的限制比較類似,這裡不再詳細描述,如果對這部分內容感興趣,請參考Oracle9i Advanced Replication 3-36 Materialized Views with User-Defined Types。
10.主站點的物化檢視註冊
在主體站點或主物化檢視站點,Oracle資料庫會自動註冊基於主體物件的物化檢視的資訊。下面介紹物化檢視的序號產生器制
(1)檢視關於註冊物化檢視的資訊
第一層物化檢視或物化檢視組註冊在主體站點。第二層以上的物化檢視或物化檢視組註冊在主物化檢視站點。可以查詢主站點或主物化檢視站點上的DBA_REGISTERED_MVIEWS檢視,列出遠端物化檢視的下列資訊:
1)物化檢視的所有者,名稱,以及包含物化檢視的資料庫名;
2)物化檢視的定義查詢語句;
3)其他物化檢視屬性,比如重新整理方法等。
也可以查詢主體站點或主物化檢視站點上的DBA_MVIEW_REFRESH_TIMES檢視,取得每個物化檢視的最後重新整理時間。資料庫管理員可以查詢這些資訊來監視遠端物化檢視的活動。
(2)內部機制
當你建立物化檢視時,Oracle會自動在主體站點或主物化檢視站點上註冊物化檢視,在你刪除物化檢視時,Oracle會自動取消物化檢視的註冊。物化檢視組和物化檢視一樣。
當你刪除一個主物化檢視時,Oracle不會自動刪除那些基於它的物化檢視,你必須手工刪除這些物化檢視。如果你沒有刪除這個物化檢視,且這個物化檢視嘗試重新整理以及別刪除的主物化檢視,則Oracle會返回錯誤資訊。
例如:假設物化檢視orders_lev1基於主表oe.orders,物化檢視orders_lev2基於物化檢視orders_lev1。如果你刪除了orders_lev1,orders_lev2不會被自動刪除。這時,如果你嘗試去重新整理orders_lev2,則Oracle返回錯誤訊息,因為orders_lev1已經不存在了。
注意:Oracle無法保證在主站點上的註冊或取消註冊物化檢視操作和建立或刪除物化檢視操作完全一一對應。如果Oracle在建立物化檢視時,無法成功的註冊,則你必須利用DBMS_MVIEW包的REGISTER_MVIEW過程手工完成註冊。如果在刪除物化檢視時,Oracle無法成功的取消註冊,則註冊資訊會一直儲存在主體站點或主物化檢視站點,直到你手工取消註冊。複雜物化檢視有可能無法註冊。
注意:Oracle7版本的主站點不能註冊物化檢視。
(3)手工物化檢視註冊
如果有必要,你可以手工註冊物化檢視。使用DBMS_MVIEW包中的REGISTER_MVIEW和UNREGISTER_MVIEW過程完成主站點上的增加、修改和刪除物化檢視註冊資訊。
11.主站點和主物化檢視站點機制
下圖中包含了物化檢視複製環境中涉及到的物件,有些物件是可選的。例如:如果你建立一個只讀物化檢視,那麼在物化檢視站點既不需要可更新物化檢視日誌也不需要內部觸發器;如果你建立一個無法快速重新整理的複雜物化檢視,那麼在主站點物化檢視日誌。
注意:主物化檢視可能同時存在物化檢視日誌和可更新物化檢視日誌。在設計主物化檢視站點時,應當保證有足夠的空間存放這些日誌。
為了支援快速重新整理物化檢視,下列機制是主體站點或主物化檢視站點所需要的。
(1)主表或主物化檢視
主表或主物化檢視是物化檢視的基礎。如果主體物件是主表的話,這張表可能同時成為多主複製和物化檢視複製中的物件。物化檢視只能指向一個主體站點或主物化檢視指點。
主表或主物化檢視上的改變被記錄在物化檢視日誌中,並在重新整理過程中,傳播並應用到物化檢視上。
注意:快速重新整理物化檢視可以基於主表或主物化檢視建立。但是基於同義詞或者檢視的物化檢視只能執行完全重新整理。
(2)內部觸發器
當對主表或主物化檢視進行DML操作時,內部觸發器將受到影響的行記錄在物化檢視日誌中。記錄的資訊包括主鍵、ROWID或物件標識以及其他列的值。當你為主表或主物化檢視建立物化檢視日誌時,會自動建立並啟用一個內部的AFTER ROW觸發器。只要插入、更新或刪除語句修改表中的資料,則觸發器會在物化檢視日誌中插入記錄。這個觸發器總是最後被點火的觸發器。
(3)物化檢視日誌
如果你想要採用快速重新整理的話,必須建立基於主體物件的物化檢視日誌。物化檢視可以記錄主體物件被更新記錄的主鍵、ROWID或物件標識或者二者全部。物化檢視日誌也可以包含其他列用以支援帶子查詢的物化檢視的快速重新整理。
物化檢視日誌表的名稱為MLOG$_後面跟主體物件的名稱。物化檢視日誌和主體物件建立在相同的使用者模式下。一個物化檢視日誌可以支援多個基於主體物件的物化檢視。
有下列幾種物化檢視日誌:
主鍵:物化檢視日誌在記錄主體物件發生變化的記錄時,是根據主鍵定位的。
ROWID:物化檢視日誌在記錄主體物件發生變化的記錄時,是根據ROWID定位的。
物件標識:物化檢視日誌在記錄主體物件發生變化的記錄時,是根據物件標識定位的。
組合型別:物化檢視日誌在記錄主體物件發生變化的記錄時,是根據上面三種型別的組合來定位的。如果物化檢視日誌根據主鍵、ROWID和物件標識定位變化的資料,則這種物化檢視日誌同時支援主鍵、ROWID和物件物化檢視,這種物化檢視日誌對於一個包含三種型別物化檢視的環境是很有用的。
組合型別物化檢視日誌和其他型別物化檢視日誌工作方式相同,只不過多記錄了一、二種型別。
雖然主鍵物化檢視日誌和ROWID物化檢視日誌的差別很小,但是這些差別在實際使用中有著很大的影響。如果ROWID物化檢視日誌會導致重組和截斷十分困難,因為這回導致ROWID發生變化。如果你對主表進行了重組和截斷,那麼ROWID物化檢視必須執行完全重新整理。
1)基於物件表的物化檢視日誌
你可以在物件表上建立物化檢視日誌。
當你建立基於這個型別的物件表時,你可以指出物件標識是系統產生的或者基於主鍵的。
當你為物件表建立物化檢視日誌時,你必須指明WITH OBJECT ID語句記錄物件標識。如果物件標識是基於主鍵的,你也可以指明記錄主鍵。
2)匯入物化檢視和物化檢視日誌到其他使用者模式下的約束
匯出的物化檢視和物化檢視日誌DDL語句中明確給出了方案名稱。因此物化檢視和物化檢視日誌不能匯入到其他使用者方案中。如果你嘗試使用FROM USER和TO USER選項匯入物化檢視或物化檢視日誌,則匯入過程中會收到錯誤。
 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-664150/,如需轉載,請註明出處,否則將追究法律責任。

相關文章