Améliorer l’utilisation de SQL*Plus (Oracle) sous Linux avec rlwrap

L’utilisation de l’outil SQL*Plus d’Oracle sous un environnement Linux présente une particularité : il n’est pas possible de revenir dans l’historique des commandes passées avec les flèches, comme c’est possible sous Windows.

Démonstration

ora102@bddhost:~$ sqlplus /nolog
 
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 7 23:18:28 2010
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
SQL> connect SYSTEM@XE
Enter password:
Connected.
SQL> alter user SYSTEM identified by drowssap;
 
User altered.
 
SQL >

Jusqu’ici, tout va bien. Essayons à présent de remonter dans l’historique avec les flèches :

SQL> ^[[A^[[B^[[A          " - rest of line ignored.
SQL> ^C2: unknown command "

Le moins que l’on puisse dire, c’est que c’est loin d’être fonctionnel… et on a très vite fait d’appuyer sur les flèches par habitude.

La solution SQL*Plus

Pour remonter dans l’historique avec SQL*Plus sous Linux, il faut en fait utiliser les commandes L et R :

SQL> alter user SYSTEM identified by drowssap;
 
User altered.
 
SQL> L
  1* alter user SYSTEM identified by drowssap
SQL> R
  1* alter user SYSTEM identified by drowssap
 
User altered.
 
SQL> c/drowssap/password
  1* alter user SYSTEM identified by password
SQL> R
  1* alter user SYSTEM identified by password
 
User altered.

La commande L permet de visualiser la dernière action, la commande R permet de la rejouer. Pour modifier la dernière action, il faut utiliser la commande c/texte_avant/texte_apres.

La solution rlwrap

Derrière ce nom se cache un petit utilitaire qui vient se greffer à SQL*Plus et rajoute l’utilisation de la bibliothèque readline afin de permettre d’utiliser l’historique SQL*Plus avec les flèches.

Il est disponible dans les dépôts Debian/Ubuntu/Fedora (liste sans doute non exhaustive). A défaut, vous pouvez télécharger la source ici afin de l’installer.

Une fois installé, vous devez remplacer vos commandes « sqlplus » par « rlwrap sqlplus » :

ora102@bddhost:~$ rlwrap sqlplus /nolog

Afin de rendre son utilisation plus transparente, il est possible de l’utiliser via un alias. Ajoutons-le :

ora102@bddhost:~$ echo "alias sqlplus='rlwrap sqlplus'" >> ~/.bashrc

Puis appliquons les changements apportés :

ora102@bddhost:~$ source ~/.bashrc

C’est fini. Désormais, en appelant l’exécutable sqlplus, rlwrap sera appelé de façon transparente et permettra l’utilisation des flèches pour visualiser ou modifier l’historique des commandes PL/SQL jouées.



Commentaires (2)

Gardey24 septembre 2010 à 18 h 21 min

Merci pour ces informations,
J’ai une question, comment installe t-on sqlplus sous ubuntu? Je n’ai besoin que du oracle client car j’attaque un serveur distant.

Nicolas27 septembre 2010 à 2 h 50 min

Comme Oracle Database n’est pas un produit libre, il ne figure pas dans les dépôts Ubuntu. Tu dois donc ajouter le dépôt Oracle, mettre à jour la liste des paquets, et installer oracle-xe-client.

La procédure est décrite ici : http://doc.ubuntu-fr.org/oci8 (partie « Ajout des sources logicielles »)

Pour mémoire, Oracle XE est une version gratuite et limitée d’Oracle Database.

Enfin, il faut ajouter à ta variable $PATH le chemin suivant :

/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin

Laisser un commentaire

Votre commentaire