Home » Server Options » Text & interMedia » ORA-04030: out of process memory
ORA-04030: out of process memory [message #189222] Wed, 23 August 2006 12:11 Go to next message
user493084
Messages: 7
Registered: March 2006
Junior Member
I wrote a c# application that inserts files into a blob column for full text indexing. i also extract themes and store them in a table.

Things will be going fine for a while until a memory error of the following flavors get thrown.

Oracle.DataAccess.Client.OracleException
ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine
ORA-20000: Oracle Text error:
DRG-50857: oracle error in textindexmethods.ODCIIndexUpdate
ORA-00604: error occurred at recursive SQL level 3
ORA-04030: out of process memory when trying to allocate 123404 bytes (QERHJ hash-joi,kllcqas:kllsltba)
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 678
ORA-06512: at "ADMIN.LOADER_PKG", line 476
ORA-06512: at line 1 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Loader.DBSubmitFile(OracleConnection conn)

Oracle.DataAccess.Client.OracleException
ORA-20000: Oracle Text error:
DRG-50857: oracle error in dridisp.execasown_clob
ORA-04030: out of process memory when trying to allocate 4116 bytes (droinst:prm he,drubanp)
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.CTX_DOC", line 210
ORA-06512: at "ADMIN.LOADER_PKG", line 748
ORA-06512: at line 1 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Loader.DBGenerateThemes(OracleConnection conn)

Oracle.DataAccess.Client.OracleException
ORA-04030: out of process memory when trying to allocate 200 bytes (pga heap,heap descriptor)
ORA-06512: at "CTXSYS.DRUE", line 191
ORA-06512: at "CTXSYS.DRUE", line 49
ORA-06512: at "CTXSYS.DRUE", line 24
ORA-06512: at "CTXSYS.DRUE", line 186
ORA-06512: at "CTXSYS.CTX_DOC", line 212
ORA-04030: out of process memory when trying to allocate 992 bytes (pga heap,DR primary context)
ORA-06512: at "CTXSYS.DRUE", line 191
ORA-06512: at "CTXSYS.DRUE", line 49
ORA-06512: at "CTXSYS.DRUE", line 24
ORA-06512: at "CT at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Loader.DBGenerateThemes(OracleConnection conn)

Oracle.DataAccess.Client.OracleException
ORA-04030: out of process memory when trying to allocate 24 bytes (CTX PRM heap,CTX PRM heap)
ORA-06512: at "CTXSYS.DRUE", line 191
ORA-06512: at "CTXSYS.DRUE", line 49
ORA-06512: at "CTXSYS.DRUE", line 24
ORA-06512: at "CTXSYS.DRUE", line 186
ORA-06512: at "CTXSYS.CTX_DOC", line 212
ORA-04030: out of process memory when trying to allocate 992 bytes (pga heap,DR primary context)
ORA-06512: at "CTXSYS.DRUE", line 191
ORA-06512: at "CTXSYS.DRUE", line 49
ORA-06512: at "CTXSYS.DRUE", line 24
ORA-06512: at "CT at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Loader.DBGenerateThemes(OracleConnection conn)

the c# function Loader.DBSubmitFile simply calls this pl/sql function:

FUNCTION LOAD_FILE(iFileID IN NUMBER, blIndex IN BLOB DEFAULT NULL) RETURN NUMBER IS
...
BEGIN
...
UPDATE files SET filedata = blIndex WHERE fileid = iFileID;
...
END LOAD_FILE;


the c# function Loader.DBGenerateThemes simply calls this pl/sql function:
PROCEDURE GENERATE_THEMES(iFileID IN NUMBER) IS
BEGIN
CTX_DOC.THEMES('LING_IDX', iFileID, 'FILE_THEMES', iFileID, TRUE);
END GENERATE_THEMES;


the ling_idx index was created with this:

create index LING_IDX on files(filedata)
indextype is ctxsys.context
parameters('filter ctxsys.null_filter lexer ctxsys.default_lexer sync (every "sysdate+1/24/12") stoplist ctxsys.default_stoplist memory 50M')
parallel 4;

so far i've tried:
increasing SGA size,
increasing PGA size,
removing the parallel clause,
increasing the max_index_memory parameter [via ctx_adm.set_parameter('max_index_memory','800M');]

all to no avail.

any suggestions?
Database is 10G r2 on win2k3, in a RAC with 2 nodes, each dual xeon w\ 4G of ram.
SGA size ~1G

[Updated on: Wed, 23 August 2006 12:16]

Report message to a moderator

Re: ORA-04030: out of process memory [message #189225 is a reply to message #189222] Wed, 23 August 2006 13:11 Go to previous messageGo to next message
Barbara Boehmer
Messages: 9100
Registered: November 2002
Location: California, USA
Senior Member
The ora-04030 refers to operating system memory (ram). You need to do everything that you can to reduce usage, like shutting down other things that are running on the computer. If there is a way that you can modify your code to process in chunks with commits inbetween, so that you free up memory, that can help. It is hard to tell just looking at the partial code you posted. Have you tried testing from SQL*PLus to see if you still get the error? It might be due to how things are being passed between c# and pl/sql. It might help to narrow down the source of the big memory usage.
Re: ORA-04030: out of process memory [message #189227 is a reply to message #189225] Wed, 23 August 2006 13:39 Go to previous messageGo to next message
user493084
Messages: 7
Registered: March 2006
Junior Member
when i look at each of the nodes with Windows Task Manager, the ram usage never exceeds 2.3G, and each machine has 4G of physical ram. so there doesnt appear to be anything eating up the physical memory.
Re: ORA-04030: out of process memory [message #189233 is a reply to message #189227] Wed, 23 August 2006 14:16 Go to previous message
Barbara Boehmer
Messages: 9100
Registered: November 2002
Location: California, USA
Senior Member
It is possible that you have encountered a bug. Apparently there is a history of memory leaks associated with Oracle Text in different versions:

http://forums.oracle.com/forums/thread.jspa?messageID=1080008&#1080008

You might want to check metalink and/or contact support. Do you ever get the ora-04030 when running anything else besides Oracle Text?
Previous Topic: Want to Search any kind of PDF and other types of documents in one single coulmn
Next Topic: Search through all tables
Goto Forum:
  


Current Time: Thu Dec 12 05:34:25 CST 2024