lordcillin
Goto Top

Oracle User-Management Skript

Hallo,

ich habe vor mir eine Oracle 11g Datenbank und möchte für den Nachfolger meiner seits ein Skript erstellen, welches mit einfachen Schritten einen Nutzer anlegt, Rechte setzt und einen Trigger für diesen hinzufügt.

Folgender Aufbau noch als mein Ansatz:

DECLARE

  USERNAME VARCHAR2(200) := ;
  
  USERPASS VARCHAR2(200) := ;
  
  DEFAULTTABLESPACE VARCHAR2(200) := ;
  
  DEFAULTTEMPSPACE VARCHAR2(200) := ;
  
  DEFAULTPROFILE VARCHAR2(200) := ;
  
  LOGINSCHEMA VARCHAR2(200) := ;

BEGIN

  CREATE USER USERNAME IDENTIFIED BY USERPASS DEFAULT TABLESPACE DEFAULTTABLESPACE TEMPORARY TABLESPACE DEFAULTTEMPSPACE;
  ALTER USER USERNAME profile DEFAULTPROFILE;

  GRANT CONNECT TO USERNAME;
  
  -- Give the user the table rigths   
  -- Give the user the execute rigths

Grund ist, dass sich mein Nachfolger nicht besonders gut auskennen wird, deshalb wollte ich, dass er nur die Variablen neu belgen muss und anschließend das Skript ausführt und alles erledigt wird. Problem ist nun (zumindest ist das meine Meinung), dass ich bei den Variablen kein "varchar2" nehmen darf da dies mit der "CREATE USER" Anweisung nicht hinhaut.

Vielen Dank schonmal für die Antworten!!

MfG
Kommentar vom Moderator Biber am 20.04.2010 um 20:40:36 Uhr
Verschoben von "Programmiersprachen" gen "Datenbanken".

Content-ID: 140105

Url: https://administrator.de/contentid/140105

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

27234
27234 08.04.2010 um 11:48:32 Uhr
Goto Top
Hallo,

Du musst das mit "Dynamisches SQL" machen und so in etwa wie folgt aufdröseln:
DECLARE    
USERNAME VARCHAR2(200) := 'ABC';        
USERPASS VARCHAR2(200) := 'DEF';        
DEFAULTTABLESPACE VARCHAR2(200) := 'DEF_TBS';        
DEFAULTTEMPSPACE VARCHAR2(200) := 'DEF_TEMP';        
DEFAULTPROFILE VARCHAR2(200) := 'DEF_PROF';        
LOGINSCHEMA VARCHAR2(200) := 'LOG_SCHEMA';    

S1 VARCHAR2(1024);

BEGIN  
S1 := 'CREATE USER ' || USERNAME || ' IDENTIFIED BY ' || USERPASS ||' DEFAULT TABLESPACE ' || DEFAULTTABLESPACE || ' TEMPORARY TABLESPACE ' || DEFAULTTEMPSPACE;  
execute immediate s1;
S1 := 'ALTER USER ' || USERNAME || ' profile ' || DEFAULTPROFILE;      
execute immediate s1;
S1 := 'GRANT CONNECT TO ' || USERNAME;   
execute immediate s1;

END;

Gruß René
Biber
Biber 20.04.2010 um 20:39:23 Uhr
Goto Top
Moin LordCillin,

Vielen Dank schonmal für die Antworten!!
Okay, Bolle97 schein damit umgehen zu können.
Ich dagegen bin da etwas neugieriger.

Hat es geklappt? Hast du es ausprobiert? Hast du etwas Eleganteres? Hast es sich erledigt? Magst du einen Grünen Haken spendieren?

Bitte um Feedback.

Grüße
Biber