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 oracle. Bookmark the permalink. Comments Off on HTTP 400 error Too many arguments passed in.