2016-07-19 24 views
0

Ich hatte ein Schema in einem Oracle DB als ui_prod. Ich habe meine DBA-Team-Jungs gebeten, genau das gleiche Schema wie ui_prod zu erstellen, aber nur lesend und nennen es ui_prod_readonly. Normalerweise benutze ich Oracle SQL Developer, um eine DB zu verbinden und direkt mit dem Tabellennamen wie unten beschrieben abzufragen.DBA readonly Konto

--Connect to ui_prod 
select * from table 

aber warum ich gebeten infront Besitzernamen zu setzen, wenn Abfrage für Nur-Lese-Schema sie für mich geschaffen, wie es ohne sie zu setzen, erhalte ich Fehlertabelle gibt es nicht.

--Connect to ui_prod_readonly 
select * from ui_prod.table 

Ich habe Projektdateien, die die SQL-Abfrage mit nur Tabellennamen und das Hinzufügen von Besitzernamen vor hart codieren wird viele Änderungen und Aufwand verursachen. Kann mir das jemand erklären? oder stelle mir irgendein Dokument/Link zum Lesen zur Verfügung. Danke

Antwort

1

Sie sollten in Synonyme suchen, anscheinend der Benutzer, den Sie mit der Datenbank verbinden, da nicht der Eigentümer der Objekte ist. Um das Objekt anzuzeigen, müssen Sie die Namen mit dem Schemanamen voranstellen (der Eigentümer des Objekts selbst).

http://www.techonthenet.com/oracle/synonyms.php

CREATE OR REPLACE SYNONYM ui_prod_readonly.synonym_name 
    FOR ui_prod.object_name 

Es scheint mir, dass Ihr DBAs haben einen anderen Satz von Tabellen nicht erstellt, sondern nur die vorhandenen Tabellen für den Benutzer ui_prod_readonly gewährt.

1

Wenn Sie sich bei Oracle einzuloggen, das aktuelle Schema ist der Name des Benutzers Login verwendet. Also, wenn Sie mit ui_prod_readonly Oracle melden Sie sich an prüft dass Schema für die Tabelle, wenn Sie es nicht qualifizieren mit der Besitzer (= Schema).

Wenn Sie das aktuelle Schema ändern möchten, so dass Sie in vollem Umfang die Tabellen nicht qualifizieren müssen, können Sie das tun mit ALTER SESSION

alter session set current_schema = ui_prod; 

Sobald Sie das getan haben, Sie brauchen nicht zu Qualifizieren Sie die Tabelle vollständig mit dem Eigentümer (= Schema).

1

wenn Sie ein Benutzer die Daten zu lesen, nur seiner einfachen neuen Benutzer erstellen und gewähren sie nur wählen Privileg

Sie Benutzer erstellen kann und gewähren wählen Privileg mit

CREATE USER [user] IDENTIFIED BY [your_password]; 
grant select on table to [user]