In Oracle what are the system tables used to generate error messages, such as, $table space, etc. Where can I find a list of those tables?
There is no such table as you have defined it. When an error occurs, Oracle generates an ORA-xxxxx error number. These error numbers are coded into the Oracle kernel, not stored in a database table. Have you ever seen the ORA-00600 errors? Such an error typically looks like the following:
ORA-00600 [xxxxxx] [yyy] [zzz] ....
ORA-00600 errors are errors where the error number is not known. When an undetermined error is thrown, the system cannot give you a number, so it gives you the ORA-00600 error instead. The first parameter in brackets "xxxxxx" denotes the section of code in the kernel that the error was raised from.
Before control is passed back to the user, the database looks up the error message for that specific number. Since Oracle is a global product, the error messages I see here in the United States are different than those errors shown in another country, like France. If you install the French version of Oracle, then your error message will be in French. So how does Oracle know what language to present your error message in? When you install Oracle, you install it for a region. When the system needs to look up an error message for a specific error number, it looks up the message in the $ORACLE_HOME/rdbms/mesg folder for a file called oraXX.msg, where XX is the region. I only have one such file, oraus.msg since I am in the United States region. If you look at that file, you can see the text for all of the error messages.