Oracle

授予使用者權限以授予對 Oracle 中多個模式中的特定表的選擇權限

  • May 2, 2018

我在 Oracle 中管理一個小型數據倉庫。我的使用者 dwhmanager 被授予 SELECT ANY TABLE 權限:

GRANT SELECT ANY TABLE TO dwhmanager WITH ADMIN OPTION;

這個想法是能夠向數據倉庫中的開發人員授予對多個模式中的表的訪問權限。

例子:

GRANT SELECT ON DWHFINANCE.SALES TO johndeveloper;

但是,我發現自己得到了臭名昭著的ORA-01031:權限不足

但是,我也可以為“johndeveloper”提供 SELECT ANY TABLE 特權,這樣他就可以在數據倉庫中的任何表上進行選擇,但是,這太過分了,這不是我的意圖。

那麼,我需要向主 DBA 授予什麼權限才能授予我在其他模式中的單個表中授予權限的權力?

您需要有權select訪問使用 admin 選項授予您的特定表

GRANT SELECT ON <<table name>> 
  TO dwhManager
WITH ADMIN OPTION;

這將需要為每個表執行。您可以使用動態 SQL 在循環中執行此操作

BEGIN
 FOR t IN (SELECT * 
             FROM dba_tables
            WHERE owner = <<schema owner>>)
 LOOP
   EXECUTE IMMEDIATE 'GRANT SELECT ON ' ||
                        t.owner || '.' || t.table_name ||
                        ' TO dwhManager WITH ADMIN OPTION';
 END LOOP;
END;

每次創建新表時都需要進行新的授權。

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