Frage

Ich benutze Oracle SQL Developer

Ich habe ein riesiges Skript, das Tabellen, Indizes, primäre Schlüsselbeschränkungen und dergleichen erstellt.

Mein DB -Name ist: dbo_other

Ich habe mich als sysdba in diesen dbo_other angemeldet.

Wenn ich mein Skript ausführe, werden die Tabellen nicht auf dem linken Bereich unter 'Tabellen' angezeigt

Wenn ich das Skript jedoch angehängt habe, indem ich 'DBO_OTER' hinzugefügt wird. Vor jedem Tischnamen werden die Tische angezeigt.

Dies ist sehr langweilig und zeitaufwändig.

Gibt es eine Möglichkeit, dies zu vermeiden? Warum werden sie nicht in DBO_OTHER angezeigt, ohne DBO_OTHER hinzuzufügen? Vor jedem Tischnamen? Wenn ich die Abfrage in der oberen rechten Ecke ausführe, hat der Dropdown DBO_OTHE ausgewählt !!

Ich kann sogar eine ausgewählte * aus der erstellten Tabelle machen (aber sehen Sie sie in der linken Seitenleiste nicht). Außerdem kann ich die Tabelle im PL/SQL -Entwickler sehen.

Warum möchte Oracle SQL Developer, dass ich es mit dbo_other erstelle.

Gibt es auch eine Möglichkeit, es für jede Tabelle hinzuzufügen? Vielleicht kann etwas über das Skript getan werden, sodass es auf alles wirksam wird, was folgt?

War es hilfreich?

Lösung

Warum melden Sie sich mit dem SysDBA -Konto in Ihrer Datenbank an? Dies ist sehr mächtig und ermöglicht es Ihnen, Ihre Datenbank schrecklich zu beschädigen, wenn Sie nicht wissen, was Sie tun. In einer Entwicklungsumgebung gibt es eine Grenze für den Schaden, den Sie anrichten können, aber es ist am besten, in gute Gewohnheiten zu geraten, bevor Sie Dinge in der Produktion tun.

Das Interessante an As SySDBA ist, dass es den Benutzernamen Teil des Login überschreibt: Wenn Ihr Betriebssystem -Benutzer die Berechtigungen hat, sind Sie in. Als SYS. Hör zu:

SQL> conn apc
Enter password:
Connected.
SQL> show user
USER is "APC"
SQL> conn apc as sysdba
Enter password:
Connected.
SQL> show user
USER is "SYS"
SQL>

Wenn Sie das Skript ausgeführt haben, haben Sie all diese Objekte im SYS -Schema erstellt. Das wird sich als massiver Schmerz im Nacken erweisen. Ich hoffe, Sie haben ein gleiches und entgegengesetztes Umkehrskript.

Um das Skript ordnungsgemäß auszuführen, müssen Sie lediglich eine Verbindung als dbo_other herstellen (normal - dh ohne sysdba oder sysoper, was doch die Standardeinstellung ist). Ihr Skript erstellt Tabellen im aktuellen Schema.

Wenn Sie Objekte in mehreren Schemata erstellen müssen, müssen Sie sich nicht erneut abmelden. Das Schema unterscheidet sich vom Benutzer und es ist möglich, das Schema durch Ausführung zu wechseln alter session set current schema = WHOEVR;. Dies ist ein ziemlich praktischer Trick und ich habe ihn vor einiger Zeit gebloggt. Finde mehr heraus.

Beachten Sie, dass Ihr Benutzer keine zusätzlichen Berechtigungen durch Ändern des aktuellen Schemas erhalten: Sie können nur das tun, was er derzeit kann. Für so etwas wie das Erstellen von Objekten in mehreren Schemas sollte der ausführende Benutzer ein Power -Benutzer sein, jemand, der Berechtigungen wie einen DBA (aber immer noch nicht sysdba) erstellt.

Andere Tipps

Ich bin gerade auf diesen kleinen Jem gestoßen, mit dem Sie standardmäßig Aktionen auf einem Schema/Benutzer ausführen können, für die Sie nicht als AS angemeldet sind. Das heißt, standardmäßig werden Ihre ausgewählten Aussagen usw. mit diesem neuen Schema statt Ihrer eigenen betrieben.

Alter Session set Current_schema =

Beispiel: ich + Tabelle1 + Tabelle2 Jemandelse + Supertable1 + Supertable2

log in as "Myself" 
select * from SuperTable1

Error: ORA-00942: table or view does not exist

alter session set current_schema = SomeoneElse 
select * from SuperTable1 <This will work.>

Der "Tabellen" -Baum auf dem linken Feld enthält nur Tabellen, den der angemeldete Benutzer im Oracle SQL-Entwickler besitzt. Wenn Ihr Skript Tabellen im Schema eines anderen Benutzers erstellt, müssen Sie auf die + neben "anderen Benutzern" klicken, den entsprechenden Benutzer finden und auf die + in den Tabellen klicken.

Wie andere gesagt haben, sollten Sie SysDBA nicht verwenden, es sei denn, Sie müssen es tun, und es klingt sehr ähnlich, wie Ihr Skript als normaler Benutzer basierend auf seiner groben Beschreibung ausgeführt werden soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top