Oracle

是否可以授予使用者對另一個使用者架構的所有權等效性?

  • August 24, 2020

我試圖在 Oracle 18c XE 中創建一個培訓師/實習生環境。到目前為止,我有 4 個實習使用者,他們都安裝了 hr-sample。現在,我計劃讓一位培訓師使用者能夠實時查看使用者所做的一切,並在需要時進行調整。

這個話題似乎經常被討論,但我還沒有看到一個解決方案,在這樣的腳本執行後,被授權者可以看到新創建的對象:

BEGIN
 FOR t IN (SELECT object_name, object_type FROM all_objects WHERE owner='TEST1' AND object_type IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')) LOOP
   IF t.object_type IN ('TABLE','VIEW') THEN
     EXECUTE IMMEDIATE 'GRANT SELECT, UPDATE, INSERT, DELETE ON SOURCEUSER.'||t.object_name||' TO TEST2';
   ELSIF t.object_type IN ('PROCEDURE','FUNCTION','PACKAGE') THEN
     EXECUTE IMMEDIATE 'GRANT EXECUTE ON TEST1.'||t.object_name||' TO TEST2';
   END IF;
 END LOOP;
END;

必須有一種方法可以讓另一個使用者選擇和創建所有對象的權限,包括將來編寫的對象。當然有可能編寫一個觸發器,但這對於如此簡單的要求來說似乎太複雜了。

是否可以授予使用者對另一個使用者架構的所有權等效性?

沒有直接的方法可以做您所描述的事情,這是通過對特定模式的斷言獲得的特權。您可以做的最接近的事情是授予培訓師代理權限以作為受訓者登錄以查看其對象,或授予一系列“任何”系統權限(選擇任何表、更改任何表、插入任何表等) .) 給培訓師,讓他們可以看到數據庫中的所有內容。我在這裡寫了一篇關於代理身份驗證的簡短部落格:https ://pmdba.wordpress.com/2014/09/05/shared-application-accounts-and-developers/ 。您還可以在此處找到相關資訊:https ://oracle-base.com/articles/misc/proxy-users-and-connect-through 。

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