jeudi 21 avril 2011

MODPLSQL-00367: mod_plsql: /pls/apex/f HTTP-400 Illegal PLSQL identifer in input

Une application oracle application express (apex) utilise un «database access descriptor» (DAD) configuré au niveau d'un serveur OAS 10g.

Voici la section concernant ce DAD dans le fichier «dads.conf»:

<location /pls/apex>
SetHandler pls_handler
Order allow,deny
Allow from All
AllowOverride None
PlsqlDatabaseUsername apex_public_user
PlsqlDatabasePassword xxxxxxxxx
PlsqlDatabaseConnectString hostname:port:service ServiceNameFormat
PlsqlAuthenticationMode Basic
PlsqlSessionStateManagement StatelessWithFastResetPackageState
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDocumentPath docs
PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
PlsqlAlwaysDescribeProcedure Off
PlsqlDefaultPage f?p=102
</location>

Après avoir migré le serveur OAS à la version fusion middleware 11.1.1.3, en essayant l'url de l'application apex, l'on reçoit un message d'erreur HTTP-400.

Dans le fichier $INSTANCE11g_HOME/diagnostics/logs/OHS/ohs1/ohs1.log on peut lire le message d'erreur suivant:

MODPLSQL-00367: mod_plsql: /pls/apex/f HTTP-400 Illegal PLSQL identifer in input

Cette erreur est causée par la ligne suivante dans la configuration du DAD:

PlsqlDefaultPage f?p=102

Selon la documentation Oracle, ce paramètre peut être remplacé par un Rewrite rule:
http://download.oracle.com/docs/cd/E14571_01/web.1111/e10144/under_mods.htm#CIHBJFII

Donc supprimons cette ligne de notre fichier «dads.conf» (ou la mettre en commentaire).

Dans le fichier «httpd.conf», ajoutons le Rewrite rule (dans la section commune, pas dans un virtual host):

RewriteRule ^/pls/apex$ /pls/apex/f?p=102 [R]

Puis redémarrer OHS:

$INSTANCE11g_HOME/bin/opmnctl restartproc ias-component=ohs1

Hope it helps

Aucun commentaire:

Enregistrer un commentaire