21. Fehler und deren Beseitigung
Ziele
Willkommen zum einundzwanzigsten und letzten Tag dieses Kurses. Die heutige Lektion zeigt Ihnen ...
Einführung
Heute lernen Sie verschiedene Fehler kennen, die sowohl dem Einsteiger als auch dem Profi beim Einsatz von SQL unterlaufen können. Fehler lassen sich nie völlig vermeiden. Wenn man aber mit einem weiten Bereich von Fehlern vertraut ist, kann man sie in einer möglichst kurzen Zeit auflösen.
Die Beispiele arbeiten mit Personal Oracle8. Die angesprochenen Fehler können bei Ihrer konkreten Implementierung hinsichtlich Numerierung und Benennung abweichen. Die SQL-Anweisungen wurden mit SQL*Plus ausgeführt. Die Einstellungen ECHO und FEEDBACK sind auf ON gesetzt, damit die Anweisungen zu sehen sind. |
Denken Sie daran, daß bestimmte Fehler unmittelbar zu Fehlermeldungen führen, während sich andere Fehler in der Logik verstecken und erst im weiteren Verlauf in Form ernsthafter Probleme zutage treten. Mit einem geübten Blick für das Detail lassen sich zwar viele Probleme vermeiden, trotzdem wird man immer wieder über Fehler stolpern.
Häufige Fehler
Dieser Abschnitt beschreibt häufige Fehler, die man bei der Ausführung aller Arten von SQL-Anweisungen erhält. Viele Fehler sind einfach zu erkennen, daß man sich wahrscheinlich nur ärgert, sie übersehen zu haben, während andere, scheinbar offensichtliche Fehler auf eine falsche Spur führen.
Tabelle oder View nicht vorhanden
Wenn eine Fehlermeldung darauf hinweist, daß die angesprochene Tabelle nicht existiert, scheint auf den ersten Blick alles klar zu sein. Dazu folgendes Beispiel:
SQL> @tables.sql
SQL> spool tables.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select owner|| '.' ||table_name
2 from sys.dba_table
3 where owner = 'SYSTEM'
4 order by table_name;
5 /
from sys.dba_table
*
FEHLER in Zeile 2:
ORA-00942: Tabelle oder View nicht vorhanden
Beachten Sie das Sternchen unter dba_table. Der korrekte Tabellenname lautet sys.dba_tables. Es wurde also ein s im Tabellennamen vergessen. |
Was hat eine derartige Fehlermeldung aber zu bedeuten, wenn man genau weiß, daß die Tabelle existiert? In diesem Fall kann ein Sicherheitsproblem vorliegen - die Tabelle existiert zwar, aber man hat keinen Zugriff darauf. Der Datenbank-Server gibt uns damit höflich zu verstehen: »Sie haben keine Berechtigung, auf diese Tabelle zuzugreifen!«
Benutzername oder Kennwort ungültig
SQL*Plus: Release 8.0.3.0.0 - Production on Di Dez 16 0:58:48 1997
(c) Copyright 1997 Oracle Corporation. All rights reserved.
Benutzernamen eingeben: rplew
Kennwort eingeben: *******
FEHLER:
ORA-01017: invalid username/password; logon denied
Benutzernamen eingeben:
Diese Fehlermeldung erscheint, wenn man entweder den falschen Benutzernamen oder das falsche Kennwort eingegeben hat. Geben Sie den Benutzernamen bzw. das Kennwort noch einmal ein. Falls der erneute Versuch scheitert, sollten Sie Ihr Kennwort zurücksetzen lassen. Wenn Sie sicher sind, daß Benutzername und Kennwort stimmen, dann vergewissern Sie sich, ob Sie sich überhaupt bei der richtigen Datenbank anmelden, falls Sie Zugriff auf mehrere Datenbanken haben. |
Schlüsselwort FROM nicht angegeben
SQL> spool tblspc.lst
SQL> set feedback on;
SQL> set pagesize 1000;
SQL> select substr(tablespace_name,1,15) a,
2 substrfile_name,1,45) c, bytes
3 from sys.dba_data_files
4 order by tablespace_name;
substrfile_name,1,45) c, bytes
*
FEHLER in Zeile 2:
ORA-00923: Schlüsselwort FROM nicht an erwarteter Stelle gefunden
SQL> spool off
SQL>
Gruppenfunktion nicht zulässig
SQL> select count(nachname), vorname, telefon
2 from mitarbeiter
3 group by count(nachname), vorname, telefon
4 /
group by count(nachname), vorname, telefon
*
FEHLER in Zeile 3:
ORA-00934: Gruppenfunktion ist hier nicht zulässig
Wie bei jeder Gruppenfunktion darf man COUNT nicht in der GROUP BY-Klausel verwenden. In der GROUP BY-Klausel lassen sich nur Spaltenfunktionen und nichtgruppierende Funktionen wie SUBSTR angeben. |
Die Funktion COUNT wird auf Gruppen in der Abfrage ausgeführt. |
Die korrigierte Anweisung mit der richtigen Syntax lautet:
SQL> select count(nachname), vorname, telefon
2 from mitarbeiter
3 group by nachname, vorname, telefon;
Spaltenname ungültig
SQL> spool tables.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select owner|| '.' ||tablename
2 from sys.dba_tables
3 where owner = 'SYSTEM'
4 order by table_name
5 /
select owner|| '.' ||tablename
*
FEHLER in Zeile 1:
ORA-00904: Ungültiger Spaltenname
SQL> spool off
SQL>
Schlüsselwort fehlt
SQL> create view ma_view
2 select * from mitarbeiter_tbl
3 /
select * from mitarbeiter_tbl
*
FEHLER in Zeile 2:
ORA-00905: Schlüsselwort fehlt
Linke Klammer fehlt
SQL> insert into personal_tbl values
2 '303785523','SMITH','JOHN','JAY','MALE','10.01.50')
/
'303785523','SMITH','JOHN','JAY','MALE','10.01.50')
*
FEHLER in Zeile 2:
ORA-00906: Linke Klammer fehlt
In Zeile 2 fehlt eine Klammer vor der Sozialversicherungsnummer. Die richtige Syntax sieht folgendermaßen aus: SQL> insert into personal_tbl values |
Rechte Klammer fehlt
SQL> @rklammer.sql
SQL> spool rklammer.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select substr(tablespace_name,1,15 a,
2 substr(file_name,1,45) c, bytes
3 from sys.dba_data_files
4 order by tablespace_name;
select substr(tablespace_name,1,15 a,
*
FEHLER in Zeile 1:
ORA-00907: Rechte Klammer fehlt
SQL> spool off
SQL>
In Zeile 1 fehlt die rechte Klammer des substr-Ausdrucks. Die korrekte Syntax sieht folgendermaßen aus: SQL> select substr(tablespace_name,1,15) a, |
Komma fehlt
SQL> spool komma.lst
SQL> set echo on
SQL> set feedback on
SQL> insert into personal_tbl values
2 ('303785523' 'SMITH','JOHN','JAY','MALE','10.01.50')
3 /
('303785523' 'SMITH','JOHN','JAY','MALE','10.01.50')
*
FEHLER in Zeile 2:
ORA-00917: Komma fehlt
In Zeile 2 fehlt ein Komma zwischen der Sozialversicherungsnummer und SMITH. |
Spalte nicht eindeutig definiert
SQL> spool mehrd.lst
SQL> set echo on
SQL> set feedback on
SQL> select g.svn, name, m.adresse, m.telefon
2 from mitarbeiter m,
3 gehalt g
4 where m.svn = g.svn;
select g.svn, name, m.adresse, m.telefon
*
FEHLER in Zeile 1:
ORA-00918: Spalte nicht eindeutig definiert
SQL> spool off
SQL>
SQL-Befehl nicht korrekt beendet
SQL> create view ma_tbl as
2 select * from mitarbeiter
3 order by name
4 /
order by name
*
FEHLER in Zeile 3:
ORA-00933: SQL-Befehl wurde nicht korrekt beendet
Ausdruck fehlt
SQL> spool ausdr.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select owner|| '.' ||table,
2 from sys.dba_tables
3 where owner = 'SYSTEM'
4 order by table_name
5 /
select owner|| '.' ||table,
*
FEHLER in Zeile 1:
ORA-00936: Ausdruck fehlt
Beachten Sie das Komma nach table auf der ersten Zeile. Der Abfrageprozessor sucht demzufolge nach einer weiteren Spalte in der SELECT-Klausel und erwartet noch nicht die FROM-Klausel. |
Anzahl der Argumente reicht nicht aus
SQL> spool argum.lst
SQL> set echo on
SQL> set feedback on
SQL> set pagesize 1000
SQL> select substr(tablespace_name,1,15) a,
2 decode(substr(file_name,1,45)) c, bytes
3 from sys.dba_data_files
4 order by tablespace_name;
decode(substr(file_name,1,45)) c, bytes
*
FEHLER in Zeile 2:
ORA-00938: Anzahl der Argumente reicht für Funktion nicht aus
SQL> spool off
SQL>
Für die DECODE-Funktion sind nicht genügend Argumente angegeben. Prüfen Sie Ihre Implementierung hinsichtlich der passenden Syntax. |
Nicht genügend Werte
SQL> spool werte.lst
SQL> set echo on
SQL> set feedback on
SQL> insert into mitarbeiter values
2 ('303785523','SMITH','JOHN')
3 /
insert into mitarbeiter values
*
FEHLER in Zeile 1:
ORA-00947: Anzahl der Werte reicht nicht aus
SQL> spool off
SQL>
Es fehlt ein Spaltenwert. Führen Sie einen DESCRIBE-Befehl für die Tabelle aus, um die fehlende Spalte zu ermitteln. Daten lassen sich nur dann gezielt einfügen, wenn man auch die zugehörigen Spalten auflistet. Das nächste Beispiel zeigt eine entsprechende Anweisung: |
SQL> set echo on
SQL> set feedback on
SQL> insert into mitarbeiter (svn, name, vorname)
2 values('303785523','SMITH','JOHN')
3 /
1 Zeile wurde erstellt.
Verstoß gegen Integritätsregel - übergeordneten Schlüssel nicht gefunden
SQL> insert into gehalt values
2 ('123456789','SMITH');
3 /
insert into gehalt values
*
FEHLER in Zeile 1:
ORA-02291: Verstoß gegen Integritätsregel (SYS.FK_NAME). Übergeordn. Schlüssel nicht gefunden
Oracle nicht verfügbar
SQL*Plus: Release 8.0.3.0.0 - Production on Di Dez 16 3:19:0 1997
(c) Copyright 1997 Oracle Corporation. All rights reserved.
FEHLER:
ORA-01034: ORACLE not available
ORA-09243: smsget: error attaching to SGA
OSD-04101: Ungültige SGA: SGA ist nicht initialisiert
Benutzernamen eingeben:
Eingefügter Wert zu groß für Spalte
SQL> spool wert.lst
SQL> set feedback on
SQL> insert into gehalt values
2 ('303785523','SMITH-JOHNSON OF HAMPSHIRE','JOHN');
('303785523','SMITH-JOHNSON OF HAMPSHIRE','JOHN')
*
FEHLER in Zeile 2:
ORA-01401: Eingefügter Wert zu groß für Spalte
SQL> spool off
SQL>
Servicename kann nicht aufgelöst werden
SQL> connect rplew/xxxx@database1
FEHLER:
ORA-12154: TNS:Der Servicename konnte nicht aufgelöst werden.
Achtung: Sie sind nicht mehr mit ORACLE verbunden.
Berechtigungen nicht zureichend
SQL> grant select on personal to frank;
grant select on personal to frank
*
FEHLER in Zeile 1:
ORA-01749: An/von sich selbst können Sie keine Berechtigungen erteilen/entziehen
SQL> grant select on gehalt to ron;
grant select on gehalt to ron
*
FEHLER in Zeile 1:
ORA-01031: Unzureichende Berechtigungen
Ungültige Zeichen in einer Anweisung
Sonderzeichen können die Fehlersuche in einer SQL-Anweisung erschweren. Ungültige Zeichen treten zum Beispiel auf, wenn man die (æ_)-Taste während der Eingabe einer Anweisung in den Puffer oder in eine Datei benutzt. Je nach Interpretation der Tastaturcodes kann die (æ_)-Taste zu ungültigen Zeichen in der Anweisung führen, selbst wenn diese Zeichen nicht sichtbar sind.
Datei kann nicht angelegt werden
Dieser Fehler hat eine Reihe von Ursachen. Häufig ist der angegebene Datenträger voll, oder es sind nicht die geeigneten Berechtigungen für das Dateisystem vorhanden. Im ersten Fall kann man überflüssige Dateien löschen. Wenn die Sicherheitseinstellungen für das Netzlaufwerk nicht in Ordnung sind, nehmen Sie die erforderlichen Korrekturen vor. Da dieser Fehler mehr das Betriebssystem als Oracle selbst betrifft, sollten Sie sich mit Ihrem Systemadministrator in Verbindung setzen.
Logische Fehler
Die bisher behandelten Fehler in SQL-Anweisungen haben direkt zu Fehlermeldungen geführt. Die meisten dieser Fehler sind auf den ersten Blick zu erkennen und problemlos zu beseitigen. Als nächstes gehen wir auf Fehler ein, die mehr (oder weniger) logischer Natur sind.
Reservierte Wörter in SQL-Anweisung
SQL> select sysdate DATE
2 from dual;
select sysdate DATE
*
FEHLER in Zeile 1:
ORA-00923: Schlüsselwort FROM nicht an erwarteter Stelle gefunden
SQL> select sysdate "DATE"
2 from dual;
DATE
--------
15.12.97
Eine Liste der reservierten Wörter sollten Sie Ihrer Datenbankdokumentation entnehmen, da sich die reservierten Wörter zwischen den einzelnen Implementierungen unterscheiden. |
Außer bei zusammengesetzten Bezeichnungen (wie PREIS PRO STÜCK) und reservierten Wörtern sind Anführungszeichen für den Aliasnamen einer Spalte nicht unbedingt erforderlich. Im folgenden Beispiel kann man auf die Anführungszeichen verzichten, da HEUTE kein reserviertes Wort ist.
SQL> select sysdate HEUTE
2 from dual;
HEUTE
--------
15.12.97
DISTINCT bei Auswahl mehrerer Spalten
SQL> select distinct(stadt), distinct(plz)
2 from adressen;
select distinct(stadt), distinct(plz)
*
FEHLER in Zeile 1:
ORA-00936: Ausdruck fehlt
Eine Stadt kann durchaus mehrere Postleitzahlen haben. In der Regel sollte man mit dem Befehl DISTINCT nur auf einer ausgewählten Spalte arbeiten. |
Löschen einer nicht bezeichneten Tabelle
Geben Sie beim Löschen einer Tabelle immer
Die riskante Syntax für das Löschen einer Tabelle lautet:
SQL> drop table personal;
Die nächste Anweisung ist wesentlich sicherer, da sie den Eigentümer der zu löschenden Tabelle angibt.
SQL> drop table ron.personal;
Öffentliche Synonyme in einer Datenbank mit mehreren Schemata
Synonyme erleichtern den Benutzern das Leben. Allerdings öffnen Synonyme Tabellen, die eventuell nicht alle Benutzer sehen sollen. Lassen Sie Vorsicht walten, wenn Sie öffentliche Synonyme vergeben, insbesondere in einer Umgebung mit mehreren Schemata.
Das gefürchtete kartesische Produkt
SQL> select a.svn, p.nachname
2 from adressen a,
3 personal p;
SVN NACHNAME
--------- ---------------
303785523 SMITH
313507927 SMITH
490552223 SMITH
312667771 SMITH
420001690 SMITH
303785523 JONES
313507927 JONES
490552223 JONES
312667771 JONES
420001690 JONES
303785523 OSBORN
313507927 OSBORN
490552223 OSBORN
312667771 OSBORN
420001690 OSBORN
303785523 JONES
313507927 JONES
490552223 JONES
312667771 JONES
420001690 JONES
16 Zeilen ausgewählt.
Dieses Ergebnis entsteht, wenn man die Tabellen in der WHERE-Klausel nicht verknüpft. Beide Tabellen enthalten jeweils 4 Zeilen. In der Ergebnismenge sollten daher ebenfalls nur 4 Zeilen erscheinen. Statt dessen erhält man 16 Zeilen. Durch die fehlende Verknüpfung in der WHERE-Klausel wird jede Zeile in der ersten Tabelle mit jeder Zeile in der zweiten Tabelle kombiniert. Die Gesamtzahl der Zeilen ergibt sich aus dem Produkt der Zeilenzahlen beider Tabellen, im Beispiel also 4 Zeilen mal 4 Zeilen gleich 16 Zeilen. Dieses Demonstrationsbeispiel verhält sich demnach noch harmlos. Normalerweise enthalten die Tabellen in einer echten Datenbank wesentlich mehr als 4 Datenzeilen, vielleicht Tausende oder Millionen von Zeilen. In diesen Fällen brauchen Sie die Multiplikation gar nicht erst zu probieren, da die Abfrage sicherlich sofort aus dem Ruder läuft.
Verletzung von Eingabestandards
Die Einhaltung gewisser Standards bei der Eingabe bezeichnet man auch als Qualitätssicherung
Dateisysteme
Informieren Sie sich in der Dokumentation zu Ihrem Datenbanksystem, welche Vorschriften oder Empfehlungen für die Struktur des Dateisystems bestehen. Wenn Sie die entsprechenden Konventionen nicht einhalten, kann das zu schwer auffindbaren Fehlern führen.
Speicherparameter bei großen Tabellen
Die Standardparameter zur Speicherung von Tabellen unterscheiden sich zwar in den einzelnen Implementierungen, gewöhnlich sind die Bereiche aber ziemlich klein bemessen. Wenn man eine große oder dynamische Tabelle erstellt und dabei die Standardparameter für die Speicherung zugrunde legt, führt das mit der Zeit zu stark fragmentierten Tabellen, die als Bremse der Datenbankleistung wirken. Durch eine entsprechende Planung der zu erstellenden Tabellen läßt sich dieser Effekt vermeiden. Das folgende Beispiel verwendet die Optionen der Speicherparameter von Oracle.
SQL> create table test_tbl
2 (ssn number(9) not null,
3 name varchar2(30) not null)
4 storage
5 (initial extent 100M
6 next extent 20M
7 minextents 1
8 maxextents 121
9 pctincrease 0};
Objekte im Bereich der Systemtabellen
Die folgende Anweisung zeigt eine Tabelle, die im Tabellenbereich SYSTEM erzeugt wurde. Obwohl diese Anweisung keinen Fehler zurückgibt, führt sie wahrscheinlich in der Zukunft zu Problemen.
SQL> create table test_tbl
2 (ssn number(9) not null,
3 name varchar2(30) not null)
4 tablespace SYSTEM
5 storage
6 (initial extent 100M
7 next extent 20M
8 minextents 1
9 maxextents 121
10 pctincrease 0};
Die im folgenden Beispiel dargestellten Korrekturen sollen das genannte Problem vermeiden:
SQL> create table test_tbl
2 (ssn number(9) not null,
3 name varchar2(30) not null)
4 tablespace linda_ts
5 (initial extent 100M
6 next extent 20M
7 minextents 1
8 maxextents 121
9 pctincrease 0};
Oracle speichert im Tabellenbereich SYSTEM normalerweise nur Objekte, deren Eigentümer SYSTEM ist, beispielsweise Tabellen des Systemkatalogs. Falls Sie dynamische Tabellen in diesem Tabellenbereich unterbringen und diese Tabellen wachsen, wird unter Umständen der freie Platz zerstört oder zumindest aufgefüllt. Die Datenbank kann dadurch abstürzen und in einen nicht wiederherstellbaren Zustand gelangen. Speichern Sie deshalb die Anwendung und die Benutzertabellen in separat ausgewiesenen Tabellenbereichen. |
Fehler bei der Komprimierung großer Sicherungsdateien
Wenn man umfangreiche Exportoperationen durchführt und die Dateien nicht komprimiert, kann es zu einem Platzmangel bei der Zwischenspeicherung der Dateien kommen. Komprimieren Sie daher immer die zu exportierenden Dateien. Wenn Sie archivierte Protokolldateien auf der Festplatte statt auf Band speichern, können und sollten diese Dateien aus Platzgründen komprimiert werden.
Fehler bei der Planung der Systemressourcen
Bereits vor dem Erstellen der Datenbank sollten Sie die Systemressourcen einplanen. Ansonsten ist mit einer verminderten Leistung der Datenbank zu rechnen. Bestimmend für die Kalkulation der Systemressourcen ist der Einsatzzweck der Datenbank. Es ist also die Frage zu beantworten, ob die Datenbank für Transaktionen, als Data-Warehouse oder lediglich für Abfragen vorgesehen ist. Die Aufgaben der Datenbank beeinflussen die Anzahl und Größe von Rollback-Segmenten. Die Anzahl der Datenbankbenutzer geht in die Größenbemessung der Tabellenbereiche USERS und TEMP ein. Haben Sie genug Platz, um größere Tabellen aufzuteilen? Tabellen und Indizes sollten auf separaten Geräten gespeichert werden, um den Konkurrenzbetrieb der Laufwerke zu vermindern. Gleiches gilt für die Protokolle zur Wiederherstellung und die Tabellenbereiche für Daten. Die genannten Punkte stellen nur eine kleine Auswahl der Probleme dar, mit denen man es in bezug auf die Systemressourcen zu tun hat.
Probleme mit Daten vermeiden
Ihr Datenverarbeitungszentrum sollte ein eingerichtetes Sicherungssystem haben. Bei kleinen bis mittleren Datenbanken kann man die zusätzlichen Vorsichtsmaßnahmen mittels EXPORT vornehmen, um eine Sicherung der Daten zu gewährleisten. Von den Exportdateien sollte man Kopien anlegen und sie an einem anderen sicheren Platz aufbewahren. Denken Sie daran, daß es sich um große Dateien mit entsprechendem Platzbedarf handeln kann.
Suchen nach doppelten Datensätzen in der Datenbank
Wenn Ihre Datenbank perfekt geplant ist, sollten Sie keine Probleme mit doppelten Datensätzen haben. Duplikate lassen sich vermeiden, indem man mit Einschränkungen, Fremdschlüsseln und eindeutigen Indizes arbeitet.
Zusammenfassung
Viele verschiedene Arten von Fehlern - im wörtlichen Sinne Hunderte - können Ihnen und Ihren Daten im Wege stehen. Zum Glück sind die meisten Fehler nicht gefährlich und lassen sich leicht beseitigen. Allerdings gibt es auch das andere Extrem. Eine Fehlerkorrektur ist mit Umsicht vorzunehmen, weil sich der Fehler fortpflanzen kann, wenn man nicht die Wurzel des Problems beseitigt. Wenn Ihnen Fehler unterlaufen, was mit Sicherheit passiert, sollten Sie diese als lehrreiche Erfahrung ansehen.
Tag 21 bietet Ihnen lediglich eine Kostprobe der häufigsten Fehler in Personal Oracle8. Eine vollständige Fehlerliste und Vorschläge zur Lösung sollten Sie in der Dokumentation zu Ihrer Datenbank finden. |
Fragen & Antworten
Frage:
Es klingt so, als ob sich jeder Fehler beheben ließe. Warum sich also Gedanken machen?
Antwort:
Ja. Die meisten Fehler lassen sich leicht beheben. Aber angenommen, Sie löschen eine Tabelle in einer Produktionsumgebung. Vielleicht brauchen Sie Stunden oder Tage, um die Datenbank wiederherzustellen. Die Datenbank ist in dieser Zeit nicht betriebsbereit, und es fallen Überstunden an, um den Fehler zu beseitigen. Ihr Chef wird darüber nicht gerade glücklich sein.
Frage:
Gibt es todsichere Tips, wie man Fehler vermeidet?
Antwort:
Es liegt in der Natur des Menschen, Fehler zu machen. Allerdings lassen sich viele Fehler durch Training, Konzentration, Selbstvertrauen, eine gute Einstellung und eine streßfreie Arbeitsumgebung vermeiden.
Workshop
Kontrollfragen
1. Ein Benutzer ruft an und sagt: »Ich kann mich nicht in der Datenbank anmelden. Gestern lief alles noch wunderbar. Als Fehlermeldung erhalte ich den Hinweis auf ein ungültiges Kennwort. Können Sie mir helfen?« Welche Schritte sind in diesem Fall zu unternehmen?
2. Warum sollte man Tabellen mit einer Speicherklausel und Angaben zum Tabellenbereich erstellen?
Übungen
1. Angenommen, Sie haben sich in der Datenbank als SYSTEM angemeldet und möchten eine Tabelle namens HISTORY in Ihrem Schema löschen. Ihre reguläre Benutzer-ID lautet JSMITH. Wie sieht die korrekte Syntax aus, um diese Tabelle zu löschen?
2. Korrigieren Sie den folgenden Fehler:
SQL> select sysdate DATE
2 from dual;
select sysdate DATE
*
FEHLER in Zeile 1:
ORA-00923: Schlüsselwort FROM nicht an erwarteter Stelle gefunden