Modernisation Oracle Forms

Des rapports avec des PLX attachés provoquent des blocages ou plantages intermittents du Reports Server ou les erreurs REP-770 / REP-736 ..

S'applique à

Oracle Reports Developer - Version 10.1.2.0.2 à 11.1 [Release Oracle10g à 11g]
Les informations de ce document s'appliquent à toutes les plateformes.
Pertinence vérifiée le "03-mars-2013"

Symptômes

Par intermittence, des rapports se bloquent et restent en file d'attente. Si l'utilisateur les relance, ils fonctionnent parfois de nouveau. Le problème ne suit aucun schéma précis permettant de le reproduire. L'URL showjobs affiche simplement, dans "current jobs", le statut "Opening report". D'autres rapports échouent par intermittence avec l'erreur :

REP-770: One or more PL/SQL libraries have been modified since the report was saved.
The PL/SQL will be recompiled.

REP-0736: There exist uncompiled program unit(s).

REP-1247: Report contains uncompiled PL/SQL.
"Terminated with error: <br>REP-770: 'beforepform': Fatal PL/SQL error occurred. ORA-06508: PL/SQL: could not find program unit being called"
REP-770: There exist uncompiled program unit(s).

Soumettre de nouveau le même rapport avec les mêmes paramètres fonctionne parfois. Sinon, il faut arrêter et redémarrer le serveur de rapports.

Le problème n'est reproductible que dans l'environnement de production, où davantage de rapports sont exécutés par minute.

Cause

Actuellement, Reports 10g /11g ne prend pas en charge l'utilisation des fichiers .PLX, comme l'indique :

l'aide en ligne de Reports Builder. Par exemple, extrait de Reports 11g :

"PL/SQL conversion utility: Converting PL/SQL libraries attached to a report":
Note: This feature is included in the Report Compiler to create .PLX files for use with Forms. Currently, Reports does not support the use of .PLX files..."

Tous les rapports qui échouaient par intermittence utilisaient des bibliothèques attachées. Les fichiers PLL et PLX étaient TOUS DEUX accessibles dans la variable d'environnement REPORTS_PATH.

Si seul le PLX est accessible, les rapports devraient échouer systématiquement.

Solution

PLX NON pris en charge par Oracle Reports. Utilisez toujours les PLL.

1. Repérez les chemins déjà définis dans REPORTS_PATH.

a) La valeur attribuée à REPORTS_PATH peut être vérifiée en exécutant l'URL showenv :

http://host:port/reports/rwservlet/showenv?server=reports_server_name

b) Recherchez REPORTS_PATH dans les fichiers de configuration et le paramétrage. Les variables d'environnement sont généralement enregistrées dans les fichiers et emplacements suivants :

Unix 10gR2 :

Reports 10gR2:

$ORACLE_HOME/bin/reports.sh 
or 
$ORACLE_HOME/opmn/conf/opmn.xml
Reports 11g:
$ORACLE_INSTANCE/config/reports/bin/reports.sh
or
$ORACLE_INSTANCE/config/OPMN/opmn/opmn.xml

Windows :

Specific for Reports 10gR2:
%ORACLE_HOME%\opmn\conf\opmn.xml

Specific for Reports 11g:
%ORACLE_INSTANCE%\bin\reports.bat
%ORACLE_INSTANCE%\config\OPMN\opmn\opmn.xml

For both releases:
Control Panel --> System --> Advanced --> Environment Variables
In regedit -> HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> <ORACLE_HOME>

2. Vérifiez si les rapports qui échouent par intermittence utilisent des bibliothèques attachées. Si c'est le cas, supprimez tous les fichiers PLX des chemins déjà définis dans la variable d'environnement REPORTS_PATH.

3. Un autre test consiste à copier-coller le code du PLL dans le rapport RDF. Si le rapport ne reste plus bloqué au statut "opening report" et n'affiche plus l'erreur REP-770 par intermittence, cela confirme que le problème est lié aux bibliothèques attachées.

4. Si vous modifiez la variable d'environnement REPORTS_PATH, n'oubliez pas de redémarrer le serveur de rapports pour que les changements soient appliqués. Si vous utilisez un serveur de rapports in-process, vous devez également redémarrer OC4J_BI_Forms en 10gR2 et WLS_REPORTS en 11g.