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.

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.
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