Diese verbesserten Fehlermeldungen im Vergleich zu 19c wollte ich mir einmal genauer ansehen und habe dazu den Inhalt der Datei $ORACLE_HOME/rdbms/mesg/oraus.msg sowohl des Developer-Releases (VBOX-Appliance) als auch einer 19c-Installation (Oracle Linux) ein wenig genauer betrachtet.
Die Historie der Datei reicht bis ins Jahr 1997 zurück und umfasst in der 23c-Variante zum Zeitpunkt dieses Artikels über 300 Einträge in Bezug auf Kommentare zu Änderungen an den Inhalten. Hier der erste als auch bisherige letzte Eintrag:
swerthei 08/13/97 - add 296, 297
harmanss 02/15/23 - Bug 34984262: Update error OER(43)
Liest man sich diese Historie durch, so gibt es durchaus interessante Kommentare. Manche sind mit einer Portion Humor versehen, andere enthalten abgekündigte Features und bereits im November 2022 finden sich die ersten Hinweise, die bisher bekannte XE-Version in "FREE"-Version zu ändern.
nrcorcor 02/15/18 - Bug 26398192 - don't like error mesg for "out of space"
stmoria 04/24/20 - bug 29927640: remove deprecated OPI functions
rpingte 11/09/22 - change xe to free
rankalik 11/08/22 - Bug 34756468: Update XE to FREE
Der Datei und den darin enthaltenen Kommentaren lässt sich ebenso entnehmen, dass die Fehlernummern in Blöcke aufgeteilt sind. So werden zum Beispiel die Fehlernummern von 200 bis 249 für Controlfile-Management-Fehler verwendet. In der Regel sind für eine Fehlernummer neben dem eigentlichen Fehlertext in den nachfolgenden Zeilen noch weitere Informationen wie Action, Note, Parameter (sofern vorhanden) etc. enthalten. Zur Verdeutlichung hier ein Auszug:
24040, 00000, "AQ tracing event"
// *Document: NO
// *Cause: N/A
// *Action: Event used to trace operation of AQ.
// *Note: THIS IS NOT A USER ERROR NUMBER/MESSAGE. THIS DOES NOT NEED TO BE
// TRANSLATED OR DOCUMENTED.
Dies erfolgt jedoch nicht komplett durchgängig. Es gibt genügend Einträge, bei denen Informationen fehlen – vermutlich historisch bedingt. Soviel zum Aufbau der Datei, aber was ist denn nun mit "Much better error messages"? Dazu ein paar Erkenntnisse aus meinem Vergleich der Dateien der 19c- und 23c-Installation:
1.) Das Beispiel aus dem Vortrag von Gerald Venzl – eine ganz klare Verbesserung der Fehlermeldung:
19c: SELECT TO_NUMBER('abc') FROM DUAL;--> ORA-01722: invalid number
23c: SELECT TO_NUMBER('abc'); --> ORA-01722: unable to convert string
value containing %s to a number: %s
2.) Manchmal wurde nur die Groß/Kleinschreibung geändert, leider inkonsequent mal von bisher groß auf nun klein und andersherum:
19c: 32113, "Null object passed"
23c: 32113, "null object passed"
19c: 32512, "type '%s' is unknown"
23c: 32512, "Type '%s' is unknown."
3.) Es wurden Korrekturen bei Rechtschreibfehlern vorgenommen:
19c: 32464, "private temporay table feature is disabled"
23c: 32464, "private temporary table feature is disabled"
4.) Es gibt komplett neue Fehlernummernbereiche für diverse neue Features:
62700 - 62999 are reserved for OSAK (Oracle SQL Access to Kafka)
62701, " DBMS_KAFKA cluster ID cannot be a NULL value."
5.) Wenn man den Kommentaren in der Datei Glauben schenken darf, dann sollte der folgende Fehler niemals ausgegeben werden:
02099, 00000, "used for internal purposes, should never be printed"
6.) Bei manchen Fehlertexten erschliesst sich der Zusammenhang zwischen neuem und altem Text nicht; es scheint, als ob die Nummern doppelt vergeben wurden:
19c: 16839, "one or more user data files are missing"
23c: 16839, "Pluggable database must be in mounted mode."
In seinem Blog-Post vom 24. Juli 2023 "Introducing the Oracle Database Error Help Portal" hat Gerald Venzl ein neues Tool vorgestellt, mit dem sich Fehlermeldungen leichter nachsehen lassen. Durch dieses nützliche Tool wird ein aus meiner Sicht etwas unglücklicher Umstand zumindest transparent, denn es gibt Fehlernummern, die in unterschiedlichen Versionen andere Bedeutungen haben (siehe dazu für den obigen Punkt 6 https://docs.oracle.com/en/error-help/db/ora-16839/ unter "Previous Releases").
Oracle hat erkannt, dass hier etwas verbessert werden kann und setzt dies auch um (nicht zuletzt durch das neue Tool). Insofern würde ich die Frage, ob wir ab 23c bessere Fehlermeldungen erhalten, mit einem klaren "JA" beantworten.
Ich finde es zudem beruhigend, dass auch bei Oracle nur mit Wasser gekocht wird, denn ansonsten wäre das Thema Groß-/Kleinschreibung durchgängig gleich gelöst worden. So ist das eben mit den Richtlinien – dies kennt sicher jeder Entwickler. Unter dem Strich kommt es uns Technikern ja sowieso auf die Funktionalität und nicht die Linguistik an...
Axel vom Stein
DOAG Themenverantwortlicher DevOps




