Navigation mit Pfeilstasten durch SQL*Plus unter Linux

Table of Contents

Ziel

Wird unter einem Windows Betriebssystem eine SQL*Plus Sitzung aufgebaut, ist es möglich mithilfe der Pfeilstasten der Tastatur (Rauf- / Runtertaste) durch die Befelhistorie zu navigieren. Diese Funktionalität erspart oft lästige Tipparbeit, wenn einer der zuvorherigen Befehle nochmal ausgeführt werden soll.

 

Unter Linux steht diese Navigationsmöglichkeit von Haus aus nicht zur Verfügung.

 

Problem

Versucht man unter einem Linix Betriebssystem mithilfe der Pfeiltasten durch die Historie einer SQL*Plus Session zu navigieren erhält man folgendes Ergebnis.

[oracle@rac1 ~]$ sqlplus / as sysdba  SQL*Plus: Release 11.2.0.2.0 Production on Mon Feb 21 13:20:07 2011  Copyright (c) 1982, 2010, Oracle.  All rights reserved.   Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options  SQL> select name from v$database;  NAME --------------------------- TESTDB  SQL> ^[[A^[[B^[[A

 

Wie man sieht kann ich nicht mit den Pfeiltasten die vorherige SELECT Anweisung erneut aufrufen. Durch die Reload Funktion (r) von SQL*Plus kann ich den letzten Befehl erneut ausführen. Dies funktioniert aber zum Beispiel nicht bei einem PL/SQL Aufruf.  

SQL> r   1* select name from v$database  NAME --------------------------- TESTDB

Lösung

Die Lösung dieses Problem besteht in der Installation des rlwrap Paketes. Das rlwrap Paket ist ein sogenannter “Readline Wrapper”. 

 

Bereits fertig kompilierte Versionen des Paketes kann man zum Beispiel über http://www.pkgs.org beziehen. Für meine Testumgebung werde ich das Paket für CentOS 5.5 in der 64-bit Version herunterladen.

 

Die Installation des Paketes erfolgt mit rpm.

[root@rac1 tmp]# rpm -ivh rlwrap-0.37-1.el5.x86_64.rpm warning: rlwrap-0.37-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6 Preparing...                ########################################### [100%]    1:rlwrap                 ########################################### [100%]

Ruft man nun SQL*Plus mithilfe des rlwrap Paketes auf, ist die Navigiation mit den Pfeiltasten möglich.

[oracle@rac1 ~]$ rlwrap sqlplus / as sysdba  SQL*Plus: Release 11.2.0.2.0 Production on Mon Feb 21 13:35:51 2011  Copyright (c) 1982, 2010, Oracle.  All rights reserved.   Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options  SQL> select name from v$database;  NAME --------------------------- TESTDB  SQL> select name from v$database;  NAME --------------------------- TESTDB

Für einen vereinfachten Aufruf von SQL*Plus in Kombination mit dem rlwrap Paket, kann man sich einen Alias anlegen.

[oracle@rac1 ~]$ alias sqlplus="rlwrap sqlplus" [oracle@rac1 ~]$ sqlplus / as sysdba

Leave a Reply

Your email address will not be published.