lundi 17 septembre 2012

Changer de schéma par défaut sous Oracle

Il existe deux méthodes d'accès aux tables dans une requête SQL :

  • sans préfixe : “select * from table” : pour les tables du schéma de l'utilisateur
  • avec préfixe : “select * from autre_schema.table” : pour les tables d'un autre schéma (sur lequel l'utilisateur dispose des bons droits)

Lors de chaque connexion à une base de données Oracle, un utilisateur est donc affecté au schéma qui porte le même nom que son identifiant de connexion. Les accès aux tables sans préfixes (“from table”) sont alors effectués dans ce schéma par défaut.

Description du processus coté Oracle :

  • Connexion avec l'utilisateur TOTO
  • Affectation du schéma TOTO comme “current_schema” de la session
  • Réception d'une requpete “select * from table” qui est transformée en “select * from TOTO.table”

Problème : si on se connecte avec l'utilisateur “system”, et que l'on souhaite faire une requête sur les données de TOTO, on doit ajouter le préfixe correspondant au schéma devant chaque accès aux tables. Ceci peut s'avérer très long et risqué sur des requêtes complexes.

Solution : il est possible changer, pour la session courante, de “current_schema”. Après la connexion, il suffit d'exécuter la requête
alter session set current_schema=<IDENTIFIANT_DU_SCHEMA_CIBLE>
pour que les accès sans préfixes soient fait sur le schéma <IDENTIFIANT_DU_SCHEMA_CIBLE>.

Merci à Drazzib pour l'astuce.

Aucun commentaire:

Enregistrer un commentaire