Zweck
Verwenden Sie die Anweisung CREATE
SYNONYM
, um ein Synonym zu erstellen, das ein alternativer Name für eine Tabelle, eine Ansicht, eine Sequenz, eine Prozedur, eine gespeicherte Funktion, ein Paket, eine materialisierte Ansicht, ein Java-Klassenschemaobjekt, einen benutzerdefinierten Objekttyp oder ein anderes Synonym ist.
Synonyme bieten sowohl Datenunabhängigkeit als auch Standorttransparenz. Synonyme ermöglichen es Anwendungen, ohne Änderungen zu funktionieren, unabhängig davon, welchem Benutzer die Tabelle oder Ansicht gehört und welche Datenbank die Tabelle oder Ansicht enthält. Synonyme sind jedoch kein Ersatz für Berechtigungen für Datenbankobjekte. Einem Benutzer müssen entsprechende Berechtigungen erteilt werden, bevor er das Synonym verwenden kann.
Sie können in den folgenden DML-Anweisungen auf Synonyme verweisen: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
und LOCK
TABLE
.
Sie können in den folgenden DDL-Anweisungen auf Synonyme verweisen: AUDIT
NOAUDIT
GRANT
REVOKE
und COMMENT
.
Siehe auch:
Oracle Database Concepts für allgemeine Informationen zu Synonymen
Voraussetzungen
Um ein privates Synonym in Ihrem eigenen Schema zu erstellen, müssen Sie über das CREATE
SYNONYM
Systemprivileg verfügen.
Um ein privates Synonym im Schema eines anderen Benutzers zu erstellen, benötigen Sie das CREATE
ANY
SYNONYM
Systemprivileg.
Um ein PUBLIC
Synonym zu erstellen, müssen Sie das CREATE
PUBLIC
SYNONYM
Systemprivileg haben.
Syntax
create_synonym::=
Beschreibung der Abbildung create_synonym.gif
Semantik
ODER ERSETZEN
Geben Sie OR
REPLACE
an, um das Synonym neu zu erstellen, falls es bereits vorhanden ist. Verwenden Sie diese Klausel, um die Definition eines vorhandenen Synonyms zu ändern, ohne es vorher zu löschen.
Einschränkung beim Ersetzen eines Synonyms Sie können die OR
REPLACE
-Klausel nicht für ein Typsynonym verwenden, das abhängige Tabellen oder abhängige gültige benutzerdefinierte Objekttypen enthält.
PUBLIC
Geben Sie PUBLIC
an, um ein öffentliches Synonym zu erstellen. Öffentliche Synonyme sind für alle Benutzer zugänglich. Jeder Benutzer muss jedoch über entsprechende Berechtigungen für das zugrunde liegende Objekt verfügen, um das Synonym verwenden zu können.
Beim Auflösen von Verweisen auf ein Objekt verwendet Oracle Database nur dann ein öffentliches Synonym, wenn dem Objekt kein Schema vorangestellt ist und keine Datenbankverknüpfung folgt.
Wenn Sie diese Klausel weglassen, ist das Synonym privat und kann nur innerhalb seines Schemas aufgerufen werden. Ein privater Synonym-Name muss in seinem Schema eindeutig sein.
Hinweise zu öffentlichen Synonymen Die folgenden Hinweise gelten für öffentliche Synonyme:
-
Wenn Sie ein öffentliches Synonym erstellen und es anschließend abhängige Tabellen oder abhängige gültige benutzerdefinierte Objekttypen enthält, können Sie kein anderes Datenbankobjekt mit demselben Namen wie das Synonym im selben Schema wie die abhängigen Objekte erstellen.
-
Achten Sie darauf, kein öffentliches Synonym mit demselben Namen wie ein vorhandenes Schema zu erstellen. Wenn Sie dies tun, werden alle PL / SQL-Units, die diesen Namen verwenden, ungültig.
schema
Geben Sie das Schema an, das das Synonym enthalten soll. Wenn Sie schema
weglassen, erstellt Oracle Database das Synonym in Ihrem eigenen Schema. Sie können kein Schema für das Synonym angeben, wenn Sie PUBLIC
angegeben haben.
synonym
Geben Sie den Namen des zu erstellenden Synonyms an.
Hinweis:
Synonyme, die länger als 30 Byte sind, können erstellt und gelöscht werden. Sofern sie jedoch keinen Java-Namen darstellen, funktionieren sie in keinem anderen SQL-Befehl. Namen, die länger als 30 Byte sind, werden zur Speicherung im Datenwörterbuch in eine obskure kürzere Zeichenfolge umgewandelt.
Siehe auch:
„SYNONYM ERSTELLEN: Beispiele“ und „Oracle Database Resolution of Synonyms: Example“
FOR Klausel
Geben Sie das Objekt an, für das das Synonym erstellt wird. Das Schemaobjekt, für das Sie das Synonym erstellen, kann von folgenden Typen sein:
-
Tabelle oder Objekttabelle
-
Ansicht oder Objektansicht
-
Sequenz
-
Gespeicherte Prozedur, Funktion oder Paket
-
Materialisierte Ansicht
-
Java-Klassenschemaobjekt
-
Benutzerdefinierter Objekttyp
-
Synonym
Das Schemaobjekt muss derzeit nicht vorhanden sein und Sie müssen keine Berechtigungen für den Zugriff auf das Objekt haben.
Einschränkung der FOR-Klausel Das Schemaobjekt darf nicht in einem Paket enthalten sein.
schema Geben Sie das Schema an, in dem sich das Objekt befindet. Wenn Sie das Objekt nicht mit schema
qualifizieren, geht die Datenbank davon aus, dass sich das Schemaobjekt in Ihrem eigenen Schema befindet.
Wenn Sie ein Synonym für eine Prozedur oder Funktion in einer entfernten Datenbank erstellen, müssen Sie schema
in dieser CREATE
-Anweisung angeben. Alternativ können Sie ein lokales öffentliches Synonym in der Datenbank erstellen, in der sich das Objekt befindet. Die Datenbankverbindung muss dann jedoch in allen nachfolgenden Aufrufen der Prozedur oder Funktion enthalten sein.
dblink Sie können eine vollständige oder teilweise Datenbankverknüpfung angeben, um ein Synonym für ein Schemaobjekt in einer entfernten Datenbank zu erstellen, in der sich das Objekt befindet. Wenn Sie dblink
angeben und schema
weglassen, bezieht sich das Synonym auf ein Objekt in dem Schema, das durch den Datenbanklink angegeben wurde. Oracle empfiehlt, dass Sie das Schema angeben, das das Objekt in der entfernten Datenbank enthält.
Wenn Sie dblink
weglassen, geht Oracle Database davon aus, dass sich das Objekt in der lokalen Datenbank befindet.
Einschränkung für Datenbanklinks Sie können dblink
für ein Java-Klassensynonym nicht angeben.
Siehe auch:
-
„Verweisen auf Objekte in entfernten Datenbanken“ für weitere Informationen zum Verweisen auf Datenbankverknüpfungen
-
DATENBANKVERKNÜPFUNG ERSTELLEN für weitere Informationen zum Erstellen von Datenbankverknüpfungen
Beispiele
SYNONYM ERSTELLEN: Beispiele zum Definieren des Synonyms offices
tabelle locations
Geben Sie im Schema hr
die folgende Anweisung aus:
CREATE SYNONYM offices FOR hr.locations;
Um ein PUBLIC
Synonym für die employees
-Tabelle in der Schema hr
in der remote
-Datenbank zu erstellen, können Sie geben Sie die folgende Anweisung aus:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
Ein Synonym kann denselben Namen wie das zugrunde liegende Objekt haben, vorausgesetzt, das zugrunde liegende Objekt ist in einem anderen Schema enthalten.
Oracle Datenbank Auflösung von Synonymen: Example Oracle Database attempts to resolve references to objects at the schema level before resolving them at the PUBLIC
synonym level. For example, the schemas oe
and sh
both contain tables named customers
. In the next example, user SYSTEM
creates a PUBLIC
synonym named customers
for oe.customers
:
CREATE PUBLIC SYNONYM customers FOR oe.customers;
Wenn der Benutzer sh
dann die folgende Anweisung ausgibt, gibt die Datenbank die Anzahl der Zeilen von sh.customers
zurück:
SELECT COUNT(*) FROM customers;
Um die Anzahl der Zeilen von oe.customers
, der Benutzer sh
muss customers
mit dem Schemanamen voranstellen. (Der Benutzer sh
muss auch die select-Berechtigung für oe.customers
haben.)
SELECT COUNT(*) FROM oe.customers;
If the user hr
’s schema does not contain an object named customers
, and if hr
has select permission on oe.customers
, then hr
can access the customers
table in oe
’s schema by using the public synonym customers
:
SELECT COUNT(*) FROM customers;