I came across the ORASTACK utility when I was getting "out of process memory" errors when rebuilding a large text index. This error occurs when Oracle is trying to allocate memory for a session but no more is available (Oracle in Windows has a 3GB address space limit, but Oracle will issue a "process memory" error when available memory gets below 1MB). Oracle's ORASTACK utility allows you to reduce the stack size for Oracle threads from 1MB down to a smaller number. Typically, you would run the command against the listener and the Oracle kernel:
(From the DOS command prompt)
orastack tnslsnr.exe 500000
orastack oracle.exe 500000
This effectively cuts the size of each user thread in half (if you reduce much more than this you run the risk of sessions ending in “ORA-03113: end-of-file on communication channel” errors.
ORASTACK shouldn't be necessary unless you have a high number of concurrent (dedicated) user sessions or you have set aside a large amount of memory for the System Global Area (over 2GB).
Comments
I have faced this exact situation, a large awful Error stack with errors such as:
ORA-04030, TNS-12518.
The particular environment where I faced these issues was:
Oracle for Windows x32
on a Windows 2003 Enterprise Edition 32 bits
Oracle 10gR2 (10.2.0.1.0) right after migrating a user processes intensive application from 9iR2 (9.2.0.8.0) to the above referred 10gR2 release.
I had documented this issue with the metalik Note: 10gR2 Dedicated Connections Intermittently Fail with TNS-12518
Doc ID: Note:371983.1
One of the recommendations was to reduce memory consumption, and among one of the solutions was the use of orastack.exe to achieve this reduction. Right now I am documenting the issues and drawbacks of performing this procedure.
~ Madrid
Post new comment