SYNONYM Oracle : Alias d’Objets SQL Expliqué

Découvrez le SYNONYM Oracle : définition, syntaxe complète, exemples pratiques et erreurs courantes. Maîtrisez les alias d'objets SQL Oracle facilement.

Illustration du tutoriel SQL Oracle : SYNONYM Oracle : Alias d’Objets SQL Expliqué

SYNONYM Oracle : Créer et Gérer des Alias d’Objets SQL

Le SYNONYM Oracle est un objet de base de données permettant de créer un alias vers un autre objet SQL (table, vue, séquence, procédure, etc.). Indispensable dans les environnements multi-schémas d’entreprise, le SYNONYM Oracle simplifie l’accès aux objets distants, améliore la lisibilité du code et renforce l’abstraction entre les couches applicatives et la base de données.

Publicité

Définition et utilisation d’un SYNONYM Oracle

Un SYNONYM est littéralement un « nom alternatif » pointant vers un objet existant dans Oracle. Il ne contient aucune donnée propre : il ne fait que rediriger les requêtes SQL vers l’objet cible.

Pourquoi utiliser un SYNONYM ?

En entreprise, les bases de données Oracle sont souvent organisées en plusieurs schémas distincts (ex. : FINANCE, RH, VENTES). Sans synonymes, un développeur du schéma APP devrait systématiquement préfixer chaque objet avec le nom du schéma propriétaire :

SELECT * FROM RH.EMPLOYES;

Grâce à un synonyme, il peut simplement écrire :

SELECT * FROM EMPLOYES;

Les deux types de synonymes Oracle

  • PRIVATE SYNONYM : visible uniquement par l’utilisateur qui l’a créé (ou les utilisateurs auxquels il a accordé des droits).
  • PUBLIC SYNONYM : visible par tous les utilisateurs de la base de données. Nécessite le privilège CREATE PUBLIC SYNONYM.

Cas d’usage typiques en entreprise

  • Masquer le nom réel du schéma propriétaire d’un objet.
  • Simplifier l’accès à des objets via un Database Link (lien vers une base distante).
  • Faciliter la migration ou le renommage d’objets sans modifier le code applicatif.
  • Centraliser l’accès aux objets partagés entre plusieurs applications.

Syntaxe du SYNONYM Oracle

Créer un synonyme

CREATE [OR REPLACE] [PUBLIC] SYNONYM [schéma.]nom_synonyme
FOR [schéma.]nom_objet[@nom_db_link];

Explication des paramètres essentiels

ParamètreDescription
OR REPLACERecrée le synonyme s’il existe déjà, sans erreur. Utile en développement.
PUBLICRend le synonyme accessible à tous les utilisateurs de la base.
[schéma.]nom_synonymeNom du synonyme à créer, optionnellement préfixé du schéma cible.
FOR [schéma.]nom_objetObjet Oracle cible (table, vue, séquence, fonction, procédure, package…).
@nom_db_linkOptionnel. Permet de pointer vers un objet situé sur une base de données distante via un Database Link.

Supprimer un synonyme

DROP [PUBLIC] SYNONYM [schéma.]nom_synonyme;

⚠️ La suppression d’un synonyme ne supprime pas l’objet cible.

Publicité

Exemples pratiques de SYNONYM Oracle

Exemple 1 – Synonyme privé pour simplifier l’accès inter-schémas

Contexte métier : L’application de facturation utilise le schéma APP_FACT. Elle doit accéder à la table CLIENTS appartenant au schéma CRM. Pour éviter de préfixer chaque requête, on crée un synonyme privé dans APP_FACT.

-- Connexion en tant que APP_FACT
-- Création d'un synonyme privé pointant vers la table CLIENTS du schéma CRM
CREATE OR REPLACE SYNONYM clients
FOR CRM.CLIENTS;

-- Utilisation du synonyme : la requête est simplifiée
SELECT client_id, nom, email
FROM clients
WHERE statut = 'ACTIF';

-- Sans synonyme, la requête aurait nécessité :
-- SELECT client_id, nom, email FROM CRM.CLIENTS WHERE statut = 'ACTIF';

Résultat : Le code applicatif ne dépend plus du nom du schéma propriétaire. Si la table CLIENTS est déplacée vers un autre schéma, il suffit de mettre à jour le synonyme sans toucher au code.

Exemple 2 – Synonyme public pour un accès partagé à une procédure stockée

Contexte métier : Le schéma DBA_TOOLS héberge une procédure GENERER_RAPPORT utilisée par toutes les équipes. Plutôt que d’accorder des droits sur le schéma complet, l’administrateur crée un synonyme public.

-- Connexion en tant que DBA ou utilisateur avec CREATE PUBLIC SYNONYM
-- Création du synonyme public pour la procédure stockée
CREATE OR REPLACE PUBLIC SYNONYM generer_rapport
FOR DBA_TOOLS.GENERER_RAPPORT;

-- Tout utilisateur de la base peut maintenant appeler la procédure directement
BEGIN
  generer_rapport(
    p_type    => 'MENSUEL',
    p_annee   => 2024,
    p_mois    => 10
  );
END;
/

-- Suppression du synonyme public si nécessaire
DROP PUBLIC SYNONYM generer_rapport;

Résultat : Les équipes métier appellent la procédure sans connaître ni le schéma propriétaire, ni la structure interne de la base.

Erreurs courantes avec les SYNONYM Oracle

Erreur ORA-01434 : « synonym does not exist » ou ORA-00980 : « synonym translation is no longer valid »

Description : Ces erreurs surviennent lorsqu’un synonyme pointe vers un objet qui a été supprimé, renommé ou déplacé. Oracle crée les synonymes sans vérifier l’existence de l’objet cible au moment de la création (late binding). Un synonyme peut donc être créé avec succès même si l’objet n’existe pas encore — ou ne existe plus.

Exemple de situation problématique :

-- Création d'un synonyme vers une table inexistante : Oracle accepte sans erreur !
CREATE SYNONYM syn_commandes FOR VENTES.COMMANDES;

-- À l'utilisation, Oracle retourne :
-- ORA-00980: synonym translation is no longer valid
SELECT * FROM syn_commandes;

Solution : Vérifier l’état des synonymes avec la vue DBA_SYNONYMS ou USER_SYNONYMS, et s’assurer que l’objet cible existe et est accessible :

-- Vérifier les synonymes de l'utilisateur courant
SELECT synonym_name, table_owner, table_name, db_link
FROM user_synonyms
ORDER BY synonym_name;

-- Vérifier si l'objet cible existe dans le schéma VENTES
SELECT object_name, object_type, status
FROM dba_objects
WHERE owner = 'VENTES'
  AND object_name = 'COMMANDES';

Résumé

Point cléDétail
Objet OracleSYNONYM = alias vers un objet existant
TypesPRIVATE (utilisateur) / PUBLIC (toute la base)
Objets supportésTables, vues, séquences, procédures, fonctions, packages, Database Links
CréationCREATE [OR REPLACE] [PUBLIC] SYNONYM … FOR …
SuppressionDROP [PUBLIC] SYNONYM …
Vues systèmeUSER_SYNONYMS, ALL_SYNONYMS, DBA_SYNONYMS
BindingLate binding : Oracle ne valide pas l’existence de l’objet cible à la création
Erreur fréquenteORA-00980 si l’objet cible est supprimé ou renommé

2 bonnes pratiques Oracle à retenir

  1. Préférez les synonymes privés aux synonymes publics dans les environnements de production. Les synonymes publics sont visibles par tous les utilisateurs, ce qui peut créer des ambiguïtés ou des failles de sécurité si leur gestion n’est pas rigoureuse. Réservez PUBLIC SYNONYM aux objets véritablement partagés à l’échelle de toute la base.
  2. Utilisez toujours CREATE OR REPLACE SYNONYM dans vos scripts de déploiement plutôt que CREATE SYNONYM seul. Cette approche idempotente évite les erreurs en cas de redéploiement et simplifie la maintenance des scripts en intégration continue.

Aller plus loin

Pour approfondir vos connaissances sur les objets Oracle et optimiser votre architecture de base de données, consultez également ces sujets complémentaires :

Publicité

Laisser un commentaire

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

Publicité