Oracle-12c

無法使用角色創建視圖

  • October 20, 2020

我正在學習Oracle並且必須扮演角色。我從一個系統創建了c##admin一個,授予他所有贈款。然後我創建了一個c##manager_roleand c##manager。我將此角色授予c##manager. 之後,我開始授予c##manager_role. 此外,我授予以下內容:

CREATE VIEW                              YES YES NO

CREATE ANY VIEW                          NO  NO  NO

DROP ANY VIEW                            YES YES NO 

以上輸出來自:

select * from role_sys_privs where ROLE = 'C##MANAGER_ROLE' order by 1;

現在,我不明白,為什麼CREATE ANY VIEW有 3 個“否”以及為什麼我不能從c##manager.

來自 c##admin:

grant CREATE ANY VIEW TO c##manager_role with admin option CONTAINER=all;

來自 c##manager:

create view friends_v4 as select t1.nickname as "USER", t2.nickname as "FRIEND" from c##admin.clients t1, c##admin.clients t2, c##admin.friends where (t1.id = c##admin.friends.user_id and t2.id = c##admin.friends.friend_id);

錯誤:

錯誤報告 - ORA-01031: 權限不足 01031. 00000 - “權限不足”

*原因:試圖在沒有必要權限的情況下執行數據庫操作。

*行動:請您的數據庫管理員或指定的安全管理員授予您必要的權限

所有註明的表格都存在。

能夠創建視圖不是

$$ quite $$足夠。 主人

$$ account $$完成的視圖必須對該視圖使用的表具有讀取權限。這些權限不能通過任何角色授予。

grant read on friends to owner_of_friends_v4 ; 
grant read on clients to owner_of_friends_v4 ; 

另外,您為什麼在這裡與普通使用者合作(從“C##”開始)?

我只希望在 Container 數據庫中看到這些,而不是任何存在於其中的 Pluggable 數據庫(這是我希望看到所有應用程序表和數據的地方)。

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