SQL*Plus kann nun den Verlauf der ausgeführten Befehle beibehalten und Sie können diese Befehle aus dem Verlauf sehen und ausführen. Dieses Feature kann bei der Fehlerbehebung oder beim Ausführen eines Prozesses, der dieselben Befehle wiederholt erfordert, sehr hilfreich sein. Jeder der zuvor ausgeführten Befehle kann zurückgerufen und mithilfe der folgenden Syntax, "history XX run", erneut ausgeführt werden:
sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Apr 20 14:14:51 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> help hist
HISTORY
-------
Stores, lists, executes, edits of the commands
entered during the current SQL*Plus session.
HIST[ORY] [N {RUN | EDIT | DEL[ETE]}] | [CLEAR]
N is the entry number listed in the history list.
Use this number to recall, edit or delete the command.
Example:
HIST 3 RUN - will run the 3rd entry from the list.
HIST[ORY] without any option will list all entries in the list.
Standardmäßig ist der Verlauf deaktiviert.
Die Verwendung des Befehls wird in der aktuellen SQL*PLUS Sitzung aktiviert oder deaktiviert:
SQL> set history on
SQL> show history
History is ON and set to “100”
SQL> set history off
SQL> show history
History is OFF
Per Default bewahrt history 100 Befehle auf.
Um 1.000 Befehle in der history beizubehalten geben wir ein:
SQL> set history 1000
SQL> show history
History is ON and set to “1000”
SQL> select name from v$database;
NAME
---------
DB122
SQL> select name, database_role from v$database;
NAME DATABASE_ROLE
--------- ----------------
DB122 PRIMARY
SQL>
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 – Production
CORE 12.2.0.1.0 Production
TNS for Linux: Version 12.2.0.1.0 – Production
NLSRTL Version 12.2.0.1.0 - Production
SQL>
SQL> hist list
1 select name from v$database;
2 select name, database_role from v$database;
3 select banner from v$version;
SQL>
SQL> hist 1 run
NAME
---------
DB122
SQL> hist 3 run
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 – Production
CORE 12.2.0.1.0 Production
TNS for Linux: Version 12.2.0.1.0 – Production
NLSRTL Version 12.2.0.1.0 – Production
SQL>
SQL> hist clear
SQL>
SQL> hist list
SP2-1651: History list is empty.
SQL>
SQL> select name from v$database;
NAME
---------
DB122
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 – Production
CORE 12.2.0.1.0 Production
TNS for Linux: Version 12.2.0.1.0 – Production
NLSRTL Version 12.2.0.1.0 - Production
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db122
SQL>
SQL> hist list
1 select name from v$database;
2 select banner from v$version;
3 select instance_name from v$instance;
SQL>
Editieren eines vorhergehenden Befehl:
SQL> hist 2 edit
Oracle SQL*PLUS öffnet den Notepad Editor zum Editieren unter Windows. Auf Linux Umgebung wird der vi editor verwendet.
SQL>
SQL> hist list
1 select name from v$database;
2 select banner from v$version;
3 select instance_name from v$instance;
4 select banner from v$version
where rownum <=1;
SQL> hist 4 run
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> hist
1 select name from v$database;
2 select banner from v$version;
3 select instance_name from v$instance;
4 select banner from v$version
where rownum <=1;
Löschen von einem vorhergehendem Befehl:
SQL> hist 2 del
SQL> hist
1 select name from v$database;
2 select instance_name from v$instance;
3 select banner from v$version
where rownum <=1;
SQL>
SQL> hist clear
SQL>
SQL> set history off
SQL>
SQL>
SQL> hist list
SP2-1650: History is off, use "SET HIST[ORY] ON" to enable History.
SQL>
Bemerkung:
Der HISTORY-Befehl enthält einige Einschränkungen.
Eine Einschränkung ist, dass es sich um ein SQL*PLUS-spezifisches Feature handelt. Wird ein anderes Tool (wie zum Beispiel Toad) verwendet, kann die history des SQL*PLUS nicht genutzt werden.
Darüber hinaus ist history sitzungsspezifisch. Wir sehen also nur die Befehlshistorie ihrer aktuellen Session, sprich: seit der Anmeldung.
Das ist von Nachteil, falls wir vergessen haben die Historie zu Beginn der Sitzung einzuschalten. Für dieses Problem gibt es aber Abhilfe: Die Verlaufseinstellung kann standardmäßig aktiviert werden, wenn die glogin.sql-Datei entsprechend angepasst wird. Diese Datei befindet sich unter $ORACLE_HOME/sqlplus/admin. Alles, was erforderlich ist, ist das Hinzufügen des Befehls "set history on" zu der Datei wie folgt:
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.