1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

create User-Script

Dieses Thema im Forum "Oracle" wurde erstellt von bieber, 14 Juli 2009.

  1. bieber

    bieber Benutzer

    Hallo, ich wollte mal fragen ob jm. von euch ein Script hat, dass alle Berechtigungen eines Nutzers in ein create-Befehl steckt. Sprich ein Script was mir den gleichen Nutzer nochmal anlegen kann mit den gleichen Berechtigungen. Hintergrund ist, dass man für ein update einer Testdatenbank ja am besten den Nutzer löscht, ihn neu anlegt, und dann die entsprechenden Schematas importiert.
     
  2. db.wizard

    db.wizard Aktiver Benutzer

    AW: create User-Script


    Hallo,

    ich habe mal ein Script geschrieben, welches die DDL für alle User einer Datenbank erstellt. Du solltest es einfach für deine Bedürfnisse Anpassen können.

    Code:
    PROMPT ==============================================================
    PROMPT  DBMS name:   ORACLE Version 9i R2 9.2.0.8.0
    PROMPT  Created:  22.06.2009
    PROMPT  User: SYS
    PROMPT  Roles: Connect / Resource
    PROMPT  Usage: Creates DDL for all User of an Database 
    PROMPT  XXXXX
    PROMPT  Release 3.0.6 Build 007
    PROMPT  Target Platform xxxxxx
    PROMPT ==============================================================
    PROMPT SET the Spoolfile
    column spool_name new_value S
    set termout off
    SELECT LOWER(G.global_name)||'_'||
           LOWER(U.username)||'_'||
           TO_CHAR(SYSDATE,'DD.MM.YYYY')  ||'.lst'
                                     spool_name
      FROM user_users  U,
           global_name G
     WHERE ROWNUM < 2;
    set termout on
    spool &S
    SELECT U.username||' - '||
           G.global_name||' - '||
           TO_CHAR(SYSDATE,'DD.MM.YYYY HH24:MI:SS')  
                                     START_run_info
      FROM user_users  U,
           global_name G
     WHERE ROWNUM < 2;
     set head off
    set pages 0
    set long 9999999
    SELECT DBMS_METADATA.get_ddl ('USER', username) || ';' ddl FROM dba_users;
    SELECT DBMS_METADATA.get_ddl ('ROLE', role) || ';' ddl FROM dba_roles;
    SELECT DBMS_METADATA.get_granted_ddl ('ROLE_GRANT', role) || ';' ddl
      FROM role_role_privs;
    SELECT DBMS_METADATA.get_granted_ddl ('SYSTEM_GRANT', role) || ';' ddl
      FROM role_sys_privs;
    SELECT DBMS_METADATA.get_granted_ddl ('OBJECT_GRANT', role) || ';' ddl
      FROM role_tab_privs;
     
     
    SELECT U.username||' - '||
           G.global_name||' - '||
           TO_CHAR(SYSDATE,'DD.MM.YYYY HH24:MI:SS')  
                                     STOP_run_info
      FROM user_users  U,
           global_name G
     WHERE ROWNUM < 2;
    PROMPT LOGFILE writen : &S
    spool off
    


    Gruss
     
  3. bieber

    bieber Benutzer

    AW: create User-Script

    Vielen Dank.

    Script funst sehr gut... jetzt muss ich es nur noch umschreiben :eek: (der smilie fetzt)
     
  4. bieber

    bieber Benutzer

    AW: create User-Script

    Auf die Anregung mit den DBMS_METADATA habe ich folgendes Script gefunden (welches ideal für mich funktioniert)
    Code:
    set head off
    set pages 0
    set long 9999999
    spool user_script.sql
    SELECT DBMS_METADATA.GET_DDL('USER', USERNAME) || '/' DDL
    FROM DBA_USERS
    UNION ALL
    SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', USERNAME) || '/' DDL
    FROM DBA_USERS
    UNION ALL
    SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', USERNAME) || '/' DDL
    FROM DBA_USERS
    UNION ALL
    SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT', USERNAME) || '/' DDL
    FROM DBA_USERS;
    spool off;
    und nebenbei hab ich auch wieder was dazugelernt :)

    bei deinem Script habe ich irgendwie nicht die Rollen meines Nutzers bekommen, da du auf role_role_privs usw gehst, nicht auf dba_users
     
  5. db.wizard

    db.wizard Aktiver Benutzer

    AW: create User-Script

    - ja klar, deswegen habe ich geschrieben, dass du es anpassen musst :)


    Gruss
     
  6. bieber

    bieber Benutzer

    AW: create User-Script

    hehe, alles klar nochmals Danke
     

Diese Seite empfehlen