CREARE SINONIMO

Scopo

Utilizzare l’istruzioneCREATESYNONYM per creare un sinonimo, che è un nome alternativo per una tabella, vista, sequenza, procedura, funzione memorizzata, pacchetto, vista materializzata, oggetto schema classe Java, tipo di oggetto definito dall’utente o un altro sinonimo.

I sinonimi forniscono sia l’indipendenza dei dati che la trasparenza della posizione. I sinonimi consentono alle applicazioni di funzionare senza modifiche indipendentemente dall’utente che possiede la tabella o la vista e indipendentemente dal database che contiene la tabella o la vista. Tuttavia, i sinonimi non sostituiscono i privilegi sugli oggetti del database. I privilegi appropriati devono essere concessi a un utente prima che l’utente possa utilizzare il sinonimo.

È possibile consultare sinonimi nei seguenti istruzioni DML: SELECTINSERTUPDATEDELETEFLASHBACKTABLEEXPLAINPLAN e LOCKTABLE.

È possibile fare riferimento ai sinonimi nelle seguenti dichiarazioni DDL: AUDITNOAUDITGRANTREVOKE e COMMENT.

Vedi anche:

Oracle Database Concepts per informazioni generali sui sinonimi

Prerequisiti

Per creare un sinonimo privato nel proprio schema, è necessario disporre del privilegio di sistema CREATESYNONYM.

Per creare un sinonimo privato nello schema di un altro utente, è necessario disporre del privilegio di sistema CREATEANYSYNONYM.

Per creare un PUBLIC sinonimo, è necessario disporre del CREATEPUBLICSYNONYM privilegio di sistema.

Sintassi

create_synonym::=

Descrizione di create_synonym.gif segue

Descrizione dell’illustrazione create_synonym.gif

Semantica

O SOSTITUIRE

Specificare ORREPLACE per ricreare il sinonimo se già esiste. Utilizzare questa clausola per modificare la definizione di un sinonimo esistente senza prima rilasciarlo.

Restrizione sulla sostituzione di un sinonimo Non è possibile utilizzare la clausolaORREPLACE per un sinonimo di tipo che ha tabelle dipendenti o tipi di oggetto definiti dall’utente validi.

PUBLIC

SpecificarePUBLIC per creare un sinonimo pubblico. I sinonimi pubblici sono accessibili a tutti gli utenti. Tuttavia, ogni utente deve disporre di privilegi appropriati sull’oggetto sottostante per utilizzare il sinonimo.

Quando si risolvono i riferimenti a un oggetto, Oracle Database utilizza un sinonimo pubblico solo se l’oggetto non è preceduto da uno schema e non è seguito da un collegamento al database.

Se si omette questa clausola, il sinonimo è privato ed è accessibile solo all’interno del suo schema. Un nome sinonimo privato deve essere univoco nel suo schema.

Note sui sinonimi pubblici Le seguenti note si applicano ai sinonimi pubblici:

  • Se si crea un sinonimo pubblico e successivamente ha tabelle dipendenti o tipi di oggetto definiti dall’utente validi dipendenti, non è possibile creare un altro oggetto di database con lo stesso nome del sinonimo nello stesso schema degli oggetti dipendenti.

  • Fare attenzione a non creare un sinonimo pubblico con lo stesso nome di uno schema esistente. In tal caso, tutte le unità PL/SQL che utilizzano quel nome verranno invalidate.

schema

Specificare lo schema per contenere il sinonimo. Se si omette schema, Oracle Database crea il sinonimo nel proprio schema. Non è possibile specificare uno schema per il sinonimo se è stato specificato PUBLIC.

sinonimo

Specificare il nome del sinonimo da creare.

Nota:

è possibile creare e rilasciare sinonimi più lunghi di 30 byte. Tuttavia, a meno che non rappresentino un nome Java, non funzioneranno in nessun altro comando SQL. I nomi più lunghi di 30 byte vengono trasformati in una stringa più breve oscura per l’archiviazione nel dizionario dei dati.

Vedi anche:

“CREA SINONIMO: Esempi ” e ” Oracle Database Resolution of Synonyms: Example “

FOR Clause

Specificare l’oggetto per il quale viene creato il sinonimo. L’oggetto schema per il quale si sta creando il sinonimo può essere dei seguenti tipi:

  • Tabella o tabella oggetto

  • Vista o di un oggetto di visualizzazione

  • Sequenza

  • Stored procedure, function, o pacchetto

  • vista Materializzata

  • Java oggetto dello schema di classe

  • definito dall’Utente tipo di oggetto

  • Sinonimo

L’oggetto dello schema di bisogno, attualmente, non esiste e non è necessario avere i privilegi per l’accesso all’oggetto.

Restrizione sulla clausola FOR L’oggetto schema non può essere contenuto in un pacchetto.

schema Specificare lo schema in cui risiede l’oggetto. Se non si qualifica l’oggetto con schema, il database presuppone che l’oggetto schema sia nel proprio schema.

Se si sta creando un sinonimo per una procedura o una funzione su un database remoto, è necessario specificare schemain questa istruzione CREATE. In alternativa, è possibile creare un sinonimo pubblico locale nel database in cui risiede l’oggetto. Tuttavia, il collegamento al database deve essere incluso in tutte le chiamate successive alla procedura o alla funzione.

dblink È possibile specificare un collegamento al database completo o parziale per creare un sinonimo per un oggetto schema in un database remoto in cui si trova l’oggetto. Se si specifica dblinke si omette schema, il sinonimo si riferisce a un oggetto nello schema specificato dal collegamento al database. Oracle consiglia di specificare lo schema contenente l’oggetto nel database remoto.

Se si omette dblink, Oracle Database presuppone che l’oggetto si trovi nel database locale.

Restrizione sui collegamenti di database Non è possibile specificaredblink per un sinonimo di classe Java.

leggi Anche:

  • “, Riferendosi agli Oggetti in un Database Remoto” per ulteriori informazioni su di riferimento per i collegamenti ai database

  • CREATE DATABASE LINK per ulteriori informazioni sulla creazione di collegamenti a database

Esempi

CREARE SINONIMO di: Esempi Per definire il sinonimo offices per la tabella locations nello schema hr, eseguire l’istruzione seguente:

CREATE SYNONYM offices FOR hr.locations;

creare un PUBLIC sinonimo di employees tabella nello schema hr su remote database, è possibile eseguire l’istruzione seguente:

CREATE PUBLIC SYNONYM emp_table FOR [email protected];

Un sinonimo possono avere lo stesso nome dell’oggetto sottostante, a condizione che il sottostante oggetto è contenuto in un altro schema.

Oracle Database Risoluzione dei sinonimi: 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;

Se l’utente sh poi rilascia la seguente dichiarazione, quindi il database restituisce il numero di righe da sh.customers:

SELECT COUNT(*) FROM customers;

Per recuperare il numero di righe da oe.customers utente sh deve prefazione customers con il nome dello schema. (Anche l’utente sh deve avere l’autorizzazione select su oe.customers.)

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;

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *