HTTP 400 error Too many arguments passed in

In one of our Apex-like application user reported a HTTP 400 error after clicking on a button that invokes PL/SQL procedure. At first glance I suspected a missing execute privilege but the quick look at Oracle HTTP log revealed the true reason:
X:\ORACLE\OFM\OFM11\instances\instance1\diagnostics\logs\OHS\ohs1\ohs1.log)

[2016-05-04T10:58:23.9709+02:00] [OHS] [ERROR:32] [OHS-9999] [core.c] [host_id: ACMEHOST] [host_addr: 10.10.10.11] [pid: 5048] [tid: 1816] [user: SYSTEM] [VirtualHost: main]  MODPLSQL-00359: mod_plsql: /sales/!appschema.orderentry.program HTTP-400 Too many arguments passed in(2002). Limit is 2000, referer: http://ohs.acme.com/sales/!appschema.orderentry.program

-> HTTP-400 Too many arguments passed in(2002). Limit is 2000
.. so, the reason for the error is the default limit in mod_plsql on the number of parameters that can be passed to the pl/sql procedure.

A search on MOS confirmed by suspicion, please refer to:

Modplsql application throws “HTTP-400 Too many arguments passed in. Got 7076 parameters. Upper limit is 7000” (Doc ID 386946.1)

After adding directive “PlsqlMaxParameters 4000” to the plsql.conf and restarting the http listener (cmd> opmnctl restartproc process-type=OHS), the problem was solved.
Our plsql.conf looks like this:

X:\ORACLE\OFM\OFM11\instances\instance1\config\OHS\ohs1\moduleconf\plsql.conf

# ============================================================================ 
#                       mod_plsql configuration file                           
# ============================================================================ 
# 1. Please refer to plsql.README for a description of this file               
# 2. Parameters in this file have to be configured manually                    
# ============================================================================ 

# Configure Oracle HTTP Server to load mod_plsql
LoadModule plsql_module ${ORACLE_HOME}\ohs\modules\mod_plsql.dll

# Load in mod_plsql directives only if mod_plsql is loaded
<IfModule mod_plsql.c>

# ============================================================================ 
# Global Settings Section : Directives that apply to all DADs
# ============================================================================ 

PlsqlLogEnable on

PlsqlLogDirectory "${ORACLE_INSTANCE}\diagnostics\logs\${COMPONENT_TYPE}/${COMPONENT_NAME}"

# 4.5.2016 -- (see MOS ID 386946.1)

PlsqlMaxParameters 4000

# PlsqlIdleSessionCleanupInterval 15 (default)

# PlsqlDMSEnable On (default)

# ============================================================================ 
# Database Access Descriptors Settings Section
# ============================================================================ 
include "${ORACLE_INSTANCE}\config\${COMPONENT_TYPE}\${COMPONENT_NAME}\mod_plsql\dads.conf"

# Custom DAD's for Acme.com
include "${ORACLE_INSTANCE}\config\${COMPONENT_TYPE}\${COMPONENT_NAME}\mod_plsql\marvel.conf"

# ============================================================================ 
# Cache Settings Section
# ============================================================================ 
include "${ORACLE_INSTANCE}\config\${COMPONENT_TYPE}\${COMPONENT_NAME}\mod_plsql\cache.conf"

</IfModule>

Posted on 04.05.2016, in Oracle and tagged . Bookmark the permalink. Comments Off on HTTP 400 error Too many arguments passed in.

Comments are closed.