Dynamic Environment Switching In Reports
Dynamic Environment Switching In Reports
Titleimage
Posted by Patrick Hamou on 2017:09:07 18:18:14
APPLIES TO:
Oracle Reports Developer - Version 9.0.2.0 to 11.1.2.2.0 [Release 9i to 11g]
Information in this document applies to any platform.
PURPOSE
The purpose of this article is to document and demonstrate how Reports 10G can dynamically use different environment variables, without having to have a separate Reports Server for each set of environment variables.
Dynamically Setting Reports 10G Environment Variables.
Previously, when the Reports Server was started it read the registry (Windows) or current environment variables (Unix) and any reports executed via the Reports Server would use these. Therefore, when you wanted to set two different values for an environment variable (eg REPORTS_PATH) and use a specific setting at runtime, this could not be achieved. For example, a developer might want to use one Reports Server but have the REPORTS_PATH pointing to a 'Development Area' and a 'Test Area'. This meant you had to have multiple Reports Server running for each setting, which can be costly in terms of administration.
However, as from Reports 10G 'Dynamic Environment Switching' has been implemented so you can use one Reports Server, but override certain current settings by using a configuration file.
SCOPE
This article is written for Developers and DBA's alike, or anyone that has an interest in Web Reports.
DETAILS
Environment Variables Set in reports.sh
Note, that if an environment variable is specified in both Dynamic Environment Switching option and also reports.sh, the value set in reports.sh take presedence over the Dynamic Environment Switching. This can lead to problems, and a prime example of this is the REPORTS_PATH. That is since the REPORTS_PATH is reports.sh took presedence, it could lead to a REP-110 : Unable to open file error. NOTE 341800.1 discusses this situation. If you want to add a parameter to Dynamic Environment Switching, first remember removing it from reports.sh.
Dynamic Environment Switching In Reports Versions 11g
In Reports Server version 11g, the Dynamic Environment Switching has to be defined through Enterprise Manager :
Oracle Enterprise Manager 11g Fusion Middleware Control ->Reports Server Homepage -> Reports Server Basic Configuration -> Environment Configuration Section
Dynamic Environment Switching In Reports Versions 9i to 10gR2
For these versions of Report Server, the changes have to be done manually in conf files of the report server.
1. Define The environment Characteristics (Environment Element).
In the Reports Server's configuration file (eg, .conf) which is found in:
add the following environments.
<environment id="Dev">
<envVariable name="REPORTS_PATH" value="d:\MyReports\DevArea"/>
</environment>
<environment id="Test">
<envVariable name="REPORTS_PATH" value="d:\MyReports\TestArea"/>
</environment>
PLEASE NOTE : The Reports Server needs to be restarted to pick up these changes. If using the in-process reports server. Then either OC4J_BI_FORMS (10g) or WLS_REPORTS (11g) needs to be restarted.
2. Call the reports using the specific Environment Element (ENVID).
So when constructing the URL to call a report you simple add ENVID=.
Example, to run MyTestRep.rdf in the Development area:
http://<yourWebServer>:<port>/reports/rwservlet?SERVER=<yourReportServer>
&REPORT=MyTestRep.rdf&USERID=<username>/<password>@<connect_string>&DESFORMAT=html &DESTYPE=cache&ENVID=Dev
Example, to run MyTestRep.rdf in the Test area:
http://<yourWebServer>:<port>/reports/rwservlet?SERVER=<yourReportServer>
&REPORT=MyTestRep.rdf&USERID=<username>/<password>@<connect_string>&DESFORMAT=html &DESTYPE=cache&ENVID=Test
When invoking reports from Forms Using RUN_REPORT_OBJECT, the ENVID is passed as follows:
Set_Report_Object_Property(Rep_Id,REPORT_OTHER,'ENVID="Dev"');
Environment variables are not just restricted to the REPORTS_PATH but other variables can also be used.
Ex: NLS_LANG, NLS_CALENDAR. REPORTS_PATH was just used in this article as an example.
Setting defaultEnvID
You are also allowed to set a default environment ID so as not to specify it within the URL. In doing so, the envID specified by the parameter defaultEnvID and in respect it's environment settings is picked up. See Note 292901.1 for further details.
Known Problems
Note 1298701.1 After Applying Patchset 11.1.1.4, Fusion Middleware Control Inserts "demo:" Tags in Conf Files of Reports Server- ENVID Section Stops Working
Note:1239633.1 Reports Reads Variables from Windows Registry Even Though Dynamic Environment Switching Is Set in 11g
Note:341800.1 Dynamic Environment Switching For REPORTS_PATH Cause REP-110/REP-1070 Errors On Unix/Linux
Note:1078231.1 REP-110 When Running Scheduled Jobs With EnvID, Only After Restarting The Report Server
Note:739271.1 Reports Called via "envid" Hang in Engine, Trace Shows REP-3000 on Unix
Posted by Patrick Hamou on 2017:09:07 18:18:14