Dm_oracle Fails With NO_MEM Error While Calling PCM_OP_EXEC_SPROC Opcode
(Doc ID 2094931.1)
Last updated on SEPTEMBER 03, 2020
Applies to:Oracle Communications Billing and Revenue Management - Version 220.127.116.11.0 and later
Information in this document applies to any platform.
On : 18.104.22.168.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).
• 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).
• 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 in cm.pinlog:
Steps to reproduce:
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).
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!
In this Document