Oracle

Oracle中復雜的跨模式物化視圖需要哪些權限?

  • May 28, 2020

我有一個複雜的跨模式查詢,我想在 Oracle 19c 中將其創建為物化視圖(儘管該數據庫已從 Oracle 的眾多歷史版本中移植過來)。這包括將一個子查詢連接到三個總共模式的 5 個附加表,然後聯合到針對 3 個不同模式的查詢的另一個副本。創建視圖的帳戶具有 DBA 和 CONNECT 角色,並已被授予GLOBAL QUERY REWRITEUNLIMITED TABLESPACECREATE PROCEDURECREATE MATERIALIZED VIEWCREATE TABLE系統權限。它還對查詢中的所有表具有顯式 SELECT 權限。

我可以毫無問題地執行查詢本身。但是,當我為物化視圖添加設置時:

CREATE MATERIALIZED VIEW <account_schema>.<materialized_view_name>
BUILD IMMEDIATE
REFRESH FORCE
ON COMMIT
AS
<SELECT...>

我得到 ORA-01031,或“權限不足”。我錯過了什麼?有沒有辦法查詢更詳細的遺漏報告?它指向查詢中的特定位置(最後一個連接中的表),但我看不出它與其他表之間有任何區別。

問題似乎是 DDL 的“ON COMMIT”部分。從文件中:

“要創建送出時刷新物化視圖(REFRESH ON COMMIT 子句),除了上述權限外,您還必須對您不擁有的任何主表具有 ON COMMIT REFRESH 對象權限,或者您必須具有 ON COMMIT刷新系統權限。”

因此,要麼選擇“ON DEMAND”,要麼為每個源表授予額外的權限。

引用自:https://dba.stackexchange.com/questions/268040