

Ovenstående oracle fejl, forekommer på 2 af mine databaser gennem de sidste par døgn! Der sker næsten altid omkring kl 19:40.
Tracen der kommer ser ud som følger:
*** SERVICE NAME:(SYS$USERS) 2010-03-30 19:43:01.058
*** SESSION ID:(1785.10099) 2010-03-30 19:43:01.058
Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x2, PC: [0xffffffff76a33e64, jtcfs_108b3b90fb8_java_lang_reflect_Method__copy()+548]
*** 2010-03-30 19:43:01.069
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [jtcfs_108b3b90fb8_java_lang_reflect_Method__copy()+548] [SIGSEGV] [Address not mapped to object] [0x000000002] [] []
Current SQL statement for this session:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2, DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB, TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS
Rent umiddelbart ligner det noget Java! Men lad os se om DBMS_JAVA egentlig er valid ?
SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME='DBMS_JAVA';
OWNER OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ----------------- ------------------- -------
SYS DBMS_JAVA PACKAGE VALID
SYS DBMS_JAVA PACKAGE BODY VALID
PUBLIC DBMS_JAVA SYNONYM VALID
Lad os også lige checke JVM delen
SQL> SELECT OWNER, STATUS, COUNT(*) FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE '%JAVA%' GROUP BY OWNER, STATUS;
OWNER STATUS COUNT(*)
------------------------------ ------- ----------
EXFSYS VALID 42
SYS VALID 15507
Det ser jo meget godt ud umiddelbart! Hvis jeg så forsøger at udføre den SQL der forudsager tracen i hånden
SQL> SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2, DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB, TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS;
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2, DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB, TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Kigger jeg i user dump dest, er resultatet af ovenstående et trace der er identisk med ovenstående trace. Lad os prøve helt simpelt
SQL> SELECT SYS.DBMS_JAVA.LONGNAME('FOO') FROM DUAL;
ERROR:
ORA-03114: not connected to ORACLE
Der sker fuldstændigt det samme. Argumentet jtcfs_108b3b90fb8_java_lang_reflect_Method__copy()+548 finder jeg ingenlunde på metalink. Jeg har søgt på omliggende maskiner om der
omkring tidspunktet kører noget statestik, mmon, cronjob men finder intet.
Den lette løsning var at klone produktion ned i pågældende miljø, så gik problemmet væk - jeg fandt aldrig løsningen.