L'environnement des TPs SQL

Richard Grin (grin@unice.fr) Retour

L'accès à la base de données installée à l'université est réservé aux étudiants du cours "Bases de données" de l'université de Nice. Il est en effet nécessaire d'avoir un compte sous Oracle. Cet accès est possible depuis n'importe quelle machine du 3ème étage du Petit Valrose et depuis n'importe quel ordinateur à condition de lancer le VPN de l'université.

Pour travailler avec les premiers TPs vous devrez créer des tables et y ajouter des données. Vous pourriez le faire avec un programme Java. Mais pour la mise au point des programmes que vous allez écrire vous aurez sans doute besoin d'aller directement consulter les données de la base de données. Ce qui suit vous explique comment accéder directement à la base de données qui a été installée pour vous à l'université. Le plus simple est d'utiliser SQL Developer.

SQL Developer

Ce logiciel fourni par Oracle permet de travailler avec Oracle en mode graphique. Il permet en particulier de voir et de modifier le contenu des tables et de taper des requêtes SQL. SQL Developer est déjà installé sur les machines de l'université. On peut le lancer avec le menu "Applications / Programmation" (à vérifier sur votre machine) mais il faut auparavant lui indiquer quel JDK utiliser en créant dans votre répertoire HOME un fichier .sqldeveloper/jdk qui contient l'emplacement de ce JDK. Pour cela, placez vous dans votre répertoire HOME et tapez
mkdir .sqldevelper

puis
echo "/usr/local/java/jdk..." > .sqldeveloper/jdk
(où les "..." sont à remplacer par la version la plus récente du JDK 6 qui est installée sur votre machine ; utilisez une version 6 du JDK et pas une version 7 pour laquelle SQL Developer n'est pas encore adapté).

Après avoir lancé SQL Developer, commencez par configurer une connexion avec la base de données installée pour vous sur euterpe : machine euterpe.unice.fr, port 1521, nom SID "info". Testez (il devrait s'afficher "Succès"), et n'oubliez pas d'enregistrez la connexion. Vous pouvez ensuite faire afficher les informations sur la base et taper à droite des requêtes SQL.

Ensuite, il vous faudra lancer l'exécution du fichier inibase.sql qui contient les commandes SQL pour créer les tables que vous allez utiliser pendant les TPs et quelques lignes dans ces tables. Vous pouvez sauvegarder ce fichier localement et l'ouvrir avec le menu "Fichier / Ouvrir" (les commandes s'afficheront dans la zone de saisie des requêtes SQL) ou le faire afficher dans votre navigateur Web et copier directement son contenu dans la zone de saisie des requêtes SQL. Il faut ensuite cliquer sur l'icône "Exécuter un script (F5)" pour lancer l'exécution de toutes les commandes SQL qui apparaissent dans cette zone de saisie (c'est la deuxième icône à partir de la gauche, pas la première). Ne vous inquiétez pas si vous avez des messages d'erreur disant que certaines tables n'existent pas car ce script SQL réinitialise la base ; il commence donc par supprimer les tables à réinitialiser et vous aurez un message d'erreur la première fois que vous lancerez le script puisque ces tables n'existeront pas. Pour vérifier que tout s'est bien passé, lancez la requête SQL "select * from emp". Vous devriez voir s'afficher une liste d'employés.

Compléments sur SQL Developper :

De la documentation : http://www.oracle.com/technology/products/database/sql_developer/index.html.

Vous pouvez maintenant commencer à faire les TPs.

La suite de cette page vous donne d'autres installations qui ne sont pas indispensables mais qui pourront vous être utiles, en particulier si vous voulez travailler ailleurs qu'à l'université. Vous pouvez installer SQL Developer sur votre ordinateur personnel pour accéder à la base qui est sur euterpe, ou même installer une base de données locale sur votre ordinateur personnel. Certains préfèrent travailler en mode "console" plutôt qu'avec une interface graphique.

Quelques informations vous sont aussi données pour le travail en Java.


SQL Developer sur votre machine personnelle

Si vous installez SQL Developer sur votre machine personnelle vous pourrez aussi travailler à distance avec la base installée sur euterpe.

Vous trouverez SQL Developer à l'adresse http://www.oracle.com/technology/software/products/sql/index.html en version Windows, Linux ou Mac OS X. Aucune configuration n'est nécessaire (tout ce qui est expliqué ci-dessus dans "Environnement de travail" n'est pas nécessaire, à part lancer inibase.sql pour créer les tables et les remplir, si vous ne l'avez pas déjà fait avec debsql/sqlplus comme indiqué ci-dessus). Pour Windows, si vous avez déjà installé Java, vous pouvez télécharger la version qui n'inclut pas de JDK ; au lancement du programme vous devrez indiquer l'emplacement du fichier exécutable qui lance l'exécution Java (java.exe).

Installation et lancement


Autres possibilités pour accéder à la base de données

Vous pouvez utiliser aussi les facilités offertes par l'IDE que vous avez choisi (Eclipse ou Netbeans). Voir ci-dessous.

Je n'ai pas testé mais il est certainement possible d'utiliser d'autres logiciels clients des SGBD relationnels à la place de SQL Developer, SQuirreL par exemple.


Travailler en Java

Pour écrire et modifier le code Java vous pouvez utiliser votre éditeur préféré (emacs, gedit, vi ou autre) ou un IDE (environnement de développement intégré) Java.

Eclipse est installé sur tous les PC du 3ème étage dans un sous-répertoire de /usr/local.

Pour le lancer vous devez avoir le répertoire qui contient la commande java dans votre PATH. Il vous sera plus facile de lancer eclipse si vous créez un alias dans votre fichier .zhsrc (ou un fichier semblable, regardez où sont les alias dans votre environnement). Par exemple, "alias eclipse=/urs/local/eclipse-3.1/eclipse".

Vous pouvez aussi utiliser l'IDE NetBeans s'il est déjà installé.

Connexion à la base de données depuis les IDE

Pour la mise au point vous aurez peut-être besoin d'aller directement consulter les données de la base de données. Pour cela vous pouvez utiliser sqlplus ou SQL Developer comme décrit ci-dessus mais aussi votre IDE favori. Remarque importante : si vous voulez utiliser la base installée sur euterpe depuis chez vous, vous devez lancer avant le VPN unice.

Par exemple, avec Eclipse (Helios), il faut commencer par configurer l'accès à la base de données avec le menu "Window/Preferences/Data Management/Connectivity/Driver Definitions" ; vous ajoutez l'emplacement du driver.

Il faut ensuite travailler dans la perspective "Database Development" et choisir "Database Connections", bouton droit et New et ajoutez la connexion à Euterpe en utilisant les informations données ci-dessus (profile Oracle, donnez un nom à la connexion, puis entrez les informations sur la base SID : info, Host : euterpe.unice.fr, votre nom et votre mot de passe que vous pouvez sauvegarder si vous le souhaitez ; vous pouvez tester la connexion en cliquant sur le bouton "Test Connection" ; vous devez recevoir le message "Ping succeded!"). Allez ensuite dans la base info qui a dû s'afficher et ouvrez les schémas. Entrez ensuite dans votre schéma, celui qui a votre nom d'utilisateur Oracle. Pour voir les données et les modifier vous ouvrez "Tables" et bouton droit sur la table qui vous intéresse et vous choisissez "Data/Sample Contents" ou "Data/Edit" ; après un certain temps vos données s'affichent.

Avec NetBeans, il faut aller dans l'onglet Services (à gauche), commencer par ajouter le driver Oracle puis ajouter une nouvelle base de données (bouton droit sur Databases).


Aide en ligne sur le langage SQL et sur Oracle

Aide en ligne sur les mots clés SQL (vous devez vous enregistrer, mais une seule fois et c'est gratuit) : http://otn.oracle.com/pls/db92/db92.sql_keywords?remark=homepage

Toute la doc d'Oracle : http://otn.oracle.com/docs/content.html


Installer un SGBD sur sa propre machine

Le plus simple est d'installer Oracle 10g Express Edition qui est une version gratuite d'Oracle. Cette édition peut être téléchargée à l'adresse http://www.oracle.com/technology/products/database/xe/index.html. L'installation est facile et nécessite moins de 500 Mo sur disque. Il existe une version pour Linux et pour Windows.

La base de donnée s'appelera alors obligatoirement "XE" (pas le choix avec Oracle XE), et la machine "localhost" si vous voulez y accéder depuis la même machine (le port est toujours 1521).

Ne travaillez pas avec l'utilisateur SYSTEM. Créez un nouvel utilisateur en utilisant l'interface Web d'Oracle XE (très simple : cliquer sur Administration / Utilisateurs de la base de données / Créer). Lancez ensuite inibase.sql après être entré sous ce nouveau nom d'utilisateur.

Un tutoriel "pas à pas" du logiciel : http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm

Si vous travaillez avec Windows, il se peut que le lancement automatique des services liés à Oracle XE ralentisse fortement le démarrage de votre machine. En ce cas, modifiez les 2 services "Oracle XE" et "OracleXETNSListener" (il écoute sur le port 1521) pour les passer en mode manuel et ne les démarrez que si vous voulez lancer Oracle (Menu "Panneau de configuration / Outils d'administration / Services").

Vous pouvez aussi installer un autre SGBD comme PostgreSQL ou MySQL. Vous devrez alors modifier l'URL de la base de données (lisez la documentation du SGBD pour en savoir plus) et vous risquez d'avoir à modifier les ordres pour créer les tables (dans inibase.sql) mais, à part ça, les corrections des TPs devraient fonctionner sans trop de modifications.

Pour travailler avec les TPs il vous faudra lancer l'exécution de inibase.sql par SQL Developer, par l'interface Web d'Oracle XE (attention, l'exécution d'un script ne fonctionne qu'avec le navigateur Internet Explorer), ou un autre logiciel d'utilisation du SGBD que vous avez installé (PhpMyAdmin par exemple si vous utilisez MySQL). Vous pouvez aussi utiliser le sqlplus (voir ci-dessous) qui a été installé avec Oracle XE (le lancer depuis le répertoire qui contient inibase.sql).


debsql pour lancer sqlplus

Si vous préférez travailler en SQL et en mode commande, plutôt qu'avec une interface graphique, vous pouvez utiliser sqlplus. Cette commande est fournie par Oracle pour lancer des requêtes SQL dans une fenêtre "terminal" Linux (fenêtre dans laquelle vous pouvez taper, par exemple, la commande "ls" ou la commande "cp"). Un shellscript debsql vous est fourni pour lancer sqlplus dans le bon environnement. Il ne faut donc pas lancer sqlplus directement mais plutôt lancer debsql. Vous devez commencer par installer les fichiers donnés ci-dessous.

Vous devez évidemment adapter les fichiers qui vous sont donnés ci-dessous à l'environnement que vous avez sur votre machine (normalement cet environnement est le même sur tous les PC du 3ème étage). En fait, vous aurez essentiellement à les lire rapidement et vérifier les nom des répertoires et des fichiers, par exemple le répertoire où est installé Oracle (voir le lancement de sqlplus dans le shellscript debsql). Évitez de m'envoyer des messages pour ce genre de problème.

Les fichiers ci-dessous sont des shellscripts ou des fichiers de commandes SQL.

Voici ce que vous allez faire sous Linux :

  1. Créez un répertoire oracle sous votre répertoire HOME.
  2. Placez les fichiers login.sql, inibase.sql et contraintes.sql dans ce répertoire
  3. Placez le fichier tnsnames.ora dans ce répertoire oracle.
  4. Placez le shellscript debsql dans un des répertoires du PATH (par exemple, ~/bin)
  5. Lancez la commande debsql ; une nouvelle fenêtre s'ouvre (attention, ne lancez pas directement sqlplus ; le script debsql positionne l'environnement inspensable pour le bon fonctionnement de sqlplus).
  6. Vous devez entrer votre nom de login Oracle et votre mot de passe Oracle. Pour cette 1ère connexion, le mot de passe est identique à votre nom de login Oracle (donné pendant le cours).
    Si ça ne marche vraiment pas (vérifiez avec vos camarades pour voir si vous n'avez pas fait d'erreur) c'est peut-être parce qu'aucun compte Oracle n'a été ouvert pour vous. En ce cas, envoyez-moi un message avec votre nom de login et le message d'erreur qui s'affiche pour que je puisse éventuellement vous créer un compte.
  7. Changez de mot de passe : grant connect to votre-nom-de-login identified by nouveau-mot-de-passe;
    Attention, votre mot de passe apparaîtra en clair sur votre écran.
  8. Lancez @ inibase pour créer les données. Vous aurez des messages d'erreur normaux indiquant que des tables n'existe pas car la procédure supprime d'éventuelles anciennes tables avant de créer les nouvelles (voir inibase.sql)
  9. Lancez select nomE, sal from emp; pour voir si vous avez bien des données ; une liste de noms et de salaires devrait s'afficher.
  10. Sortez par exit
Voici ces fichiers avec leur description :
  • debsql : shellscript (uniquement pour les machines sous Unix ou Linux) de lancement de l'utilitaire sqlplus fourni par Oracle pour travailler en SQL. Ce shellscript est inutile si vous travaillez sous Windows.

  • Syntaxe : debsql [-nw] [répertoire-de-travail]
    Vous devez le placer dans le PATH (par exemple dans votre répertoire ~/bin).
    Voici ce qu'il fait :
    1. Place dans répertoire-de-travail (répertoire ~/oracle par défaut).
    2. Ouvre une nouvelle fenêtre xterm (sauf si vous avez choisi l'option -nw, "no window").
    3. Initialise l'environnement en donnant les bonnes valeurs à des variables d'environnement du shell (travail avec la base INFO en particulier).
    4. Lance sqlplus dans la nouvelle fenêtre ; avec l'option -nw, sqlplus est lancé dans la fenêtre en cours.
    5. Quand on quitte sqlplus, on quitte le shellscript et on revient à l'environnement initial.
  • login.sql : doit être placé dans le répertoire d'où on lance sqlplus (c'est-à-dire debsql, comme tous les fichiers .sql qui suivent).
  • Ce fichier est executé au démarrage de sqlplus. A configurer selon ses goûts.
  • inibase.sql : à lancer UNE SEULE FOIS depuis sqlplus par "@ inibase" quand on est entré dans sqlplus (par debsql ou directement si on est sous Windows), pour construire la plus grande partie de la base de données utilisée pendant le cours et les TP.
    Vous pouvez aussi relancer cette commande si vous avez trop endommagé les tables par une mauvaise commande (pensez à ROLLBACK si vos modifications n'ont pas encore été validées), mais vous perdrez alors toutes les modifications apportées dans les différents TP. En ce cas, la suppression des tables EMP et DEPT peut ne pas être possible en raison des contraintes d'intégrité. Vous devrez donc commencer par enlever les contraintes qui posent un problème, ou modifier les données pour permettre les suppressions de tables.
    Pour faire les TPs vous devez lancer l'exécution de ce fichier de commandes SQL. En effet, il permet de créer les tables et les données de départ (lisez-le pour en savoir plus sur la structure de la base de données). Pour lancer son exécution le plus simple est d'utiliser la procédure décrite ici. Si vous êtes sous Windows, vous pouvez utiliser l'interface Web d'Oracle XE (attention, l'exécution d'un script ne fonctionne qu'avec Internet Explorer !!) ou SQL Developper.
  • contraintes.sql : à lancer depuis sqlplus par "@ contraintes" pour voir les contraintes d'intégrité des tables de l'utilisateur.
  • tnsnames.ora : fichier qui va indiquer à sqlplus comment se connecter au serveur Oracle qui contient la base de données INFO sur laquelle vous allez travailler.
  • Voici un fichier ZIP qui contient tous ces fichiers.

    Remarque sur la façon de travailler avec sqlplus

    Le mode de modification des commandes dans sqlplus est vraiment rudimentaire. Après plusieurs années d'expérience, voici le mode de travail favoris des étudiants pour taper et modifier les commandes SQL durant une session de travail avec sqlplus :

    Cette façon de travailler a aussi l'avantage de vous permettre de garder dans un fichier toutes les commandes que vous tapez.

    Sous emacs, vous pouvez lancer le mode "sql" en tapant M-x sql-mode. Les mots-clés seront mis en valeur.

    L'aide en ligne sous sqlplus n'a pas été installée (sinon, on peut l'appeler par help <mot-clé>).


    Retour