Set the repositoryconn property of the jobStatusRepository element in

24-34 Publishing Reports to the Web with Oracle Reports Services that takes 10 seconds to 5 minutes to run, you can set engineResponseTimeOut=5 5 minutes. 4. Set the maxConnect attribute of the connection element in the server configuration file; connection maxConnect=180 idleTimeOut=15 For more information on the connection element, refer to Section 8.2.1.5, connection . The maxConnect attribute controls how many total requests Reports Server can simultaneously handle at any moment in time. The key purpose of maxConnect is to keep Reports Server from being overcome by some runaway program or process or by a denial of service attack. It should be always set to a value that is greater than the maximum simultaneous clients. For example, if your system is expected to handle 150 simultaneous clients, you can set maxConnect to any value above 150. You can use a safety factor of 10 to 20, as follows: maxConnect = 150 + 150 0.2 = 180 5. Set the HTTP timeout value applicable to AS only. The HTTP timeout value should be set based on the time required to run the longest report in the system. If longest-running report takes 20 minutes to run, HTTP timeout should be more than 20 minutes. Otherwise, an HTTP timeout error will display when the report is still running in the server. This parameter can be set in the ORACLE_INSTANCEconfigOHSohs1httpd.conf file. Alternatively, you can set the timeout value in Oracle Enterprise Manager.

24.5 Accessing the Data

If your performance measuring tools show that the report spends a large amount of time accessing data from the data sources, you must review the structure of the data and determine how the data is being used. Inefficient schema design has a dramatic affect on the performance of a report. For example, an overly normalized data model can result in many avoidable joins or queries. This section discusses ways to review and improve the efficiency of the data used in your report: ■ Non-SQL Data Sources ■ Database Indexes ■ Calculations ■ Redundant Data ■ Break Groups ■ Group Filters ■ To Link or Not To Link Note: It is always better to run batch reports on a separate server with different engineResponseTimeOut values. Do not submit interactive and batch reports to same server. Diagnosing and Tuning Oracle Reports 24-35

24.5.1 Non-SQL Data Sources

To publish data from any data source, use the pluggable data source architecture in Oracle Reports. Out-of-the-box Oracle Reports supports non-SQL data sources, such as XML, Text, and JDBC pluggable data sources. Both XML and Text pluggable data sources can be accessed through a remote URL even across firewalls. If speed is a concern, download the data locally and use the local data stream rather than a remote URL. You can also specify the domains for which you can bypass a proxy server. The XML pluggable data source supports runtime XML data validation. Select the Validate Data Source check box in the XML Query Wizard to ensure that the XML data is verified as it is fetched against the data definition specified in the DTD or in the XML schema. This is a very costly operation and proves to be useful only when you develop the report and not during production. You will see a noticeable performance difference when the XML data stream is very large. You can specify either an XML schema or a DTD schema for the data definition. An XML schema forces type checking, whereas a DTD schema does not require type checking as all data is treated as strings. You can also specify an extensible style sheet language XSL file for the XML data stream to convert it from any format into a simple row setrow data feed. It is better to have data in the correct format to start with, unless you want to apply the XSL at run time. Pluggable Text data sources support the use of cell wrappers. This causes the file format level delimiter to be ignored for every field that has a wrapper defined. Avoid using cell wrappers unless really required. The JDBC pluggable data source supports JDBC bridges, as well as thick and thin JDBC drivers. Selecting the driver directly impacts the fetching of data. The choice depends on the application and the database being used. Using a native driver generally results in better performance. For more information, see Chapter 14, Configuring and Using the Pluggable Data sources .

24.5.2 Database Indexes

Columns used in a SQL WHERE clause should be indexed. The impact of indexes used on columns in the master queries of a report are minor, as these queries access the database once. To improve performance significantly, indexes should be used on any linked columns in the detail query.

24.5.3 Calculations

Within a report either through summary or formula columns, ensure that most of the calculations are performed by the data source. In case of SQL queries, calculations are performed on the database rather than on the data retrieved by the report. User-defined functions and procedures stored by the database can also be included in the query select list of an Oracle Database or a JDBC query. This is more efficient than Note: Ensure that the data types of the non-SQL sources match column wise. Note: Lack of appropriate indexes can result in many full-table scans and slows down performance.