Solutions for EXP-00008 & ORA-06550 & ORA-00904 during exp
Symptom: exp returns an error as follows:
[Oracle @ cicgo1 oracle] $ exp system/pass owner = cicgo file =/tmp/cicgo. dmp
Export: Release 8.1.7.4.0-Production on Tue Apr 23 15:07:17 2013
(C) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to: Oracle8i Release 8.1.7.4.0-Production
JServer Release 8.1.7.4.0-Production
Export done in US7ASCII character set and ZHS16GBK NCHAR character set
Server uses ZHS16GBK character set (possible charset conversion)
About to export specified users...
. Exporting pre-schema procedural objects and actions
EXP-00008: ORACLE error 6550 encountered
ORA-06550: line 1, column 13:
PLS-00201: identifier 'ordsys. ordtexp' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
The EXP-00083: The previous problem occurred when calling ORDSYS. ORDTEXP. schema_info_exp
. Exporting foreign function library names for user cicgo
. Exporting object type definitions for user cicgo
About to export cicgo's objects...
. Exporting database links
. Exporting sequence numbers
EXP-00008: ORACLE error 904 encountered
ORA-00904: invalid column name
EXP-00000: Export terminated unsuccessfully
Analysis:
1. No invalid objects are found in the database:
SQL> SELECT status, object_id, object_type, owner | '.' | object_name "OWNER. OBJECT"
FROM dba_objects
WHERE status! = 'Valid'
Order by 4, 2; 2 3 4
2. According to the Full Database Export Fails with EXP-00008: ORACLE error 6550 encountered (Doc ID 120540.1) Description:
Fact: Oracle Server-Enterprise Edition 8
Fact: Oracle Server-Enterprise Edition 9
Fact: Export Utility (EXP)
Symptom: Full database export fails
Symptom: EXP-00008: ORACLE error 6550 encountered
Symptom: PLS-00201: identifier 'ordsys. ORDTEXP 'must be declared
Symptom: EXP-00083: The previous problem occurred when calling ORDSYS.
ORDTEXP. schema_info_exp
Cause: User ORDSYS has been dropped. If Time Series option was installed,
It's objects are dropped, but the import/export support for the option is not.
<==== The cause of exp failure is: the user ORDSYS is deleted, but the exppkgact $ information in a single Oracle dictionary table is not updated to the same, resulting in exp failure.
There are two root causes for this phenomenon:
1. Oracle BUG caused the dictionary table exppkgact $ not updated when drop user;
2. the user deleted the user in an incorrect way.
Fix:
Drop import/export support for Time Series
------------------------------------------
Delete from sys. exppkgact $
Where package = 'ordtexp' and
Schema = 'ordsys '; <== the solution is described here: delete the inconsistent records in exppkgact $.
Commit;
Delete the related records of the dictionary table exppkgact $ according to the methods provided by Oracle:
SQL> delete from sys. exppkgact $
Where package = 'ordtexp' and
Schema = 'ordsys '; 2 3
1 row deleted.
SQL> commit;
Commit complete.
However, an error is still reported when exp is executed:
[Oracle @ cicgo1 scripts] $ exp system/pass owner = cicgo file =/tmp/cicgo. dmp direct = y
Export: Release 8.1.7.4.0-Production on Tue Apr 23 16:00:42 2013
(C) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to: Oracle8i Release 8.1.7.4.0-Production
JServer Release 8.1.7.4.0-Production
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified users...
. Exporting pre-schema procedural objects and actions
. Exporting foreign function library names for user cicgo
. Exporting object type definitions for user cicgo
About to export cicgo's objects...
. Exporting database links
. Exporting sequence numbers
EXP-00008: ORACLE error 904 encountered
ORA-00904: invalid column name
EXP-00000: Export terminated unsuccessfully
[Oracle @ cicgo1 scripts] $
I found this time no error again ORA-06550, only reported the ORA-00904: invalid column name, what is internal SQL caused by ORA-00904, I used errorstack trace:
1. alter system set events '2014 trace name ERRORSTACK level 3 ';
2. Execute exp again
3. alter system set events '904 trace name context off ';
4. view the generated trace file:
/Home/oracle/data/app/oracle/admin/cicgo/udump/ora_5579.trc
Oracle8i Release 8.1.7.4.0-Production
JServer Release 8.1.7.4.0-Production
ORACLE_HOME =/home/oracle/data/app/oracle/product/8.1.7/
System name: Linux
Node name: cicgo1
Release: 2.4.18-3
Version: #1 Thu Apr 18 07:37:53 EDT 2002
Machine: i686
Instance name: cicgo
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 5579, image: oracle @ cicgo1 (TNS V1-V3)
* ** Session id: (14.23243) 09:31:40. 273
* ** 2013-04-24 09:31:40. 273
Ksedmp: internal or fatal error
ORA-00904: invalid column name
Current SQL statement for this session:
Select grantor, GRANTORID, GRANTEE, PRIV, WGO, ISDIR, type from sys. EXU8GRN where objid =: 1 order by wgo desc, SEQUENCE
<==== An internal SQL error is reported when the EXU8GRN column in the Oracle view is missing. Therefore, the EXU8GRN view is rebuilt and authorized.
Please try below:
1. svrmgrl
Svrmgrl> connect internal
Svrmgrl> @ catexp. SQL
Svrmgrl> create or replace view exu8grn (objid, grantor, grantorid, grantee,
Priv, wgo,
Creatorid, sequence, isdir, type)
SELECT t $. obj #, ur $. name, t $. grantor #, ue $. name,
M $. name, NVL (t $. option $, 0), o $. owner #, t $. sequence #,
DECODE (o $. type #), 23, 1, 0),/* flag if directory alias */
O $. type #
FROM sys. objauth $ t $, sys. obj $ o $, sys. user $ ur $,
Sys. table_privilege_map m $, sys. user $ ue $
WHERE o $. obj # = t $. obj # AND t $. privilege # = m $. privilege AND
T $. col # is null and t $. grantor # = ur $. user # AND
T $. grantee # = ue $. user # AND
Ue $. name not in ('ordsys ', 'mdsys', 'ctxsys ', 'ordplugins ',
'Lbacsys ')
/
Grant select on exu8grn to select_catalog_role
/
If you run exp again, the export is successful.