Chapitre 6 — Environnement de travail Oracle

Support de cours Oracle 11g

Maîtrisez les outils, les configurations et le dictionnaire de données pour piloter Oracle 11g.

📖 Sommaire du Chapitre

🎯 Introduction

L'administration et l'utilisation d'une base de données Oracle 11g ne se limitent pas à la connaissance des structures internes. Il est impératif de maîtriser les outils et les configurations qui permettent d'établir le dialogue entre l'administrateur (ou le développeur) et l'instance. Ce chapitre détaille les méthodes d'accès, les interfaces de gestion et la configuration du système hôte nécessaires pour piloter l'environnement Oracle.

La maîtrise de cet environnement repose sur trois piliers :

1️⃣ La configuration système

S'assurer que le système d'exploitation reconnaît les logiciels Oracle.

2️⃣ Les interfaces de communication

Choisir l'outil adapté (ligne de commande, graphique ou web) selon la tâche à accomplir.

3️⃣ L'interrogation des métadonnées

Savoir utiliser le dictionnaire de données pour obtenir des informations en temps réel sur l'état de la base.


💻 Connexion SQL*Plus

SQL*Plus est l'outil d'interface utilisateur en ligne de commande livré avec chaque installation du serveur ou du client Oracle. Bien que son apparence puisse sembler rudimentaire, il demeure l'outil le plus puissant et le plus robuste pour l'administration d'une base de données Oracle 11g.

1️⃣ Nature et Avantages

SQL*Plus n'est pas seulement un terminal SQL ; c'est un interpréteur de commandes interactif qui permet d'exécuter des instructions SQL, des blocs PL/SQL et des commandes spécifiques à l'outil (formatage, variables de substitution, gestion de fichiers).

🌍 Universalité

Il est disponible sur toutes les plateformes (Windows, Linux, Unix).

⚡ Légèreté

Il consomme très peu de ressources et ne nécessite pas d'interface graphique (GUI).

🤖 Automatisation

C'est l'outil de prédilection pour l'exécution de scripts batch et de tâches de maintenance planifiées.

2️⃣ Les différents modes de connexion

L'accès via SQL*Plus peut se faire selon deux architectures distinctes :

🏠 Connexion Locale (Bequeath)

Utilisée directement sur le serveur où réside l'instance. Elle ne nécessite pas de configuration réseau (Listener).

sqlplus / as sysdba

Oracle s'appuie sur les privilèges du groupe d'utilisateurs du système d'exploitation pour authentifier l'administrateur.

🌐 Connexion Distante (Client-Serveur)

L'utilisateur se connecte via le réseau à travers le processus Listener.

sqlplus nom_utilisateur/mot_de_passe@chaîne_de_connexion

La "chaîne de connexion" peut être un alias ou Easy Connect : serveur:port/service_name.

3️⃣ Commandes spécifiques à SQL*Plus

Il est important de distinguer les instructions SQL (qui se terminent par un ;) des commandes SQL*Plus (qui ne nécessitent pas de point-virgule) :

  • DESCRIBE (ou DESC) : Affiche la structure d'une table ou d'une vue (colonnes, types, nullabilité).
  • HOST (ou !) : Permet d'exécuter une commande du système d'exploitation sans quitter SQL*Plus.
  • SPOOL : Enregistre le résultat des requêtes et les commandes saisies dans un fichier texte externe.
  • @ ou START : Exécute un script SQL stocké sur le disque.
  • SET : Configure l'environnement de la session (ex: SET LINESIZE 200).

4️⃣ Rôle dans l'administration

SQL*Plus est indispensable pour les phases critiques :

  • Démarrage (STARTUP) et arrêt (SHUTDOWN) de l'instance.
  • Passage de la base en mode maintenance (ex: changement du mode ARCHIVELOG).
  • Création manuelle de bases de données par scripts.

🎨 SQL Developer

SQL Developer est l'interface graphique (GUI) moderne, gratuite et officiellement supportée par Oracle pour le développement et l'administration des bases de données. Développé en Java, cet outil offre une alternative visuelle intuitive à la rigueur de SQL*Plus.

1️⃣ Philosophie et Accessibilité

Contrairement à d'autres outils qui nécessitent une installation complexe du client Oracle, SQL Developer est un outil "thin" : il peut se connecter en utilisant un driver JDBC intégré, ne nécessitant souvent qu'un simple dézippage du dossier pour être opérationnel.

2️⃣ Fonctionnalités Clés pour le Développement

📦 Navigateur d'objets

Une arborescence complète permet d'explorer visuellement les tables, les vues, les index, les packages PL/SQL, les déclencheurs (triggers) et les séquences sans avoir à connaître par cœur les vues du dictionnaire.

✏️ Éditeur SQL avancé

Propose la coloration syntaxique, l'autocomplétion (IntelliSense) et le formatage automatique du code.

🔍 Débogage PL/SQL

Inclut un débogueur intégré permettant de poser des points d'arrêt (breakpoints), d'exécuter le code pas à pas et d'inspecter les variables en temps réel.

📊 Feuille de calcul (Worksheet)

Permet d'exécuter des scripts complexes et d'afficher les résultats dans des grilles de données triables et filtrables.

3️⃣ Capacités d'Administration

Bien qu'orienté développement, SQL Developer propose des consoles d'administration robustes :

  • Gestion de l'instance : Visualisation de l'utilisation de la SGA, de la PGA et de l'état des processus de fond.
  • Gestion du stockage : Création et extension graphique des Tablespaces et des Datafiles.
  • Sécurité : Création d'utilisateurs, gestion des rôles et des privilèges via des boîtes de dialogue intuitives.
  • Rapports : Fournit une bibliothèque de rapports pré-intégrés sur la santé de la base, les sessions actives et les statistiques de performance.

4️⃣ Outils de Migration et d'Export

Un des points forts de SQL Developer est sa capacité à manipuler les données entre différents environnements :

  • Export/Import : Exportation facile de données vers Excel, CSV, PDF ou scripts SQL.
  • Différence de schéma : Outil permettant de comparer deux schémas et générer le script de synchronisation.
  • Copie de base de données : Assistant permettant de cloner des objets ou des données d'une base vers une autre.

💡 Note pédagogique : Dans un environnement d'apprentissage, SQL Developer est idéal pour visualiser physiquement les concepts théoriques vus aux chapitres précédents (comme la structure d'un bloc ou l'occupation d'un segment).


🌐 Oracle Enterprise Manager (OEM) — Database Control

Dans l'écosystème Oracle 11g, Oracle Enterprise Manager (OEM) Database Control représente l'interface d'administration Web native. Contrairement à SQL Developer qui est une application cliente, OEM est déployé directement sur le serveur de base de données et permet une gestion centralisée via un simple navigateur internet.

1️⃣ Architecture et Accessibilité

En version 11g, Database Control est une interface légère pilotée par un processus de fond nommé emctl.

  • Accès : URL sécurisée https://<hostname>:1158/em
  • Indépendance : Aucune installation sur le poste de travail de l'administrateur, ce qui facilite la gestion à distance.

2️⃣ Le Tableau de Bord (Dashboard) : Surveillance en Temps Réel

La page d'accueil d'OEM fournit une vue consolidée de la "santé" de l'instance :

📊 L'état de l'instance

Temps de fonctionnement (uptime), statut (Open/Mounted) et utilisation des ressources CPU/Mémoire.

⚠️ Les alertes critiques

Un système de seuils préconfigurés avertit le DBA en cas de saturation d'un Tablespace, de corruption de blocs ou de problèmes de performance majeurs.

👥 Activité des sessions

Un graphique montre le nombre d'utilisateurs actifs et les types d'attentes (Wait Events) qui ralentissent éventuellement la base.

3️⃣ Fonctionnalités d'Administration Avancées

💾 Gestion du Stockage

Visualisation graphique de l'occupation des Datafiles, création de nouveaux Tablespaces et gestion des segments fragmentés.

🔄 Sauvegarde et Récupération

Interface graphique pour piloter RMAN. On peut y planifier des sauvegardes automatiques et lancer des procédures de restauration guidées.

👤 Gestion des Utilisateurs

Création de comptes, réinitialisation de mots de passe, attribution de rôles et de quotas de stockage.

🌐 Configuration Réseau

Surveillance du Listener et des services réseau.

4️⃣ Diagnostic et Performance (Advisor Framework)

L'un des plus grands atouts d'OEM 11g est l'intégration des Advisors (Conseillers). Ce sont des moteurs intelligents qui analysent la base et proposent des solutions :

  • Memory Advisor : Aide à dimensionner la SGA et la PGA pour optimiser le cache.
  • SQL Tuning Advisor : Analyse les requêtes lentes et suggère des index ou modifications.
  • Segment Advisor : Identifie les objets qui gaspillent de l'espace disque et propose de les compacter.

⚠️ Note pour les apprenants : Bien que très complet, OEM dépend du bon fonctionnement de l'agent Oracle sur le serveur. Si l'instance est totalement arrêtée suite à une panne grave, le DBA devra souvent repasser par SQL*Plus pour effectuer les premières étapes de réparation.


⚙️ Variables d'environnement

La configuration correcte des variables d'environnement est l'étape technique préalable à toute interaction avec le moteur Oracle. Ces variables servent de boussole au système d'exploitation pour localiser les fichiers binaires, identifier l'instance cible et définir les paramètres de communication linguistique.

1️⃣ Les Variables Fondamentales

🏠 ORACLE_HOME

La variable la plus critique. Désigne le chemin absolu où le logiciel Oracle 11g a été installé. C'est à partir de cette racine qu'Oracle retrouve ses bibliothèques et fichiers de configuration.

Windows : C:\app\oracle\product\11.2.0\dbhome_1

Linux : /u01/app/oracle/product/11.2.0/dbhome_1

🆔 ORACLE_SID (Site Identifier)

Le SID est le nom unique qui identifie une instance spécifique. Comme un serveur peut héberger plusieurs bases simultanément, l'ORACLE_SID indique aux outils à quelle instance s'attacher en mémoire.

Si mal renseigné : ORA-12162: TNS:net service name is incorrectly specified

📁 PATH

Pour exécuter les commandes Oracle (sqlplus, lsnrctl, etc.) depuis n'importe quel répertoire, le chemin $ORACLE_HOME/bin doit être ajouté à PATH.

📚 LD_LIBRARY_PATH (Linux/Unix)

Indique où trouver les bibliothèques partagées (.so) nécessaires au moteur. Pointe généralement vers $ORACLE_HOME/lib.

2️⃣ La Variable NLS_LANG : Gestion de l'Internationalisation

La variable NLS_LANG est vitale pour l'intégrité des données. Elle définit : LANGUE_TERRITOIRE.JEU_DE_CARACTERES

🌍 Langue

Détermine la langue des messages d'erreur et des noms de jours/mois.

📍 Territoire

Définit les formats par défaut pour les dates, les monnaies et les séparateurs numériques.

📝 Jeu de caractères

Indique au client Oracle comment coder/décoder les caractères (ex: AL32UTF8 pour Unicode). Un mauvais réglage ici est la cause principale de corruption des accents.

3️⃣ Méthodes de Vérification et Configuration

🪟 Sous Windows

L'installation d'Oracle crée des entrées dans le Registre. Pour forcer un environnement spécifique dans CMD :

set ORACLE_SID=PROD
set ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1

🐧 Sous Linux/Unix

On utilise la commande export. Oracle fournit souvent oraenv :

. oraenv (puis saisir le SID souhaité)

4️⃣ Impact sur la Connexion "Bequeath"

La configuration des variables ORACLE_HOME et ORACLE_SID permet d'utiliser le protocole Bequeath. Ce mode de connexion permet à un processus utilisateur (comme SQL*Plus) de se connecter directement à la zone mémoire SGA de l'instance sans passer par la couche réseau (le Listener). C'est le mode privilégié pour les opérations d'administration lourdes, car il est plus rapide et ne dépend pas de la disponibilité du réseau.


📚 Le Dictionnaire de données (USER_, ALL_, DBA_)

Le dictionnaire de données est le cœur informationnel d'Oracle 11g. Il s'agit d'un ensemble de tables et de vues en lecture seule, créées et maintenues automatiquement par le moteur, qui décrivent la structure même de la base de données.

1️⃣ La Structure Hiérarchique (Les préfixes)

L'accès aux métadonnées est segmenté en trois niveaux de visibilité :

👤 USER_ : La vue restrictive

Affiche uniquement les objets dont l'utilisateur actuel est le propriétaire.

SELECT table_name FROM USER_TABLES;

🤝 ALL_ : La vue collaborative

Regroupe tous les objets auxquels l'utilisateur a accès (ses objets + ceux partagés avec lui).

SELECT owner, table_name FROM ALL_TABLES;

🛡️ DBA_ : La vue d'ensemble

Réservée aux administrateurs (rôle DBA). Affiche absolument tous les objets présents dans la base.

SELECT owner, table_name FROM DBA_TABLES;

2️⃣ Les Vues Dynamiques de Performance (V$)

En complément des vues statiques, Oracle propose les vues V$ qui sont lues directement depuis la mémoire vive (SGA) :

  • Fournissent des informations en temps réel sur l'activité de l'instance.
  • Exemples : V$SESSION (qui est connecté ?), V$INSTANCE (statut), V$TRANSACTION (transactions en cours)

3️⃣ Les Vues Incontournables pour l'Administration

Domaine Vues principales Utilité
Objets DBA_OBJECTS, DBA_TABLES, DBA_INDEXES Inventorier et dater la création des composants.
Stockage DBA_TABLESPACES, DBA_DATA_FILES, DBA_SEGMENTS Surveiller l'occupation disque et l'emplacement physique.
Sécurité DBA_USERS, DBA_ROLE_PRIVS, DBA_TAB_PRIVS Auditer les accès et les permissions.
Code DBA_SOURCE, DBA_TRIGGERS, DBA_ERRORS Consulter le code source PL/SQL et déboguer.

4️⃣ La Table DICTIONARY (Le catalogue du catalogue)

Avec des milliers de vues disponibles, Oracle fournit une vue spéciale nommée DICTIONARY (ou son alias DICT) qui sert d'index :

Astuce de recherche :

SELECT table_name, comments FROM dictionary WHERE table_name LIKE '%TABLESPACE%';

Cette requête permet de retrouver instantanément toutes les vues liées à la gestion de l'espace.

⚠️ Note Pédagogique : Le dictionnaire de données est en lecture seule pour l'utilisateur. Même le DBA ne doit jamais tenter de modifier directement les tables de base (TAB$, etc.), car cela corromprait irrémédiablement la structure logique de la base. Toute modification doit passer par des commandes DDL standard (CREATE, ALTER, DROP).


🧪 Travaux Pratiques : Navigation et requêtes système

L'objectif de ce travail pratique est de vous familiariser avec l'environnement de travail Oracle en utilisant les outils de connexion et en interrogeant le dictionnaire de données pour auditer l'état de l'instance.

Exercice 1️⃣ : Configuration et Connexion (SQL*Plus)

Avant toute chose, vérifiez que votre terminal "voit" l'instance Oracle :

Vérification de l'environnement :

Windows : echo %ORACLE_SID%

Linux : echo $ORACLE_SID

Connexion administrative :

sqlplus / as sysdba

Vérification du statut :

SELECT instance_name, host_name, status, startup_time FROM v$instance;

Exercice 2️⃣ : Exploration du catalogue (DICTIONARY)

Apprenez à faire des recherches thématiques dans le dictionnaire :

Rechercher des vues sur les fichiers :

SELECT table_name, comments FROM dictionary WHERE table_name LIKE '%DATA_FILE%';

Consulter les limites de stockage :

COLUMN file_name FORMAT A50
SELECT file_id, file_name, bytes/1024/1024 AS "Taille (Mo)" FROM dba_data_files;

Exercice 3️⃣ : Audit de session et sécurité

Qui est connecté et avec quels droits ?

Identifier l'utilisateur actuel :

SELECT user, sys_context('USERENV', 'SID') AS session_id FROM dual;

Lister les privilèges système :

SELECT privilege, admin_option FROM user_sys_privs;

Exercice 4️⃣ : Manipulation via SQL Developer

Création de connexion

  • Lancez SQL Developer
  • Créez une nouvelle connexion "Admin_Base"
  • Saisissez : utilisateur SYSTEM, mot de passe, hôte, port 1521, SID

Exploration visuelle

  • Déroulez l'arborescence : Tables > Tables du dictionnaire
  • Ouvrez USER_TABLES et explorez l'onglet "Données"

Rapports

  • Allez dans l'onglet Rapports (en bas à gauche)
  • Déroulez : Rapports du dictionnaire > Administration > Stockage > Tablespaces

📋 Synthèse du Chapitre

Cette étape marque la transition entre la théorie architecturale et la pratique opérationnelle. La maîtrise de l'environnement repose sur la compréhension du lien entre le système d'exploitation, les outils clients et le dictionnaire de données.

1️⃣ Les Fondamentaux de la Configuration

L'accès à Oracle ne peut se faire sans une orientation correcte du système hôte. Les variables d'environnement servent de pont :

  • Identité : ORACLE_SID désigne l'instance.
  • Localisation : ORACLE_HOME désigne le logiciel.
  • Accessibilité : PATH permet d'appeler les outils.
  • Communication : NLS_LANG garantit l'intégrité des caractères et des formats.

2️⃣ Le Triptyque des Outils d'Interface

Outil Type Usage principal
SQL*Plus Ligne de commande Administration lourde, scripts, démarrage/arrêt
SQL Developer GUI Développement PL/SQL, navigation visuelle, rapports
OEM (Enterprise Manager) Web Surveillance des performances, alertes, gestion globale

3️⃣ La Boussole : Le Dictionnaire de Données

C'est l'outil d'auto-description d'Oracle. Sa structure en trois niveaux (USER_, ALL_, DBA_) permet une sécurité granulaire :

  • Pour le développeur : USER_ et ALL_ suffisent pour travailler sur ses applications.
  • Pour le DBA : Les vues DBA_ et les vues dynamiques V$ permettent un pilotage complet de l'instance.