Marco Burmeister

  private Homepage



Oracle - Linux Bash / Z-Shell Prompt im Multitenant Umfeld

Im Oracle Multitenant Umfeld ist das Thema Linux Prompt u.U. interessanter als es vorher war.
Da nun zwei Umgebungsvariablen steuern können, ob eine Anmeldung gegen die CDB (Container) oder die PDB (Pluggable Database) geht, macht es für mich auch Sinn, den Linux Prompt so anzupassen, dass die aktuellen Einstellungen widergespiegelt werden.

Im Ergebnis wird in dem hier beschriebenen Beispiel der Prompt wie folgt ausssehen:
Syntax:
[OS Username]@[Servername]:SID=[ORACLE_SID|N/A]:PDB=[ORACLE_PDB_SID|N/A]
Beispiel:
oracle@dbserver:SID=FREE:PDB=FREEPDB1

Parameter/VariableWert
OS Usernameoracle
OS Serveramedbserver
ORACLE_SIDFREE
ORACLE_PDB_SIDFREEPDB1

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!

Die Seite ist in die folgenden Bereiche eingeteilt:




top Linux Prompt Oracle Multitenant

Vorbedingung

Ich gehe davon aus, dass wir eine Oracle Multitenant Datenbank vorliegen haben und das Environment grundsätzlich korrekt ist.
Die Beispiele behandeln die Bash (Bourne Again Shell) und die Z-Shell.

Hintergrund-Information

Der Prompt wird durch die hier dokumentierte Weise so eingestellt, dass beim Wechsel der Variablen ORACLE_SID oder ORACLE_PDB_SID beim nächsten Erscheinen des Prompts, die aktuellen Werte angezeigt werden.
Für die Bash und die Z-Shell habe ich jeweils zwei Varianten. Eine Variante nutzt die Prompt-Variablen, die die jeweilige Shell bietet. Die zweite Variante arbeitet teilweise mit OS-Befehlen.
Warum diese beiden Varianten ?
Ich habe es tatsächlich mit Rechnern zu tun gehabt, bei denen das Setzen der Shell-Prompt-Variablen zu keinem Ergebnis führte. Ohne da weiter Arbeit zu investieren, habe ich für mich für diese Fälle dann entschieden, eine Fallback-Lösung zu nutzen.

Sollte ein Wert für ORACLE_SID oder ORACLE_PDB_SID nicht gesetzt sein, so wird an der Stelle dann N/A ausgegeben.

Bash

Hier folgen die Varianten für die Bash. Variante 1 ist die bevorzugte. Nur falls die Variante nicht funktioniert, sollte die zweite Variante verwendet werden.
Die folgenden Zeilen müssen in die passende Konfigurationsdatei eingetragen werden!

Variante 1
if [ -n "$BASH_VERSION" ]; then
  PROMPT_COMMAND='
  PS1="[\u@\h:SID=${ORACLE_SID:-N/A}:PDB=${ORACLE_PDB_SID:-N/A}]$ "
  '
fi
Variante 2 (Fallback)
if [ -n "$BASH_VERSION" ]; then
  PROMPT_COMMAND='
  PS1="[$(whoami)@$(hostname -s):SID=${ORACLE_SID:-N/A}:PDB=${ORACLE_PDB_SID:-N/A}]$ "
  '
fi


Z-Shell

Hier folgen die Varianten für die Z-Shell. Variante 1 ist die bevorzugte. Nur falls die Variante nicht funktioniert, sollte die zweite Variante verwendet werden.
Die folgenden Zeilen müssen in die passende Konfigurationsdatei eingetragen werden!

Variante 1
if [ -n "$ZSH_VERSION" ]; then
  setopt PROMPT_SUBST
  PS1='[%n@%m:SID=${ORACLE_SID:-N/A}:PDB=${ORACLE_PDB_SID:-N/A}]$ '
fi
Variante 2 (Fallback)
if [ -n "$ZSH_VERSION" ]; then
  setopt PROMPT_SUBST
  PS1='[$(whoami)@$(hostname -s):SID=${ORACLE_SID:-N/A}:PDB=${ORACLE_PDB_SID:-N/A}]$ '
fi

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!


top Links zum Thema


Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!