Oracle

從包中刪除視圖

  • December 13, 2021

我有一個使用 DBA 角色定義的名為 DEPLOY 的使用者。

通過 SQL Developer 登錄時,使用者可以按如下方式刪除視圖:

DROP VIEW APP_USER.VIEW_NAME_VW CASCADE CONSTRAINTS

如果我將相同的語句放在 DEPLOY 擁有的包中,那麼它會失敗並顯示“ORA-00942:表或視圖不存在”。

因此,似乎通過 DBA 角色授予的權限不會擴展到包執行的程式碼。

它是否正確?

通過任何角色授予的權限,而不僅僅是 DBA 角色,在定義者權限儲存過程中不可用。假設您需要定義者的權限程序,您需要deploy通過直接授予授予使用者刪除角色的權限。最有可能在這種情況下,因為您可以擁有deployDBA 角色

grant drop any view
  to deploy;

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