SQL*Plus-Prompt in glogin.sql setzen

Die Datei glogin.sql im Verzeichnis $ORACLE_HOME/sqlplus/admin wird bis Oracle 10.1 bei jedem Aufruf von SQL*Plus, seit 10.1 bei jeder neuen Verbindung zu einer Datenbank mit SQL*Plus aufgerufen. SQL*Plus führt alle darin enthaltenen Befehle aus. Anschließend wird die Datei login.sql ausgeführt. Deren Pfad kann abweichend vom Standard mit der Umgebungsvariablen SQLPATH gesetzt werden.

Nutzt man SQL*Plus, so bietet es sich an, die Eingabeaufforderung mit Informationen wie dem eingeloggten Benutzer und der genutzten Datenbankverbindung zu versehen. Dazu editiert man einfach die Datei glogin.sql in $ORACLE_HOME/sqlplus/admin und fügt beispielsweise folgende Zeile an:

Oracle-Datenbanken: SQLPlus*Prompt setzen
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER> "

Ihr Prompt sieht dann beispielsweise so aus:

aschmidt@seg_db>
 

Mit _DATE kann zusätzlich das aktuelle Datum im Prompt gesetzt werden. _O_RELEASE enthält die Release-Nummer, bspw. "1002000400" für 10.2.0.4. _PRIVILEGE zeigt Privilegien wie "AS SYSDBA", "AS SYSOPER" oder "AS SYSASM". Mit _SQLPLUS_RELEASE können Sie das Release des aktuell genutzten SQL*Plus Binary ansteuern. 

Auch eigene Definitionen lassen sich ins Prompt aufnehmen. So können Sie die Oracle-Version ermitteln und diese im Prompt anzeigen lassen:

Oracle-Datenbanken: Versionsnummer im Prompt anzeigen
DEFINE _CURRVER=NN
COL ver noprint new_value _CURRVER
SET TERMOUT OFF
SELECT 
   substr(version, 1, instr(version, '.', 1, 2)-1) AS ver
FROM 
   product_component_version
WHERE 
   product LIKE 'Oracle Database%';
 
SET TERMOUT ON
SET SQLPROMPT "'<'_CURRVER>':'_USER'@'_CONNECT_IDENTIFIER>"

Bereits seit Oracle Database 10.1 wird die glogin.sql bei jedem erfolgreichen Connect ausgeführt und nicht mehr wie früher nur initial bei einem Start von SQL*Plus. Ihr Prompt wird daher bei jedem Connect aktualisiert.

Es bietet sich natürlich an, gleich um weitere Standard-Settings zu erweitern. So können das Ausgabe-Format von Datums- und Zeitangaben, die Länge der Zeilen, Spaltenformate und vieles mehr gesetzt werden:

Oracle-Datenbanken: glogin.sql setzen
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER> "
SET pagesize 1000
SET linesize 300
SET trimspool ON
SET trimout   ON
 
ALTER SESSION 
  SET NLS_DATE_FORMAT = 'dd.mm.yyyy hh24:mi:ss';
 
COL next_change#  FORMAT 999,999,999,999,999
COL first_change# FORMAT 999,999,999,999,999
COL SCN           FORMAT 999,999,999,999,999
COL name          FORMAT a40