我有一個有點古怪的問題,當談到甲骨文的角色和我的模式創建的代碼,我會盡我所能來形容我下面的問題:問題與用戶/系統的Oracle角色的訪問和權限
在使用提供的模式名稱創建模式創建角色。
EXECUTE IMMEDIATE 'CREATE ROLE ' || USER || 'ADMIN_R';
然後將此角色授予與該模式關聯的特定用戶。
DECLARE
V_ROLE_NAME CONSTANT VARCHAR2(30) := USER || 'ADMIN_R';
CURSOR C_ADMIN_USERS IS
SELECT USERNAME FROM DBUSERS WHERE ROLE = 'ADMINISTRATION';
BEGIN
FOR REC IN C_ADMIN_USERS
LOOP
EXECUTE IMMEDIATE 'GRANT ' || V_ROLE_NAME || ' TO ' || REC.USERNAME || ' WITH ADMIN OPTION';
END LOOP;
END;
具有此角色的用戶可以訪問特殊的管理包。
EXECUTE IMMEDIATE 'GRANT EXECUTE ON P_ADMINISTRATION TO ' || USER || 'ADMIN_R';
問題是,當我把它的模式並沒有放棄這一角色(屬於Oracle)的,所以,當我重新創建這個模式,因爲這個角色已經存在,整個過程將失敗。如果沒有登錄到我想避免的系統用戶,我也無法授予對此角色的訪問權限。簡單的解決辦法是放棄它,但我擔心在這種情況下,DBA一直在使用該角色來授予對其他用戶和潛在附加軟件包的訪問權限,如果我們只是任意刪除角色以重新創建,這些軟件包將全部丟失它。
任何援助將不勝感激。
用已登錄的用戶,雖然我不能授予該角色,在這種情況下,我需要使用系統用戶將其授予模式。我想要避免。 –