JAVA PROC FAILS TO WRITE OUT FILES LARGER THAN 2GB FROM A 32BIT DB ON 64BIT OS, Possibly ORA-07445 [jonfos_write_bytes]. (Doc ID 1086432.1)

Last updated on APRIL 20, 2010

Applies to:

Oracle Server - Enterprise Edition - Version: to - Release: 10.2 to 10.2
Information in this document applies to any platform.


Whenever a JAVA stored procedure is used to write out files larger than 2GB to the OS from a 32bit RDBMS, the process will terminate with an ORA-7445 [jonfos_write_bytes], leaving a file of 2147483647 bytes (largest positive value of a signed integer on a 32 bit OS).

Using UTL_FILE to write out a >2GB file will work fine from the 32bit RDBMS, the problem will reproduce when using a stored java procedure from a 32bit RDBMS on a 32bit OR 64bit OS. The problem wouldn't reproduce when using a 64bit RDBMS on a 64-bit OS (likely to have as well a 64-bit JVM). Customer's JVM status is Valid, there seems to be no problem with that.

Stack trace for the ORA-07445 could look like:

ksedst <- ksedmp <- ssexhd <- 007DB7A2 <- jonfos_write_bytes <- jtcfv_10e0d7bdeda_j <- ava_io_FileOutputSt <- ream__writeBytes <- 102 <- jtcfv_10e0d7bdeda_j <- ava_io_FileOutputSt <- ream__write <- jtcisfv_10e0d7bdeda <- java_io_FileOutput <- Stream__write <- joevm_invoke_ncomp <- joevm_invokevirtual <- joe_run_vm <- joe_run <- joe_invoke <- joet_aux_thread_mai <- seoa_note_stack_out <- side <- joet_thread_main <- sjontlo_initialize <- joe_enter_vm <- ioei_call_java


Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms