Oracle
Oracle中復雜的跨模式物化視圖需要哪些權限?
我有一個複雜的跨模式查詢,我想在 Oracle 19c 中將其創建為物化視圖(儘管該數據庫已從 Oracle 的眾多歷史版本中移植過來)。這包括將一個子查詢連接到三個總共模式的 5 個附加表,然後聯合到針對 3 個不同模式的查詢的另一個副本。創建視圖的帳戶具有 DBA 和 CONNECT 角色,並已被授予
GLOBAL QUERY REWRITE
、UNLIMITED TABLESPACE
、CREATE PROCEDURE
、CREATE MATERIALIZED VIEW
和CREATE 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”,要麼為每個源表授予額外的權限。