Modernisation Oracle Forms

Où définir les variables d'environnement des Reports Servers en 11g

S'APPLIQUE À : Oracle Reports Developer

Oracle Reports Developer - Version 11.1.1.1.0 à 11.1.2.2.0 [Release 11g]
Les informations de ce document s'appliquent à toutes les plateformes.

OBJECTIF : définir les variables d'environnement

Où définir les variables d'environnement comme TNS_ADMIN, NLS_LANG, REPORTS_PATH et autres dans une installation FMW 11g de Reports?

SOLUTION : Reports Servers in-process et autonomes

Précisons d'abord que Reports 11g (R1 ou R2) comprend par défaut deux types de Reports Servers : in-process et autonome (standalone)

vous trouverez plus de détails à leur sujet dans :

Differences and/or Pros and Cons of Using The In-Process Versus Stand-Alone Report Server (Doc ID 274936.1)

Chacun de ces Report Servers comporte deux composants : le serveur et ses moteurs (engines). Les variables d'environnement sont lues à des endroits différents par les moteurs et par le serveur, et cela dépend aussi du type de serveur.

Certaines variables reçoivent une valeur par défaut lors de l'installation.

Par exemple, TNS_ADMIN pointe vers ORACLE_INSTANCE\config

Une erreur courante lorsqu'une variable est mal définie est REP-501: "The specified database cannot be connected.", parce que vous avez modifié un fichier tnsnames.ora alors que votre TNS_ADMIN pointe vers un autre.

Si vous voulez définir des valeurs personnalisées, l'endroit où les définir dépend du type de serveur de rapports utilisé, in-process ou autonome, mais aussi de l'usage de la variable.

Où définir les variables d'environnement

Pour les Reports Servers autonomes

  • Dans un environnement Windows (si le serveur de rapports n'est pas intégré à OPMN), les variables peuvent être définies dans le fichier $ORACLE_INSTANCE\bin\reports.bat ou à l'un des endroits ci-dessous, selon cette hiérarchie :
    • Les variables d'environnement de reports.bat sont utilisées en premier,
    • Viennent ensuite les variables d'environnement définies dans : "Control Panel --> System --> Advanced --> Environment Variables",
    • Si elles ne sont définies à aucun des endroits précédents, ce sont les paramètres du registre qui s'appliquent.


** Il est important de noter que, sous Windows, la longueur de certaines variables est limitée : si, par exemple, en définissant REPORTS_PATH, vous constatez que votre répertoire n'est pas reconnu, essayez de changer l'ordre des répertoires indiqués ou de réduire la taille de la variable

  • Dans un environnement Unix, vous pouvez utiliser le fichier reports.sh situé dans ORACLE_INSTANCE/config/reports/bin

Pour un Reports Server autonome précis intégré à opmn.

Définissez la variable à votre valeur personnalisée dans le fichier opmn.xml de l'instance home ( n'oubliez pas d'arrêter d'abord tous les processus avec $ORACLE_INSTANCE/bin/opmnctl stopall)

Voici un exemple de section du fichier opmn.xml

.....
<environment>
<variable id="PATH" value="D:\Oracle\Middleware\..."/>
<variable id="TNS_ADMIN" value="D:\Oracle\TNS_ADMIN"/>
<variable id='REPORTS_PATH" value "D:\Oracle\MyAPP\Reports"/>
</environment>

Après avoir modifié ou défini les variables dans opmn.xml, il est important de redémarrer les Report Servers et de recharger opmn :
$ORACLE_INSTANCE/bin/opmnctl startall
$ORACLE_INSTANCE/bin/opmnctl reload

* Pour un Reports Server précis, vous pouvez aussi utiliser la fonctionnalité Dynamic Environment Switching. Cette approche un peu plus complexe n'est pas traitée ici, mais vous trouverez des informations dans la référence indiquée à la fin de cette note.

Pour le Reports Server in-process

Le Reports Server in-process (le composant serveur) ne lit pas les variables dans reports.sh ou reports.bat comme le fait le serveur autonome : il prend les valeurs des variables du domaine, dans le fichier $DOMAIN_HOME/bin/setDomainEnv.sh.

Voici un exemple de section du fichier setDomainEnv.sh

...
set LD_LIBRARY_PATH=D:\MW114\FR_BIN\lib;%LD_LIBRARY_PATH%
set PATH=D:\MW114\FR_BIN\bin;%PATH%
set TNS_ADMIN=D:\MW114\Instances\FRInst\config

Il faut toutefois préciser que le composant moteur lit bien ces fichiers (reports.sh ou reports.bat).

Ainsi, si le paramètre concerne le moteur (comme NLS_LANG ou TNS_ADMIN pour une tâche), les paramètres définis dans reports.sh ou reports.bat s'appliquent; mais si le paramètre concerne le composant serveur (par exemple TNS_ADMIN pour "jobStatusRepository", ou CLASSPATH pour une destination enfichable [pluggable destination]), la valeur est lue dans setDomainEnv.sh


Une fois votre environnement personnalisé, vous pouvez utiliser l'une des URL suivantes pour vérifier que les valeurs définies sont bien celles qu'utilise le Reports Server. La seconde s'utilise si votre serveur de rapports est sécurisé (SSO).

http://host:port/reports/rwservlet/showenv?server=your_repserver_name
or
http://host:port/reports/rwservlet/showenv?server=your_repserver_name&authid=orcladmin/pswd


Pour tout Reports Server utilisé avec FORMS, si vous avez besoin de variables accessibles à Forms

  • Ajoutez votre ou vos valeurs au début de toute entrée VARIABLE existante du fichier default.env, ou ajoutez la variable et sa valeur à la fin. Par exemple, si l'entrée REPORTS_PATH n'existe pas, créez-la à la fin du fichier. Sachez que default.env est lu par le runtime Forms (frmweb ...), mais pas par le Reports Server ni par le moteur Reports