Announcement

Collapse
No announcement yet.

Oracle - Wie Datenbanknamen-Alias weglassen?

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

  • Oracle - Wie Datenbanknamen-Alias weglassen?

    Hallo zusammen

    Wie ist es möglich, dass ich in einer SQL-Abfrage nicht bei jeder Tabelle noch den Datenbankname vorne dran schreiben muss?

    z.B muss ich meine Abfrgaen immer so schreiben, damit kein Fehler auftritt:
    Code:
    select mi.name, ad.* 
    from FIRMENNAME.mitarbeiter mi
    join FIRMENNAME.adressen ad on mi.mid = ad.mid
    Wäre super wenn ich 'FIRMENNAME' weggelassen könnte.

    Ich habe eh nur eine Datenbank zur Verfügung.

    Danke und Gruss
    Rambodieschen

  • #2
    Hallo,

    Es ist nicht der Datenbankname, sondern das Schema. Wenn du dich als User FIRMENNAME anmeldest, musst du dies nicht voranstellen


    Grüsse

    Comment


    • #3
      Danke für die schnelle Antwort.
      Aha ich bin als Login 'Report' drin der nur lesen kann auf der Datenbank.

      Comment


      • #4
        Originally posted by rambodieschen View Post
        Danke für die schnelle Antwort.
        Aha ich bin als Login 'Report' drin der nur lesen kann auf der Datenbank.
        Eben. Evtl kannst du beim Login als "Report" ein

        Code:
        alter session set current_schema=FIRMENNAME
        /
        absetzten. Anschliessend muss du auch nicht mehr voll qualifizieren



        Grüsse

        Comment


        • #5
          Wow danke vielmal. genau dies war es. Funktioniert bei mir einwandfrei.
          Jetzt müsste man es nur noch ins tnsnames.ora platzieren können. :-)

          Comment


          • #6
            Wenn du die Rechte hast, kannst du auch ein Synonym erzeugen:
            [highlight=sql]CREATE OR REPLACE SYNONYM mitarbeiter FOR FIRMENNAME.mitarbeiter;[/highlight]

            Einfach mal testen.

            Gruss

            Comment


            • #7
              Originally posted by rambodieschen View Post
              Wow danke vielmal. genau dies war es. Funktioniert bei mir einwandfrei.
              Jetzt müsste man es nur noch ins tnsnames.ora platzieren können. :-)
              Du kannst es als LOGON TRIGGER definieren.

              Code:
              CREATE OR REPLACE TRIGGER system.logon_check
                AFTER LOGON ON DATABASE
              BEGIN
              if user = 'REPORT' then
                  EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema='FIRMENNAME';
              END IF;
              END;
              /


              Gruss

              Comment


              • #8
                Mal ein ganz anderer Vorschlag:

                Die Objekte, die reported werden sollen und können, wrappst Du durch Views im Schema Report. (Hier natürlich mit Schemaangabe auf Fremdschema)
                Von da an kann der User Report direkt "seine" Objekte abfragen.
                Synonyme, Trigger sind da eigentlich nur Krücken.
                Die Views sind natürlich etwas Aufwand verglichen mit einem Trigger oder so, kann man aber auch generieren.

                Du hast damit eine saubere Schnittstelle und erhöhst mit Sicherheit die Robustheit des Systems.
                Gruß, defo

                Comment


                • #9
                  Originally posted by defo View Post
                  Mal ein ganz anderer Vorschlag:

                  ...
                  Du hast damit eine saubere Schnittstelle und erhöhst mit Sicherheit die Robustheit des Systems.

                  Allerdings ziehst du in deinem System eine 2. Schicht ein :

                  - Du musst dies Warten
                  - Du musst dies Deployen
                  - Du musst dies Dokumentieren

                  Ich selbst mag den Trigger auch nicht (Ich mag *gar* keine Trigger :-)), wir verwenden dies auch nicht so. Das current_Schema wird bei uns im Weblogic 1 mal konfiguriert. Der Proxy User bekommt nur die Execute auf Packages gegranted, deswegen ist der Verwaltungs- und Konfig Aufwand klein

                  Gruss

                  Comment


                  • #10
                    Hmm okay. Ich habe leider nur Leserechte. Und in einem so grossen System wie das unsrige möchte ich wenn möglichst nichts abändern. Thanks trotzdem!!
                    Ich bin momentan eine automatische Möglichkeit im SQL Developer zu suchen. Dies würde mir vollkommen ausreichen.

                    Comment

                    Working...
                    X