How to handle ORA-00904 errors on Export

When running full database export the following errors will be returned:

exp80 user/password full=y file=D:\DB-Backup\ORCL\expORCL.dmp log=D:\DB-Backup\ORCL\expORCL.log consistent=y buffer=40960000

EXP-00008: ORACLE error 904 encountered
ORA-00904: invalid column name


To get a clue what has force these ORA-00904 message, follow the following
steps:

1. Connect as privileged user and run the following command inside an
SQLPLUS session:

SQL> alter system set events='904 trace name errorstack';

-------------------------------- Note ------------------------------------

This event will work starting with Oracle8i. If running a Oracle database
version below Oracle8i, you'll get ORA-02065 errors returned, when
specifying this event. In Oracle versions below 8i you'll have to insert
the following entry into INIT.ORA

event="904 trace name errorstack"

--------------------------------------------------------------------------

2. Retry the FULL export. When the ORA-00904 occurs, a trace file will be
written to the storage location specified by the INIT.ORA parameter
'user_dump_dest'. As soon as the ORA-00904 has been returned to your
export session, you can abort the export and examine the trace information.

3. Disable event tracing by running the following command:

SQL> alter system set events='904 trace name errorstack off';

On Oracle versions below 8.1.5 return the event entry from INIT.ORA

4. Examine the trace file:

*** SESSION ID:(9.3) 2001.11.21.15.28.00.494
*** 2001.11.21.15.28.00.494
ksedmp: internal or fatal error
ORA-00904: invalid column name
Current SQL statement for this session:
SELECT fname,fsize,maxextend,inc FROM sys.exu8fil WHERE tsid = :1
===========

a) a problem with object EXU8FIL has been detected
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In this example, there's a problem with the EXE8FIL view. To examine,
whether this object exist, run the following command:

SQL> select owner,object_name,object_type,object_id,status
from dba_objects
where object_name='EXU8FIL';

If the problem is on the EXU8FIL object you simply can recreate the
object by running the CATEXP.SQL script.