数据库版本8.1.71 .在做数据库导出export时,报EXP-00008: ORACLE error 6553 encounteredORA-06553: PLS-561: character set mismatch on value for parameter 'SHORTNAME'2 .看到SHOTNAME,立时想到DBMS_JAVA这个包。反正我们的系统现在也不须要JAVA,于因此SYS用户实行:$ORACLE_HOME/javavm/install/rmjvm.sqldrop package dbms_java;drop public synonym dbms_java;删除JAVA3. 连续实行export,这次报错:EXP-00008: ORACLE error 904 encounteredORA-00904: invalid column name4. 以SYSTEM用户 打开事宜904。alter system set events='904 trace name errorstack';5。再实行export, 在user_dump_dest目录下天生了一个trace文件6。关闭事宜alter system set events='904 trace name errorstack off';7.查看刚天生的trace文件,找到:ORA-00904: invalid column nameCurrent SQL statement for this session:SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID FROM SYS.EXU8SYNU ORDER BY SYNTIME原来问题还是JAVA 。8 确定实行了rmjava.sql,但是实行SELECT count() FROM dba_objects WHERE object_type LIKE 'JAVA%';返回结果便是不为0, 解释java没删除干净。9. 在oracle8.1.7中,export判断是否利用了java,是去找"/oracle/aurora/rdbms/DbmsJava".这个工具的,如果java enabled,那么它就会利用dbms_java做一些转换,以是该当让oracle找不到DbmsJava。实际上oracle是查找视图exu81javt来确定DbmsJava的。在catexp.sql中,exu81javt是这样定义的:CREATE OR REPLACE view exu81javt (objid) AS SELECT obj# FROM sys.obj$ WHERE name = 'oracle/aurora/rdbms/DbmsJava' AND type# = 29 AND owner# = 0 AND status = 1因此修正一下:CREATE OR REPLACE view exu81javt (objid) AS SELECT obj# FROM sys.obj$ WHERE name = 'oracle/aurora/rdbms/DbmsJava' AND type# = 29 AND owner# = 0 AND status = 1 AND 1 = 0 ;grant select on exu81javt to public10.再export,问题办理。
