EXP-00008: ORACLE error 3113 / ORA-03113:匯出同義詞時中斷。ORA-07445: core dump [joe_well_known_internal()]。ORA-00980:同義詞指向已不存在的表。使用者 Schema 下存在 非法/失效物件,常見於:
DROP,依賴的 Synonym/View/Procedure 狀態變 INVALID (或仍顯示 VALID 但實際不可用)。SET PAGES 500 LINES 200 TRIMS ON HEADING OFF SPOOL /tmp/recompile.sql SELECT 'ALTER '||OBJECT_TYPE||' '||OBJECT_NAME||' COMPILE;' FROM USER_OBJECTS WHERE STATUS = 'INVALID'; SPOOL OFF @/tmp/recompile.sql
SPOOL /tmp/check_syn.sql
SELECT 'DESC '||SYNONYM_NAME||';' FROM USER_SYNONYMS;
SPOOL OFF
@/tmp/check_syn.sql -- 報錯者即為非法同義詞
DROP SYNONYM "&synonym_name"; -- 雙引號處理大小寫/特殊字元
CREATE SYNONYM "&synonym_name" FOR "&owner"."&table_name";
DROP TABLE scott."emp" CASCADE CONSTRAINTS;
DROP TRIGGER scott."trigger_name";
若 DBMS_JAVA.LONGNAME() 執行即報錯,疑為 JVM 字典損壞:
DROP VIEW EXU9SYNU;
CREATE VIEW EXU9SYNU AS
SELECT "SYNNAM","SYNNAM2","SYNTAB","TABOWN","TABNODE","PUBLIC$","SYNOWN",
"SYNOWNID","TABOWNID","SYNOBJNO","SYNTIME"
FROM SYS.EXU9SYN
WHERE 0=1; -- 空結果集,讓匯出跳過同義詞階段
GRANT SELECT ON SYS.EXU9SYNU TO PUBLIC;
UTL_RECOMP.RECOMP_SERIAL() 全庫重編譯。