Announcement

Collapse
No announcement yet.

Oracle - Rechtevergabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oracle - Rechtevergabe

    Hallo,

    ich habe gerade einen User in einer Oracle 9i DB angelegt und möchte nun diesem User ein paar Rechte vergeben. Z.B. der User soll einen Trigger erstellen können.

    Meine Frage: gibts einen Unterschied zw.:

    PHP Code:
    GRANT CREATE TRIGGER TO "USER"
    und

    PHP Code:
    GRANT CREATE ANY TRIGGER TO "USER"
    Danke für eure Hilfe.

    F.

  • #2
    Ja den gibt es. CREATE ANY bedeutet immer, dass der user die Aktion auch in anderen Schemen durchführen kann.

    Wenn Du direkt einen GRANT RESOUCE vergiebst sollte aber auch das Recht Trigger anzulegen vorhanden sein wenn ich mich recht erinnere.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      das Schlüsselwort ANY gibt an das der User da Privileg nicht nur in seinem Schema hat, sondern dieses für alle gilt.

      Comment


      • #4
        Hallo Dimitri,

        danke für die schnelle Antwort.

        Kannst du mir viell. auch verraten, wie ich die Rechte modifizieren kann. Ich will das ANY zurücknehmen.

        Danke und Gruß

        F.

        Comment


        • #5
          Hallo,

          ich hab's jetzt so gelöst:

          1- Grant entfernen:
          REVOKE CREATE ANY TABLE FROM "USER";

          2- Grant erneut vergeben:
          GRANT CREATE TABLE TO "USER";

          Nicht grad die eleganteste Variante, erfüllt aber den Zweck.

          Grüße

          F.

          Comment


          • #6
            Nicht grad die eleganteste Variante, erfüllt aber den Zweck.
            Es ist auch die einzige Methode ;-)

            Aber wie gesagt: Wenn Du nicht ganz differenziert nur bestimmte CREATE Rechte vergeben willst, dann grante einfach resource an den User.

            Dim
            Zitat Tom Kyte:
            I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

            Comment


            • #7
              Hallo Dim,

              da wir grad beim Thema sind:

              der Hintergrund meiner Frage war, dass ich dem User ermöglichen will, einen Trigger zu erstellen, der bei jedem Login das Datenformat anpasst:

              PHP Code:
              create or replace trigger modify_date_format 
              after logon on USER
              .SCHEMA
              begin
                  execute immediate 
              "alter session set NLS_DATE_FORMAT = 'DD.MM.YYYY'";
              end
              Ich hab mich schlau gemacht und herausgefunden, dass es sich hier um einen DB-Trigger handelt, dessen Ausführung voraussetzt, dass der Parameter _system_trig_enabled auf true eingestellt sein soll.

              Wie kann ich das bloß machen???

              Für einen Tipp wäre ich dankbar.

              Grüße

              F.

              Comment


              • #8
                Hi,

                wenn Du eine init.ora verwendest, dann trag es dort einfach ein. Andernfalls so:

                Code:
                alter system set "_system_trig_enabled"=true scope=spfile;
                Welches Du verwendest, kannst in SQL+ herausfinden:
                Code:
                show parameter pfile
                Dein Logontrigger hat noch ein paar Fehler:

                Code:
                CREATE OR REPLACE TRIGGER MODIFY_DATE_FORMAT
                AFTER LOGON ON DATABASE
                BEGIN
                    IF USER='DEIN_USER' THEN
                      EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD.MM.YYYY'' ';
                    END IF;
                END;
                Bedenke ausserdem, dass das Datum in Oracle auch die Uhrzeit berücksichtigt. Standardmäßig würde damit der Zeitanteil eines DATE oder TIMESTAMP Feldes nicht mehr angezeigt werden.

                Dim
                Zitat Tom Kyte:
                I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                Comment

                Working...
                X