Letzte Änderung 28.08.2008
English Version

rlwrap_ext


rlwrap-ext – eine Ergänzung für rlwrap

Beschreibung

Wer rlwrap mit sqlplus, rman, oder anderen Oracle-Tools zusammen verwendet, sollte auch alle Features der readline-Bibliothek ausnutzen - rlwrap kann nämlich mehr: Commandline completion, zum Beispiel. Sie geben die Buchstaben sel ein, drücken die Tabulatortaste, und rlwrap ergänzt das Wort zu SELECT.

Klingt nicht spektakulär?
Ist es auch nicht, aber seeeehr hilfreich, weil damit auch die Namensvervollständigung (grauenhaftes Wort, aber wie würden sie name completion übersetzen?) für alles Mögliche aktivieren kann.
Nämlich für:

Damit das funktioniert, braucht man zwei Dinge:

  1. man muss rlwrap eine (oder mehrere) Datei(en) mitgeben, wo all die schönen Schlüsselworte drin stehen
  2. und
  3. man muss rlwrap beibringen, welche Zeichen in SQL innerhalb eines Wortes vorkommen dürfen.
    Da die readline-Bibliothek für die Bash entwickelt wurde, werden die Zeichen $ und # nicht als Teil eines Wortes akzeptiert – das ist im Falle von SQL falsch. Um das zu beheben, habe ich ein kleines Script namens sql+ geschrieben, das in den Packages enthalten ist. Damit lässt sich der Aufruf von rlwrap vereinfachen. Anstatt sqlplus direkt aufzurufen, können sie das Script sql+ aufrufen. Ohne Parameter ruft es sqlplus / as sysdba auf, andernfalls übergibt es seine Aufrufparameter an sqlplus.

Download

Aus der Praxis sind dabei ein paar Dateien inklusive aufrufendem Script entstanden, die hier zum Download bereitstehen:

Alles, was sie machen müssen (nachdem sie rlwrap erfolgreich installiert haben), ist die heruntergeladene Datei zu entpacken und die Install-Anweisung zu befolgen, die keine großen Anforderungen stellt.

Welche Version?

Im Prinzip spielt es keine Rolle, welche Oracle Version sie mit welcher Version von rlwrap-extensions kombinieren, denn rlwrap ist es herzlich egal, mit welcher Oracle Version es spricht. Es geht hier nur um die (nicht) vorhandenen Schlüsselworte für rlwrap. Im schlimmsten Fall schlägt rlwrap eine View / ein Package / oder sonstwas vor, was es in der momentan verwendeten Oracle Version nocht nicht oder nicht mehr gibt bzw kennt es ein paar Objektnamen nicht, die die aktuelle Version hat.

Es macht allerdings keinen Sinn, mehrere Versionen von rlwrap-extensions übereinander zu installieren – im Zweifelsfall nehmen sie die jüngste Version. Sie können allerdings die verschiedenen Versionen jede in ein eigenes Verzeichnis installieren und das Script sql+, das normalerweise in /usr/local/bin installiert wird, für jede Version anpassen und ins entsprechende $ORACLE_HOME/bin kopieren. Damit erhält jede Oracle-Version ihre eigene Version der rlwrap-extensions.

Der Aufruf von Oracle command line tools mit rlwrap-extensions

Wenn sie rman, asmcmd oder adrcli (nur 11g) mit rlwrap aufrufen, sollten sie den Schalter -i verwenden. Damit zwingen sie rlwrap in den case-insensitive Modus. Andernfalls findet rlwrap möglicherweise die Schlüsseworte aus der Liste nicht.
rlwrap -i asmcmd
oder
rlwrap -i rman target ...