All Oracle Error Codes
Oracle DBA Forum

Frequent Oracle Errors

TNS:could not resolve the connect identifier specified
Backtrace message unwound by exceptions
invalid identifier
PL/SQL compilation error
internal error
missing expression
table or view does not exist
end-of-file on communication channel
TNS:listener unknown in connect descriptor
insufficient privileges
PL/SQL: numeric or value error string
TNS:protocol adapter error
ORACLE not available
target host or object does not exist
invalid number
unable to allocate string bytes of shared memory
resource busy and acquire with NOWAIT specified
error occurred at recursive SQL level string
ORACLE initialization or shutdown in progress
archiver error. Connect internal only, until freed
snapshot too old
unable to extend temp segment by string in tablespace
Credential retrieval failed
missing or invalid option
invalid username/password; logon denied
unable to create INITIAL extent for segment
out of process memory when trying to allocate string bytes
shared memory realm does not exist
cannot insert NULL
TNS:unable to connect to destination
remote database not found ora-02019
exception encountered: core dump
inconsistent datatypes
no data found
TNS:operation timed out
PL/SQL: could not find program
existing state of packages has been discarded
maximum number of processes exceeded
error signaled in parallel query server
ORACLE instance terminated. Disconnection forced
TNS:packet writer failure
see ORA-12699
missing right parenthesis
name is already used by an existing object
cannot identify/lock data file
invalid file operation
quoted string not properly terminated

RE: ORA-00600: internal error code, arguments: [4412] (ORA-02002: error while writing to audit trail)

Mark W. Farnham


ORA-00600: internal error code, arguments: [4412] (ORA-02002: error while writing to audit trail)



From: oracle-l-bounce@freelists.org [mailto:oracle-l-bounce@freelists.org] On Behalf Of Fowler, Kenneth R

Subject: ORA-00600: internal error code, arguments: [4412] (ORA-02002: error while writing to audit trail)

<snip>This problem pertains to Oracle, Solaris 2.9 running on an E15K domain.  Many of our databases see frequent errors while trying to write to audit…<snip>
Errors in file /app/oracle/admin/enip12/trace/udump/enip12_ora_247229.trc:
ORA-00600: internal error code, arguments: [4412], [0x3C5FDB348], [0x3C5F9E2E8], [], [], [], [], []
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 3
ORA-02002: error while writing to audit trail
ORA-00600: internal error code, arguments: [4412], [0x3C5FDB348], [0x3C5F9E2E8], [], [], [], [], []

There is a bug report in metalink (5592308) with no solution but the following suggested workarounds…

1.  Turn off auditing.
2.  Keep sys.aud$ table below 50,000 records.

Neither of these "solutions" is any good for us due to legal requirements to have auditing turned on and the high level of activity on the database making it difficult if not impossible to keep sys.aud$ below 50,000 records.  This is a production database and we have a TAR/SR on the issue that has been open since 31-MAY.  Oracle wants us to supply scripts and data to them so that they can recreate the issue and even though we supplied an export taken when the condition occurred (at Oracle's request) they have not been successful in recreating the issue (no surprise to me).  Needless to say we are less than happy with the situation which has been giving us problems for over a month.

So, has anyone seen the issue?  Any solutions?  Is there some event tracing that I could use that would shed some light on this?<snip>


mwf: Haven’t seen this particular one. I haven’t seen any legislation that matches “sys.aud$” by name, though I suppose you might see something specifically dictating an audit method in a contract somewhere, but that aside you might consider whether some scheme to very quickly copy and delete rows from sys.aud$ will at least meet the 50,000 row challenge so even if that does not solve your problem the ball is back in Oracle’s court. You might hash off some column in the sys.aud$ table and fan out the destinations to, say, ten targets and use the synonym game to rotate those on some schedule to make them row sources for your long term history or warehouse for audit records, quite possibly in a separate database. A trigger on commit on sys.aud$, perhaps. Fanning out would reduce any chance this is an insert split race condition. The ten destinations may well not need indexes at all, since they will be transient way stations to be rotated, copied complete while otherwise cold, and then presumably truncated. I’m very curious what your end result is, and quite disappointed that Oracle support left you holding the bag on something so serious as an internal bug writing AUDIT information with nary a workaround except a dysfunctional recipe for preventing the 600 error without even a nod toward achieving your clearly supported functional goal. If I know Larry, blowing someone off on such basic issue as database auditing will cause great annoyance. No tuxedo will fit this bug…