cél
használja a CREATE
SYNONYM
nyilatkozatot, hogy hozzon létre egy szinonimát, amely alternatív név egy tábla, nézet, sorrend, eljárás, tárolt funkció, csomag, materializált nézet, Java osztály séma objektum, felhasználó által definiált objektum típusa, vagy más szinonimája.
A szinonimák mind az adatok függetlenségét, mind a hely átláthatóságát biztosítják. A szinonimák lehetővé teszik, hogy az alkalmazások módosítás nélkül működjenek, függetlenül attól, hogy melyik felhasználó birtokolja a táblát vagy a nézetet, függetlenül attól, hogy melyik adatbázis tartja a táblát vagy a nézetet. A szinonimák azonban nem helyettesítik az adatbázisobjektumokkal kapcsolatos jogosultságokat. Megfelelő jogosultságokat kell biztosítani a felhasználónak, mielőtt a felhasználó használhatja a szinonimát.
szinonimákra hivatkozhat a következő DML-nyilatkozatokban: SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
és LOCK
TABLE
.
szinonimákra hivatkozhat a következő DDL utasításokban: AUDIT
NOAUDIT
GRANT
REVOKE
és COMMENT
.
Lásd még:
Oracle Adatbázis Fogalmak általános információk a szinonimák
Előfeltételek
ahhoz, Hogy hozzon létre egy privát szinonimája a saját séma, meg kell, hogy a CREATE
SYNONYM
rendszer kiváltság.
egy másik felhasználó sémájának privát szinonimájának létrehozásához rendelkeznie kell a CREATE
ANY
SYNONYM
rendszer jogosultsággal.
PUBLIC
szinonimájának létrehozásához aCREATE
PUBLIC
SYNONYM
rendszer jogosultságokkal kell rendelkeznie.
Syntax
create_synonym::=
az illusztráció leírása create_synonym.gif
szemantika
vagy cserélje ki
adja meg a OR
REPLACE
a szinonimának újbóli létrehozásához, ha már létezik. Használja ezt a záradékot a meglévő szinonimák meghatározásának megváltoztatásához anélkül, hogy először eldobná.
A szinonimák cseréjének korlátozása nem használhatja a OR
REPLACE
záradékot egy olyan típusú szinonimához, amelynek függő táblázata vagy függő érvényes, felhasználó által definiált objektumtípusa van.
PUBLIC
adja meg a PUBLIC
nyilvános szinonimát. A nyilvános szinonimák minden felhasználó számára elérhetők. Azonban minden felhasználónak megfelelő jogosultságokkal kell rendelkeznie a mögöttes objektumon a szinonimák használatához.
az objektumra való hivatkozások feloldásakor az Oracle adatbázis csak akkor használ nyilvános szinonimát, ha az objektumot nem állítja elő séma, és nem követi az adatbázis-hivatkozás.
ha kihagyja ezt a záradékot, akkor a szinonimája privát, csak a sémáján belül érhető el. A magán szinonimanévnek egyedinek kell lennie a sémájában.
Megjegyzések a nyilvános szinonimákról a következő megjegyzések vonatkoznak a nyilvános szinonimákra:
-
ha nyilvános szinonimát hoz létre, majd függő táblákat vagy függő érvényes, felhasználó által definiált objektumtípusokat tartalmaz, akkor nem hozhat létre egy másik, azonos nevű adatbázisobjektumot, mint a szinonimát ugyanabban a sémában, mint a függő objektumok.
-
ügyeljen arra, hogy ne hozzon létre nyilvános szinonimát ugyanazzal a névvel, mint egy meglévő séma. Ha ezt megteszi, akkor az összes PL/SQL egység, amely ezt a nevet használja, érvénytelenné válik.
séma
adja meg a sémát, hogy tartalmazza a szinonimát. Ha kihagyja a schema
értéket, akkor az Oracle Database létrehozza a szinonimát a saját sémájában. Nem adhat meg sémát a szinonimához, ha megadta a PUBLIC
értéket.
szinonimája
adja meg a létrehozandó szinonimának nevét.
Megjegyzés:
30 bájtnál hosszabb Szinonimák hozhatók létre és ejthetők. Ha azonban nem jelentenek Java nevet, akkor nem fognak működni más SQL parancsban. A 30 bájtnál hosszabb nevek homályos, rövidebb karakterláncokká alakulnak át az adatszótár tárolásához.
Lásd még:
” szinonimák létrehozása: Példák ” és “Oracle Database Resolution of Synonyms: Example”
for Clause
adja meg azt az objektumot, amelyre a szinonimát létrehozták. A sémaobjektum, amelyhez a szinonimát hozza létre, a következő típusokból állhat:
-
a Táblázat vagy objektum, táblázat
-
Nézet vagy tárgy nézet
-
Szekvencia
-
Tárolt eljárás, függvény, vagy csomag
-
Materializált nézet
-
Java osztály séma objektum
-
a Felhasználó által definiált objektum típusa
-
Szinonimája
A séma tárgy kell, hogy jelenleg nem létezik, nem kell jogosultsága hozzáférni az objektumhoz.
A FOR záradék korlátozása a séma objektum nem tartalmazhat csomagot.
séma adja meg azt a sémát, amelyben az objektum található. Ha nem jogosult objektum schema
, akkor az adatbázis feltételezi, hogy a séma objektum a saját sémájában van.
Ha egy eljárás vagy funkció szinonimáját hozza létre egy távoli adatbázisban, akkor meg kell adnia a schema
értéket ebben a CREATE
nyilatkozatban. Alternatív megoldásként létrehozhat egy helyi nyilvános szinonimát az adatbázisban, ahol az objektum található. Az adatbázis-linket azonban fel kell venni az eljárás vagy funkció minden későbbi hívásába.
dblink megadhat egy teljes vagy részleges adatbázis-linket egy séma objektum szinonimájának létrehozásához egy távoli adatbázisban, ahol az objektum található. Ha a dblink
értéket adja meg, és kihagyja a schema
értéket, akkor a szinonimája az adatbázis link által megadott sémában lévő objektumra utal. Az Oracle azt javasolja, hogy adja meg az objektumot tartalmazó sémát a távoli adatbázisban.
ha kihagyja adblink
értéket, akkor az Oracle Database feltételezi, hogy az objektum a helyi adatbázisban található.
Adatbázishivatkozások korlátozása nem adhatja meg a dblink
értéket egy Java osztály szinonimájához.
Lásd még:
-
“Utaló Tárgyakat, a Távoli Adatbázisok” további információk utalva adatbázis linkek
-
ADATBÁZIS LÉTREHOZÁSA LINKRE további információk létrehozása adatbázis linkek
Példa
LÉTRE SZINONIMÁJA: Példák, Hogy adjuk meg a szinonimája offices
a táblázat locations
a séma hr
ki az alábbi nyilatkozatot:
CREATE SYNONYM offices FOR hr.locations;
PUBLIC
a employees
táblázat a sémában a remote
adatbázis, a következő nyilatkozatot adhatja ki:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
a szinonimának ugyanaz a neve lehet, mint az alapul szolgáló objektumnak, feltéve, hogy az alapul szolgáló objektum egy másik sémában található.
Oracle adatbázis felbontása Szinonimák: 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;
Ha a felhasználó sh
majd kérdések a következő nyilatkozatot, akkor az adatbázis visszatér a gróf a sort a sh.customers
:
SELECT COUNT(*) FROM customers;
letölteni a gróf a sort a oe.customers
, a felhasználó sh
kell előszó customers
a séma nevét. (A felhasználó sh
kell választani engedélyt oe.customers
is.)
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;