ALTER SESSION Oracle : modifier sa session SQL facilement

Découvrez comment utiliser ALTER SESSION en Oracle SQL : syntaxe, exemples pratiques, erreurs courantes et bonnes pratiques pour configurer votre session.

Illustration du tutoriel SQL Oracle : ALTER SESSION Oracle : modifier sa session SQL facilement

null

Publicité

ALTER SESSION Oracle : tout savoir pour configurer sa session SQL

La commande ALTER SESSION est l’une des instructions Oracle les plus utiles pour tout développeur ou DBA souhaitant personnaliser le comportement de sa session courante. Elle permet de modifier dynamiquement des paramètres d’initialisation, d’activer des options de débogage ou de changer le format des données sans toucher à la configuration globale du serveur. Maîtriser ALTER SESSION est indispensable pour travailler efficacement dans un environnement Oracle professionnel.

🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.

Définition et utilisation d’ALTER SESSION

La commande ALTER SESSION est une instruction DDL (Data Definition Language) propre à Oracle Database. Elle permet à un utilisateur connecté de modifier des paramètres de configuration uniquement pour sa session active, sans affecter les autres utilisateurs ni la configuration globale de l’instance Oracle.

Contrairement à ALTER SYSTEM, qui modifie les paramètres au niveau de l’instance entière et nécessite des privilèges élevés, ALTER SESSION agit dans le périmètre strict de la connexion en cours. Les modifications prennent effet immédiatement et disparaissent automatiquement à la déconnexion.

Cas d’usage en entreprise

  • Formatage des dates : ajuster le format d’affichage des dates (NLS_DATE_FORMAT) pour correspondre aux conventions locales d’un pays ou d’une application métier.
  • Débogage de performances : activer des traces SQL avec SQL_TRACE pour analyser les requêtes lentes sur un environnement de production.
  • Optimisation de l’optimiseur : forcer l’utilisation d’un mode d’optimisation spécifique (OPTIMIZER_MODE) pour tester des stratégies d’exécution.
  • Gestion linguistique : modifier la langue de la session (NLS_LANGUAGE) dans les applications multilingues pour que les messages d’erreur et les données soient retournés dans la bonne langue.
  • Fuseaux horaires : changer le fuseau horaire d’une session pour des calculs impliquant des colonnes TIMESTAMP WITH TIME ZONE.

Syntaxe complète d’ALTER SESSION

La syntaxe de base de la commande ALTER SESSION est la suivante :

ALTER SESSION SET paramètre = valeur;

Il existe également des formes étendues selon le paramètre à modifier :

-- Forme générale
ALTER SESSION SET nom_paramètre = 'valeur';

-- Activation d'une option booléenne
ALTER SESSION SET SQL_TRACE = TRUE;

-- Modification de paramètres NLS
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY';

-- Changement du fuseau horaire
ALTER SESSION SET TIME_ZONE = 'Europe/Paris';

-- Forcer un hint au niveau session
ALTER SESSION SET OPTIMIZER_MODE = ALL_ROWS;

Paramètres essentiels

ParamètreDescriptionExemple de valeur
NLS_DATE_FORMATFormat d’affichage des dates'DD/MM/YYYY HH24:MI:SS'
NLS_LANGUAGELangue de la session Oracle'FRENCH'
NLS_TERRITORYTerritoire (monnaie, séparateurs…)'FRANCE'
NLS_NUMERIC_CHARACTERSSéparateurs décimal et milliers',.'
SQL_TRACEActivation de la trace SQLTRUE / FALSE
OPTIMIZER_MODEStratégie de l’optimiseur de requêtesALL_ROWS / FIRST_ROWS
TIME_ZONEFuseau horaire de la session'Europe/Paris'
CURRENT_SCHEMASchéma par défaut pour la session'NOM_SCHEMA'

Exemples pratiques d’ALTER SESSION

Exemple 1 – Gestion du format de date pour une application RH

Dans une application de gestion des ressources humaines, les dates de naissance et d’embauche doivent être affichées au format français. Sans configuration explicite, Oracle retourne par défaut un format comme 01-JAN-24, peu lisible pour les utilisateurs.

-- Définir le format de date en français pour la session courante
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY';

-- Définir la langue en français pour les messages et les mois
ALTER SESSION SET NLS_LANGUAGE = 'FRENCH';

-- Définir le territoire France (séparateurs, monnaie, etc.)
ALTER SESSION SET NLS_TERRITORY = 'FRANCE';

-- Vérification : la date s'affiche maintenant au format français
SELECT 
    employe_nom,
    date_embauche,
    TO_CHAR(date_naissance, 'DD Month YYYY') AS date_naissance_fr
FROM employes
WHERE departement_id = 10;

-- Résultat attendu :
-- DUPONT   | 15/03/2019 | 22 Janvier 1985

Contexte métier : Cette configuration est typiquement placée en début de script ou dans une procédure d’initialisation de session pour garantir une cohérence d’affichage tout au long de la connexion, sans impacter les autres utilisateurs connectés simultanément.

Exemple 2 – Débogage de performances avec SQL_TRACE et changement de schéma

Un développeur junior doit analyser pourquoi une requête de facturation est particulièrement lente en fin de mois. Il active la trace SQL pour générer un fichier exploitable avec l’outil TKPROF.

-- Changer le schéma courant pour accéder aux objets de facturation
-- sans préfixer chaque table avec le nom du schéma
ALTER SESSION SET CURRENT_SCHEMA = FACTURATION;

-- Activer la trace SQL pour capturer toutes les requêtes exécutées
ALTER SESSION SET SQL_TRACE = TRUE;

-- Augmenter le niveau de trace pour inclure les statistiques d'attente
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';

-- Exécuter la requête problématique à analyser
SELECT 
    f.facture_id,
    f.montant_total,
    c.client_nom,
    f.date_facture
FROM factures f
JOIN clients c ON f.client_id = c.client_id
WHERE f.date_facture >= TRUNC(SYSDATE, 'MM')
ORDER BY f.montant_total DESC;

-- Désactiver la trace après l'analyse
ALTER SESSION SET SQL_TRACE = FALSE;

-- Note : le fichier de trace se trouve dans le répertoire USER_DUMP_DEST
-- Utiliser TKPROF pour l'analyser : tkprof fichier.trc rapport.txt

Contexte métier : Cette approche est standard dans les équipes de DBA pour diagnostiquer des problèmes de performance sans interrompre le service. La trace est strictement limitée à la session du développeur, sans impact sur les autres connexions.

Publicité

Erreurs courantes avec ALTER SESSION

Erreur : ORA-02248 – Option non valide pour ALTER SESSION

Cette erreur survient lorsqu’on tente de modifier un paramètre qui ne peut pas être changé au niveau de la session, mais uniquement au niveau de l’instance avec ALTER SYSTEM.

-- Tentative incorrecte : ce paramètre est réservé à ALTER SYSTEM
ALTER SESSION SET DB_BLOCK_SIZE = 8192;
-- ORA-02248: option invalide pour ALTER SESSION

Solution : Consultez la vue V$PARAMETER pour vérifier si un paramètre est modifiable au niveau session. La colonne ISSES_MODIFIABLE indique TRUE si le paramètre est autorisé avec ALTER SESSION.

-- Vérifier si un paramètre est modifiable en session
SELECT name, isses_modifiable, issys_modifiable
FROM V$PARAMETER
WHERE name = 'optimizer_mode';

-- ISSES_MODIFIABLE = TRUE  => utilisez ALTER SESSION
-- ISSES_MODIFIABLE = FALSE => utilisez ALTER SYSTEM (avec les droits appropriés)

Résumé

Point cléDétail
PortéeSession courante uniquement, aucun impact sur les autres utilisateurs
DuréeJusqu’à la déconnexion ou à un nouvel ALTER SESSION
Privilèges requisAucun privilège spécial (ALTER SESSION est accordé à PUBLIC par défaut)
Principaux usagesFormats NLS, débogage, optimiseur, fuseau horaire, schéma courant
Commande complémentaireALTER SYSTEM pour les modifications globales de l’instance
Vue de référenceV$PARAMETER pour lister les paramètres modifiables en session

Bonnes pratiques Oracle

  1. Centralisez vos ALTER SESSION dans un script d’initialisation : créez un fichier init_session.sql regroupant tous vos paramètres NLS et de configuration, à exécuter systématiquement à l’ouverture d’une session de développement. Cela garantit la cohérence entre les membres de l’équipe et évite les erreurs de formatage.
  2. Ne laissez jamais SQL_TRACE activé en production sans supervision : les fichiers de trace peuvent croître très rapidement et saturer le disque du serveur Oracle. Pensez toujours à désactiver la trace (ALTER SESSION SET SQL_TRACE = FALSE) dès que votre analyse est terminée, et vérifiez régulièrement la taille du répertoire USER_DUMP_DEST.

Aller plus loin

Pour approfondir votre maîtrise d’Oracle SQL et des commandes de configuration, nous vous recommandons les articles suivants :

  • ALTER SYSTEM Oracle : découvrez comment modifier les paramètres au niveau de l’instance entière et comprendre les différences avec ALTER SESSION.
  • Paramètres NLS Oracle : guide complet sur la gestion de la langue, des formats de date et des caractères spéciaux dans vos applications internationales.
  • La vue V$PARAMETER Oracle : apprenez à interroger le dictionnaire de données Oracle pour identifier et contrôler tous les paramètres de configuration disponibles.

Sur le même thème

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

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

Publicité