
null
—
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_TRACEpour 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ètre | Description | Exemple de valeur |
|---|---|---|
NLS_DATE_FORMAT | Format d’affichage des dates | 'DD/MM/YYYY HH24:MI:SS' |
NLS_LANGUAGE | Langue de la session Oracle | 'FRENCH' |
NLS_TERRITORY | Territoire (monnaie, séparateurs…) | 'FRANCE' |
NLS_NUMERIC_CHARACTERS | Séparateurs décimal et milliers | ',.' |
SQL_TRACE | Activation de la trace SQL | TRUE / FALSE |
OPTIMIZER_MODE | Stratégie de l’optimiseur de requêtes | ALL_ROWS / FIRST_ROWS |
TIME_ZONE | Fuseau horaire de la session | 'Europe/Paris' |
CURRENT_SCHEMA | Sché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.
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ée | Session courante uniquement, aucun impact sur les autres utilisateurs |
| Durée | Jusqu’à la déconnexion ou à un nouvel ALTER SESSION |
| Privilèges requis | Aucun privilège spécial (ALTER SESSION est accordé à PUBLIC par défaut) |
| Principaux usages | Formats NLS, débogage, optimiseur, fuseau horaire, schéma courant |
| Commande complémentaire | ALTER SYSTEM pour les modifications globales de l’instance |
| Vue de référence | V$PARAMETER pour lister les paramètres modifiables en session |
Bonnes pratiques Oracle
- Centralisez vos ALTER SESSION dans un script d’initialisation : créez un fichier
init_session.sqlregroupant 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. - 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épertoireUSER_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
- MATERIALIZED VIEW Oracle : Guide Complet et Pratique
- INSTEAD OF TRIGGER Oracle : Guide Complet et Pratique
- ROLLBACK Oracle : annuler une transaction SQL facilement
- DELETE en SQL Oracle : Syntaxe et Exemples Pratiques
- OFFSET en SQL Oracle : Pagination et Exemples Pratiques
- FULL JOIN Oracle SQL : syntaxe, exemples et bonnes pratiques
