But
Utilisez l’instruction CREATE
SYNONYM
pour créer un synonyme, qui est un nom alternatif pour une table, une vue, une séquence, une procédure, une fonction stockée, un package, une vue matérialisée, un objet de schéma de classe Java, un type d’objet défini par l’utilisateur ou un autre synonyme.
Les synonymes assurent à la fois l’indépendance des données et la transparence de l’emplacement. Les synonymes permettent aux applications de fonctionner sans modification quel que soit l’utilisateur propriétaire de la table ou de la vue et quelle que soit la base de données contenant la table ou la vue. Cependant, les synonymes ne remplacent pas les privilèges sur les objets de base de données. Des privilèges appropriés doivent être accordés à un utilisateur avant que celui-ci puisse utiliser le synonyme.
Vous pouvez vous référer à des synonymes dans les instructions DML suivantes : SELECT
INSERT
UPDATE
DELETE
FLASHBACK
TABLE
EXPLAIN
PLAN
, et LOCK
TABLE
.
Vous pouvez faire référence à des synonymes dans les instructions DDL suivantes: AUDIT
NOAUDIT
GRANT
REVOKE
, et COMMENT
.
Voir aussi :
Concepts de base de données Oracle pour des informations générales sur les synonymes
Prérequis
Pour créer un synonyme privé dans votre propre schéma, vous devez disposer du privilège système CREATE
SYNONYM
.
Pour créer un synonyme privé dans le schéma d’un autre utilisateur, vous devez disposer du privilège système CREATE
ANY
SYNONYM
.
Pour créer un synonyme PUBLIC
, vous devez avoir le privilège système CREATE
PUBLIC
SYNONYM
.
Syntaxe
create_synonym::=
Description de l’illustration create_synonym.gif
Sémantique
OU REMPLACEZ
Spécifiez OR
REPLACE
pour recréer le synonyme s’il existe déjà. Utilisez cette clause pour modifier la définition d’un synonyme existant sans l’abandonner au préalable.
Restriction au remplacement d’un synonyme Vous ne pouvez pas utiliser la clause OR
REPLACE
pour un synonyme de type qui a des tables dépendantes ou des types d’objets définis par l’utilisateur valides dépendants.
PUBLIC
Spécifiez PUBLIC
pour créer un synonyme public. Les synonymes publics sont accessibles à tous les utilisateurs. Cependant, chaque utilisateur doit disposer des privilèges appropriés sur l’objet sous-jacent afin d’utiliser le synonyme.
Lors de la résolution de références à un objet, Oracle Database n’utilise un synonyme public que si l’objet n’est pas précédé d’un schéma et n’est pas suivi d’un lien de base de données.
Si vous omettez cette clause, le synonyme est privé et n’est accessible que dans son schéma. Un nom de synonyme privé doit être unique dans son schéma.
Notes sur les synonymes publics Les notes suivantes s’appliquent aux synonymes publics:
-
Si vous créez un synonyme public et qu’il a ensuite des tables dépendantes ou des types d’objets définis par l’utilisateur valides dépendants, vous ne pouvez pas créer un autre objet de base de données du même nom que le synonyme dans le même schéma que les objets dépendants.
-
Veillez à ne pas créer un synonyme public portant le même nom qu’un schéma existant. Si vous le faites, toutes les unités PL/SQL qui utilisent ce nom seront invalidées.
schéma
Spécifiez le schéma pour contenir le synonyme. Si vous omettez schema
, Oracle Database crée le synonyme dans votre propre schéma. Vous ne pouvez pas spécifier de schéma pour le synonyme si vous avez spécifié PUBLIC
.
synonyme
Spécifiez le nom du synonyme à créer.
Remarque :
Des synonymes de plus de 30 octets peuvent être créés et supprimés. Cependant, à moins qu’ils ne représentent un nom Java, ils ne fonctionneront dans aucune autre commande SQL. Les noms de plus de 30 octets sont transformés en une chaîne plus courte obscure pour le stockage dans le dictionnaire de données.
Voir aussi :
« CRÉER UN SYNONYME: Exemples » et « Résolution de la base de données Oracle des synonymes: Exemple »
POUR la clause
Spécifiez l’objet pour lequel le synonyme est créé. L’objet de schéma pour lequel vous créez le synonyme peut être des types suivants:
-
Table ou table d’objet
-
Vue ou vue d’objet
-
Séquence
-
Procédure stockée, fonction ou package
-
Vue matérialisée
-
Objet de schéma de classe Java
-
Type d’objet défini par l’utilisateur
-
Synonyme
L’objet de schéma n’a pas besoin d’exister actuellement et vous n’avez pas besoin de privilèges pour accéder à l’objet.
Restriction sur la clause FOR L’objet de schéma ne peut pas être contenu dans un package.
schéma Spécifiez le schéma dans lequel réside l’objet. Si vous ne qualifiez pas d’objet avec schema
, la base de données suppose que l’objet de schéma est dans votre propre schéma.
Si vous créez un synonyme pour une procédure ou une fonction sur une base de données distante, vous devez spécifier schema
dans cette instruction CREATE
. Vous pouvez également créer un synonyme public local sur la base de données où réside l’objet. Cependant, le lien de base de données doit ensuite être inclus dans tous les appels ultérieurs à la procédure ou à la fonction.
dblink Vous pouvez spécifier un lien de base de données complet ou partiel pour créer un synonyme pour un objet de schéma sur une base de données distante où se trouve l’objet. Si vous spécifiez dblink
et omettez schema
, le synonyme fait référence à un objet dans le schéma spécifié par le lien de la base de données. Oracle vous recommande de spécifier le schéma contenant l’objet dans la base de données distante.
Si vous omettez dblink
, Oracle Database suppose que l’objet se trouve sur la base de données locale.
Restriction sur les liens de base de données Vous ne pouvez pas spécifier dblink
pour un synonyme de classe Java.
Voir aussi :
-
« Référence à des objets dans des bases de données distantes » pour plus d’informations sur la référence aux liens de base de données
-
CRÉER un LIEN DE BASE DE DONNÉES pour plus d’informations sur la création de liens de base de données
Exemples
CRÉER UN SYNONYME: Exemples Pour définir le synonyme offices
div>pour la table locations
dans le schéma hr
, émettez l’instruction suivante:
CREATE SYNONYM offices FOR hr.locations;
Pour créer une PUBLIC
synonyme de la employees
table dans le schéma hr
sur la remote
base de données, vous pouvez émettre l’instruction suivante:
CREATE PUBLIC SYNONYM emp_table FOR [email protected];
Un synonyme peut avoir le même nom que l’objet sous-jacent, à condition que l’objet sous-jacent soit contenu dans un autre schéma.
Résolution de la base de données Oracle des synonymes: 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;
Si l’utilisateur sh
émet alors l’instruction suivante, la base de données renvoie le nombre de lignes de sh.customers
:
SELECT COUNT(*) FROM customers;
Pour récupérer le nombre de lignes de
SELECT COUNT(*) FROM customers;
les lignes de oe.customers
, l’utilisateur sh
doivent préfacer customers
avec le nom du schéma. (L’utilisateur sh
doit également disposer de l’autorisation select sur 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;