Benutzer kopieren mit Rechten und Rollen

Sie möchten einen neuen Benutzer erstellen, der die gleiche Rechtestruktur, Standard-Tablespaces und Default-Rollen erhält wie ein bestehender Benutzer? Das folgende Skript unterstützt Sie darin:

Oracle Benutzer: Kopieren
clear screen
SET serveroutput ON 
SET pages 0 feed off veri off LINES 500 
 
PROMPT ===============================================================
PROMPT =
PROMPT =
PROMPT =  Erstellen eines neuen Benutzers als Kopie des alten Benutzers
PROMPT =  inkl. Rechte und Rollen
PROMPT =
PROMPT =
PROMPT ===============================================================
 
accept oldname PROMPT "Bitte Namen des Benutzers zur Vorlage eingeben: " 
accept newname PROMPT "Neuen Benutzer eingeben: " 
accept psw PROMPT "Kennwort des neuen Benutzers: " 
PROMPT
PROMPT Skript wird generiert ...
PROMPT
SPOOL cr_user.tmp
-- CREATE user... 
SELECT 'CREATE user &&newname identified by &&psw' ||  
' default tablespace ' || default_tablespace ||  
' temporary tablespace ' || temporary_tablespace || ' profile ' ||  
profile || ';' 
FROM sys.dba_users 
WHERE username = upper('&&oldname'); 
 
-- GRANT Roles... 
SELECT 'GRANT ' || GRANTed_role || ' to &&newname' ||  
decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION') || ';' 
FROM sys.dba_role_privs 
WHERE grantee= upper('&&oldname'); 
 
-- GRANT System Privs... 
SELECT 'GRANT ' || privilege || ' to &&newname' ||  
decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION') || ';' 
FROM sys.dba_sys_privs 
WHERE grantee= upper('&&oldname'); 
 
-- GRANT Table Privs... 
SELECT 'GRANT ' || privilege || ' on ' || owner || '.' || table_name ||
         ' to &&newname;' 
FROM sys.dba_tab_privs 
WHERE grantee= upper('&&oldname'); 
 
-- GRANT COLUMN Privs... 
SELECT 'GRANT ' || privilege || ' on ' || owner || '.' || table_name ||  
'(' || COLUMN_name || ') to &&newname;' 
FROM sys.dba_col_privs 
WHERE grantee= upper('&&oldname'); 
 
-- set Default Role... 
SELECT 'alter user &&newname default role ' ||  GRANTed_role  || ';' 
FROM sys.dba_role_privs 
WHERE grantee= upper('&&oldname') 
AND default_role = 'YES'; 
 
SPOOL OFF
 
PROMPT
PROMPT
PROMPT ===============================================================
PROMPT =
PROMPT = Benutzer mit obigen Skripten erstellen? 
PROMPT =
PROMPT =        - Abbruch mit strg + c
PROMPT =        - Zum erstellen beliebige Taste druecken
PROMPT =
PROMPT ===============================================================
PAUSE
PROMPT
PROMPT Benutzer wird jetzt erstellt ...
@cr_user.tmp
 
PROMPT Vorgang abgeschlossen
/