CREATE SYNONYM

But

Utilisez l’instruction CREATESYNONYM 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 : SELECTINSERTUPDATEDELETEFLASHBACKTABLEEXPLAINPLAN, et LOCKTABLE.

Vous pouvez faire référence à des synonymes dans les instructions DDL suivantes: AUDITNOAUDITGRANTREVOKE, 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 CREATESYNONYM.

Pour créer un synonyme privé dans le schéma d’un autre utilisateur, vous devez disposer du privilège système CREATEANYSYNONYM.

Pour créer un synonyme PUBLIC, vous devez avoir le privilège système CREATEPUBLICSYNONYM.

Syntaxe

create_synonym::=

Description de create_synonym.gif suit

Description de l’illustration create_synonym.gif

Sémantique

OU REMPLACEZ

Spécifiez ORREPLACE 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 ORREPLACE 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 remotebase 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;

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *