Dm_oracle Fails with NO_MEM Error while Calling PCM_OP_EXEC_SPROC Opcode

(Doc ID 2094931.1)

Last updated on SEPTEMBER 05, 2017

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.4.0.1.0 and later
Information in this document applies to any platform.

Symptoms

On : 7.4.0.21.0 version, DM

dm_oracle fails with NO_MEM error while calling PCM_OP_EXEC_SPROC opcode returning large number of result elements (100K records).

Details:
• You are using PCM_OP_EXEC_SPROC opcode to extract large number of records through a MTA application (executed with 5 threads).
• The memory requirement for output of PCM_OP_EXEC_SPROC opcode is around 160 MB ( for 100K result elements each element taking up 1600 bytes).
• The PCM_OP_EXEC_SPROC is used to call a stored procedure which is developed to perform a complex search returning fields from multiple BRM objects (/event, /account, /item, /product, /service).
• You tried setting dm_bigsize to 1GB and dm_shmsize to 1.5GB considering that large db outputs in dm_oracle are allocated from shared memory portion reversed for “BIG” shared memory structures (defined by dm_bigsize). So with 1GB of bigsize you are able to run the MTA in 5 threads (i.e. total dm memory required = 160* 5 = 800 MB). But still got NO_MEM error in dm_oracle.pinlog.
• Hence, it was found that - For PCM_OP_EXEC_SPROC opcode returning large number of result elements (100K), dm_oracle does not allocate the memory portion reversed for “BIG” shared memory structures (defined by dm_bigsize) whereas for large searches ( PCM_OP_SEARCH opcode returning more than 128 result elements) dm_oracle allocates the memory from bigsize portion.

ERROR
=====================




STEPS
-----------------------
The issue can be reproduced at will with the following steps:
Since writing a MTA, so following steps are suggested for reproducing the issue by calling PCM_OP_EXEC_SPROC opcode through testnap. The dm_bigsize and dm_shmsize has been set to demonstrate that dm_oracle is NOT allocating the memory for large PCM_OP_EXEC_SPROC opcode calls using bigsize portion (i.e. shared memory portion reversed for “BIG” shared memory structures)

1. Implement a complex search which returns large number of result elements having fields from multiple BRM objects (like /account, /event, /service. /item) in a stored procedure. Make sure that the search returns 100K records and total memory required for the output of PCM_OP_EXEC_SPROC opcode is more than 160MB.
2. Set dm_bigsize = 1415577600 and dm_shmsize = 1572864000.
3. Set an environment variable DM_DEBUG3=0xFFFFFFFF
4. Restart all (stop_all and start_all).
5. Call PCM_OP_EXEC_SPROC opcode to returned all the result elements through testnap
6. The testnap will fail since the memory for "SMALL" shared memory structures = 150 MB (dm_shmsize - dm_bigsize).


Cause

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