6 Manage Oracle Database for Oracle Fusion Applications

Oracle Enterprise Manager Cloud Control 13 provides integrated functionality with Oracle Database to monitor performance, diagnose and tune problems, and test database changes on a test system before implementing them to a production system, as described in the following sections:

For more information about Oracle Database 12c, see Oracle Enterprise Manager Cloud Control Documentation 12c Release 5.

For more information about Oracle Enterprise Manager Cloud Control 13, see Oracle Enterprise Manager Cloud Control Online Documentation Library Release 13.2.

6.1 Access Oracle Database Information in Cloud Control

This section describes how to access and monitor database statistics from the Performance pages of Enterprise Manager Cloud Control 13c. Using Cloud Control, the following statistics can be monitored from the Performance page:

To access the Performance page for Oracle Database:

  1. From the Targets menu, select Databases.

  2. On the Database page, the Status pane shows all databases monitored by Cloud Control. Select a database from the list.

  3. Once a database is selected, a summary page for the database displays. Click the Performance menu and select Performance Home for a complete summary of all performance and tuning metrics.

6.1.1 Database Statistics

Database statistics provide information about the type of load on the database and the internal and external resources used by the database. To accurately diagnose performance problems with the database using ADDM, statistics must be available.

A cumulative statistic is a count such as the number of block reads. Oracle Database generates many types of cumulative statistics for the system, sessions, and individual SQL statements. Oracle Database also tracks cumulative statistics about segments and services. Automatic Workload Repository (AWR) automates database statistics gathering by collecting, processing, and maintaining performance statistics for database problem detection and self-tuning purposes.

By default, the database gathers statistics every hour and creates an AWR snapshot, which is a set of data for a specific time that is used for performance comparisons. The delta values captured by the snapshot represent the changes for each statistic over the time period. Statistics gathered by AWR are queried from memory. The gathered data can be displayed in both reports and views.

See section Gathering Database Statistics Using the Automatic Workload Repository in the Oracle Database 2 Day + Performance Tuning Guide for details about the database statistics collected and processed by AWR.

6.1.2 Database Alerts

A built-in alerts infrastructure is provided to notify about impending problems with the database. By default, Oracle Database enables the following alerts:

  • Tablespace Usage

  • Snapshot Too Old

  • Recovery Area Low on Free Space

  • Resumable Session Suspended

In addition to these default alerts, performance alerts can be used to detect any unusual changes in database performance.

See the Monitoring Performance Alerts section in the Oracle Database 2 Day + Performance Tuning Guide for details on setting metric thresholds for performance alerts, responding to alerts, and clearing alerts.

6.1.3 Database Instance

On the Performance page, there are several charts that can be used to monitor database instance activity. The Performance page can also be customized so that the most useful instance activity charts are displayed by default.

See the Monitoring Instance Activity section in theOracle Database 2 Day + Performance Tuning Guide for details on monitoring:

  • Throughput: measures the amount of work the database performs in a unit of time. The Throughput charts show any contention that appears in the Average Active Sessions chart.

  • I/O: shows I/O statistics collected from all database clients. The I/O wait time for a database process represents the amount of time that the process could have been doing useful work if a pending I/O had completed. Oracle Database captures the I/O wait times for all important I/O components in a uniform fashion so that every I/O wait by any Oracle process can be derived from the I/O statistics.

  • Parallel executions: shows system metrics related to parallel queries. Metrics are statistical counts per unit. The unit could be a time measure, such as seconds, or per transaction, or session.

  • Services: shows services waiting for the corresponding wait event during the time period shown. Services represent groups of applications with common attributes, service-level thresholds, and priorities. Only active services are shown.

6.1.4 User and Session Activity

Database time (DB time) is an indicator of the total database instance workload. The average active sessions for a time period equals the total database time of all user sessions during the period divided by the elapsed time (wall-clock time) for the period.

The Average Active Sessions chart on the Performance page shows the average active sessions for CPU usage and wait classes in the time period. Drill down from the chart to identify the causes of instance-related performance issues and resolve them.

See the Monitoring User Activity section in theOracle Database 2 Day + Performance Tuning Guide for details on monitoring:

  • Top SQL: On the Active Sessions Working page, the Top Working SQL table shows the database activity for actively running SQL statements that are consuming CPU resources. If one or several SQL statements are consuming most of the activity, then it should be investigated.

  • Top sessions: On the Active Sessions Working page, the Top Working Sessions table displays the top sessions waiting for the corresponding wait class during the selected time period. A session is a logical entity in the database instance memory that represents the state of a current user login to the database. A session lasts from the time a user logs in to the database until the user disconnects. If a single session is consuming the majority of database activity, then it should be investigated.

  • Top services: This table displays the top services waiting for the corresponding wait event during the selected time period. A service is a group of applications with common attributes, service-level thresholds, and priorities. If a service is using the majority of the wait time, then it should be investigated.

  • Top modules: This table displays the top modules waiting for the corresponding wait event during the selected time period. Modules represent the applications that set the service name as part of the workload definition. If a single module is using the majority of the wait time, then it should be investigated.

  • Top actions: This table displays the top actions waiting for the corresponding wait event during the selected time period. Actions represent the jobs that are performed by a module. If a single action is using the majority of the wait time, then it should be investigated.

  • Top clients: This table displays the top clients waiting for the corresponding wait event during the selected time period. A client can be a Web browser or any client process that initiates requests for an operation to be performed by the database. If a single client is using the majority of the wait time, then it should be investigated.

  • Top PL/SQL: This table displays the top PL/SQL subprograms waiting for the corresponding wait event during the selected time period. If a single PL/SQL subprogram is using the majority of the wait time, then it should be investigated.

  • Top files: This table displays the average wait time for specific files during the selected time period. This data is available from the Active Sessions Waiting: User I/O page.

  • Top objects: This table displays the top database objects waiting for the corresponding wait event during the selected time period. This data is available from the Active Sessions Waiting: User I/O page.

6.1.5 Host System

The Host chart on the Performance page displays utilization information about the system hosting the database.

See the Monitoring Host Activity section in theOracle Database 2 Day + Performance Tuning Guide for details to determine if the host system has enough resources available to run the database. Appropriate expectations can be established for the amount of CPU, memory, and disk resources that the system should be using, and then verify that the database is not consuming too many of these resources.

6.2 Set up Diagnostic and Tune Tools for Oracle Fusion Applications Databases

Performance tuning is an iterative process. Removing the first bottleneck (a point where resource contention is highest) may not lead to performance improvement immediately because another bottleneck might be revealed that has an even greater performance impact on the system.

Oracle Database provides several tools that make possible to diagnose and tune performance problems. Automatic Database Diagnostic Monitor (ADDM) analyzes statistics to provide automatic diagnosis of major performance problems. Particular analysis can be also performed, using statistics from AWR and ASH reports, wait events, and SQL trace files to identify other bottlenecks in the database.

Tasks for diagnosing and tuning Oracle Database include:

6.2.1 Create a Baseline of the Database

Before the database can be tuned, a performance baseline that can be used for comparison if a performance problem arises must be established. Oracle Database automatically maintains a system-defined moving window baseline that contains all AWR data within the AWR retention period, which by default is 8 days. You can also create your own baseline by specifying and preserving a pair or a range of snapshots as a baseline. The snapshots contained in a baseline are excluded from the automatic AWR purging process and are retained indefinitely.

See the Managing Baselines section in the Oracle Database 2 Day + Performance Tuning Guide for details on creating a baseline, deleting a baseline, computing threshold statistics for baselines, and setting metric thresholds for baselines.

6.2.2 Tune the Database Proactively

Automatic Database Diagnostic Monitor (ADDM), a self-diagnostic software built into Oracle Database, automatically detects and reports performance problems with the database. The results are displayed as ADDM findings on the Database Home page in Oracle Enterprise Manager Cloud Control. Reviewing the ADDM findings makes possible to quickly identify the performance problems that require attention. Before using another performance tuning method described in this guide, first review the results of the ADDM analysis.

See the Automatic Database Performance Monitoring section in theOracle Database 2 Day + Performance Tuning Guide for details on:

  • Configuring Automatic Database Diagnostic Monitor

  • Reviewing the Automatic Database Diagnostic Monitor Analysis

  • Interpretation of Automatic Database Diagnostic Monitor Findings

  • Implementing Automatic Database Diagnostic Monitor Recommendations

  • Viewing Snapshot Statistics

6.2.3 Tune the Database Reactively

While ADDM proactively allows users to diagnose database performance problems when they happen, there may be times when database performance problems need to be identified reactively. For example, comparing database performance over time, or analyzing a very short duration for short-lived performance problems may be needed. Wait events may also be examined, to determine if user response time can be improved by reducing the time that is spent waiting by server processes.

See the Reactive Database Tuning section in theOracle Database 2 Day + Performance Tuning Guide for details on:

  • Manual Database Performance Monitoring

  • Resolving Transient Performance Problems

  • Resolving Performance Degradation Over Time

6.2.4 Tune SQL Statements

When Oracle Database executes a SQL statement, the query optimizer (also called the optimizer) first determines the best and most efficient way to retrieve the results. It compares the cost of all possible approaches and chooses the approach with the least cost. The access method for physically executing a SQL statement is called an execution plan, which the optimizer is responsible for generating. The determination of an execution plan is an important step in the processing of any SQL statement, and can greatly affect execution time.

The following topics are discussed:

See the Tuning SQL Statements section in the Oracle Database 2 Day + Performance Tuning Guide for details on:

  • Identifying High-Load SQL Statements

  • Tuning SQL Statements

  • Optimizing Data Access Paths

For specific SQL tuning tips, see Optimize SQL Statements.

6.2.4.1 Create SQL Tuning Sets

A SQL tuning set is a database object that includes one or more SQL statements and their execution statistics and context. The set can be used as an input for advisors such as SQL Tuning Advisor, SQL Access Advisor, and SQL Performance Analyzer. SQL statements can be loaded into a SQL tuning set from different SQL sources, such as AWR, the cursor cache, or high-load SQL statements identified. SQL tuning sets are transportable, enabling SQL workloads to be transferred between databases for remote performance diagnostics and tuning. When high-load SQL statements are identified on a production system, it may not be desirable to perform investigation and tuning activities directly on this system. This feature makes possible to transport the high-load SQL statements to a test system, where they can be safely analyzed and tuned.

To create a SQL tuning set, use the SQL Tuning Sets page, accessible from Additional Monitoring Links on the Database Performance page.

For more information about SQL tuning sets, see section Managing SQL Tuning Sets.

6.2.4.2 Manage SQL Profiles

A SQL profile is a set of auxiliary information that is built during automatic tuning of a SQL statement. A SQL profile is to a SQL statement what statistics are to a table.

During SQL profiling, the optimizer uses the execution history of the SQL statement to create appropriate settings for optimizer parameters. After SQL profiling completes, the optimizer uses the information in the SQL profile and regular database statistics to generate execution plans. The additional information enables the database to produce well-tuned plans for corresponding SQL statements.

After running a SQL Tuning Advisor task with a comprehensive scope, a SQL profile may be recommended. If the recommendation is accepted, then the database creates the SQL profile and enables it for the SQL statement.

To manage SQL profiles, use the Plan Control tab, accessible from the SQL Details page of the SQL statement that is using a SQL profile.

For more information about SQL profiles, see section Managing SQL Profiles.

6.2.4.3 Use SQL Tuning Advisor

Oracle Database can generate SQL tuning reports automatically. Automatic SQL Tuning runs during system maintenance windows as an automated maintenance task, searching for ways to improve the execution plans of high-load SQL statements.

ADDM also automatically identifies high-load SQL statements. If ADDM identifies such statements, then click Schedule/Run SQL Tuning Advisor on the Recommendation Detail page to run SQL Tuning Advisor on these statements.

For more information about SQL Tuning Advisor, see the Tuning SQL Statements Using SQL Tuning Advisor section in the Oracle Database 2 Day + Performance Tuning Guide.

6.2.4.4 Use SQL Access Advisor

To achieve optimal performance for data-intensive queries, materialized views and indexes are essential for SQL statements. However, implementing these objects does not come without cost. Creation and maintenance of these objects can be time-consuming. Space requirements can be significant. SQL Access Advisor optimizes query access paths by recommending materialized views and view logs, indexes, SQL profiles, and partitions for a specific workload.

To run SQL Access Advisor, use the SQL Access Advisor link on the SQL Advisors page, accessible from the Advisor Central page under Related Links on the Database Home page.

For more information about SQL Access Advisor, see the Optimizing Data Access Paths section in the Oracle Database 2 Day + Performance Tuning Guide.

6.2.4.5 Use SQL Tracing

The SQL Trace facility can be used to monitor Oracle Fusion Applications running against Oracle Database by assessing the efficiency of the SQL statements that Oracle Fusion applications are running. The SQL Trace facility provides performance information for individual SQL statements and generates detailed statistics for each statement.

Then, the TKPROF program can be run to format the contents of the SQL trace file and place the output into a readable output file. The TKPROF program reports each statement executed with the resources it has consumed, the number of times it was called, and the number of rows which it processed. This information makes possible to easily locate SQL statements that are using the greatest resource.

For more information about using SQL tracing, see the Using the SQL Trace Facility and TKPROF section in the Oracle® Database 2 Day + Performance Tuning Guide.

If a performance problem is reported for a particular business transaction for a given session in Oracle Fusion Applications, the user of the session can be instructed to enable a SQL trace for that transaction by using the Record Issue feature as documented in MyOracle Support Note 2122074.1.

  1. Select Performance Statistics radio button.

  2. Check the Database Tracing box under the Advanced Option section.

  3. Check Include bind variables and/or Include wait events as appropriate.

This enables SQL trace for the selected transaction and does not affect transactions that belong to other sessions.

6.2.5 Review Automatic Database Diagnostic Monitor (ADDM) Reports Regularly

ADDM automatically detects and reports performance problems with the database. The results are displayed as ADDM findings on the Database Home page in Oracle Enterprise Manager Cloud Control (Cloud Control). Reviewing the ADDM findings makes possible to quickly identify the performance problems that require attention. Always review the results of the ADDM analysis.

Each ADDM finding provides a list of recommendations for reducing the effect of the performance problem. ADDM findings should be reviewed and implement the recommendations every day as part of regular database maintenance. Even when the database is operating at an optimal performance level, continue using ADDM to monitor database performance on an ongoing basis.

For instance, ADDM will report if database cache sizes need to be increased.

6.2.6 Compare Database Performance Over Time Using AWR Reports

Performance degradation of the database occurs when the database was performing optimally in the past, such as 6 months ago, but has gradually degraded to a point where it becomes noticeable to the users. The Automatic Workload Repository (AWR) Compare Periods report makes possible to compare database performance between two periods of time to identify any performance degradation that may have occurred over time.

The AWR Compare Periods report compares a new baseline or a pair of snapshots to an existing baseline. Before generating this report, an existing baseline that represents the system operating at an optimal level should be available, as described in Create a Baseline of the Database. If an existing baseline is unavailable, this report can be used to compare two periods of time using two pairs of snapshots. To generate the AWR Compare Periods report, use the Automatic Workload Repository page in Database Control, accessible from the Database Server page.

For more information about generating AWR Compare Periods reports, see the Running the AWR Compare Periods Reports section in the Oracle Database 2 Day + Performance Tuning Guide.

6.2.7 Identify Transient Performance Problems Using ASH Reports

ADDM tries to report the most significant performance problems during an analysis period in terms of their impact on DB time. If a particular problem lasts for a very short duration, then its severity might be averaged out or minimized by other performance problems in the analysis period. Therefore, the problem may not appear in the ADDM findings. Whether a performance problem is captured by ADDM depends on its duration compared to the interval between the AWR snapshots.

To capture a detailed history of database activity, Oracle Database samples active sessions each second with the Active Session History (ASH) sampler. ASH gathers sampled data at the session level rather than at the instance level. By capturing statistics for only active sessions, the size of the sampled data is directly related to the work being performed.

To generate the ASH report, under Average Active Sessions on the Database Performance page, click Run ASH Report.

For more information about generating ASH reports, see the Running Active Session History Reports section in the Oracle Database 2 Day + Performance Tuning Guide.

6.2.8 Identify Wait Time Using Wait Events

Wait events are statistics that are incremented by a server process or thread to indicate that it had to wait for an event to complete before being able to continue processing. Whenever an Oracle Database process waits for something, it records the wait using one of a set of predefined wait events. Wait event data reveals various symptoms of problems that might be affecting performance, such as latch contention, buffer contention, and I/O contention.

Wait event statistics include the number of times an event was waited for and the time waited for the event to complete. To minimize user response time, reduce the time spent by server processes waiting for event completion. Not all wait events have the same wait time. Therefore, it is more important to examine events with high wait time rather than wait events with a high number of occurrences.

It is possible to query wait event statistics from various V$ dynamic performance views. For more information about using wait events, see the Using Wait Event Statistics to Drill Down to Bottlenecks section in the Oracle Database 2 Day + Performance Tuning Guide.

6.3 Tune Tips Specific to Oracle Fusion Applications Environments

This section provides configuration, tuning, and other tips so that the analysis to identify other performance issues in the database can be performed.

Refer to the following sections for additional details to tune the Oracle Fusion Application environment:

6.3.1 Discover How a Connection is Being Used

Oracle Fusion Applications set values on a number of v$session attributes to indicate how the connection is being used. For example, when looking at a connection consuming high CPU on the database, or when trying to understand what connections are used for what processes, these attribute values (Table 6-1) may help provide the answer.

Table 6-1 v$session Attribute Values

Attribute in v$session Value Being Set

Process

Data Source Name (such as ApplicationDB)

Program

WebLogic Server Domain plus Managed Server name, prefixed by DS (such as DS/FinancialDomain/AccountsReceivableServer_1)

Module

  • For ADF: ADF BC application module name

  • For ESS:

    • For Java job type, the class name (minus oracle.apps)

    • For PL/SQL, the package and procedure name (such as mypkg.myproc)

    • For other job types, the executable name should be passed

  • For BI Publisher: the name of the report

Action

  • For ADF: jspx name

  • For ESS: jobDefinitionName

  • For BI Publisher, if request is submitted:

    • Using ESS scheduler: ESS Job Definition Name

    • Using BIP Scheduler Job: BIP Job Name submitted by the user

    • Using BIP online: static string "BIP:Online"

    • Using BIP Webservices: the name of the webservices

Client_Identifier

Application User Name

6.3.2 Tune Database Initialization Parameters

Table 6-2 provides the database initialization parameter guidelines for Oracle Fusion Applications. Within the Oracle Fusion Applications ecosystem, there exist four types of databases:

  • Online Transaction Processing Starter or Production configuration (OLTP)

  • Oracle Fusion IDM databases: one for OID and one for OIM

  • Oracle Fusion Applications Data Warehouse (DW)

These parameter values are intended to provide a baseline. The database that is installed during Oracle Fusion Applications provisioning is configured with the suggested values. As the deployment and workloads characteristics change, these values may need to be adjusted.

Tuning the database involves adjusting the sizing parameters based on the available resource and load on the database. The sga_target, pga_aggregate_target and processes parameters from Table 6-2 are examples of such parameters that need to be tuned based on SGA and PGA advisories and looking into the number of open processes during peak load.

In addition, setting a minimum value for SHARED_POOL_SIZE and DB_CACHE_SIZE to minimize frequent resizing may be considered.

Table 6-2 Common init.ora Parameters

Parameter Name Description, Default value and suggested start value

audit_trail

Enables or disables database auditing.

Oracle Release 2 (11.2.0.2) default value: DB

The suggested value for all Oracle Fusion Applications databases is NONE.

_fix_control

This parameter addresses the dynamic sampling of global temporary tables.

Oracle Release 2 (11.2.0.2) default value: N/A

The suggested value for an Oracle Fusion Applications Starter or Production database is 5483301:OFF, 6708183:ON

plsql_code_type

PLSQL_CODE_TYPE specifies the compilation mode for PL/SQL library units.

INTERPRETED: PL/SQL library units are compiled to PL/SQL bytecode format. Such modules are executed by the PL/SQL interpreter engine.

NATIVE: PL/SQL library units are compiled to native (machine) code. Such modules are executed natively without incurring any interpreter impacts.

Oracle Release 2 (11.2.0.2) default value is INTERPRETED.

The suggested value for all Oracle Fusion Applications databases is NATIVE.

nls_sort

NLS_SORT specifies the collating sequence for ORDER BY queries.

  • If the value is set to BINARY, the collating sequence for ORDER BY queries is based on the numeric value of characters (a binary sort that requires fewer system resources).

  • If the value is a named linguistic sort, sorting is based on the order of the defined linguistic sort. Most (but not all) languages supported by the NLS_LANGUAGE parameter also support a linguistic sort with the same name.

Oracle Release 2 (11.2.0.2) default value: Derived from NLS_LANGUAGE.

The suggested value for all Oracle Fusion Applications databases is BINARY.

open_cursors

Specifies the maximum number of open cursors (handles to private SQL areas) a session can have at once. It is important to set the value of OPEN_CURSORS high enough to prevent the application from running out of open cursors.

Oracle Release 2 (11.2.0.2) default value is 50.

The suggested value for all Oracle Fusion Applications databases is 500.

session_cached_cursors

Specifies the number of session cursors to cache. Repeated parse calls of the same SQL statement cause the session cursor for that statement to be moved into the session cursor cache. Subsequent parse calls find the cursor in the cache and do not reopen the cursor. Oracle uses a least recently used algorithm to remove entries in the session cursor cache to make room for new entries when needed.

This parameter also constrains the size of the PL/SQL cursor cache that PL/SQL uses to avoid having to re-parse as statements are re-executed by a user.

Oracle Release 2 (11.2.0.2) default value is 50.

The suggested value for all Oracle Fusion Applications databases is 500.

_b_tree_bitmap_plans

This enables use of bitmap access paths for b-tree indexes.

Oracle Release 2 (11.2.0.2) default value: TRUE

The suggested value for all Oracle Fusion Applications databases is FALSE.

processes

Sets the maximum number of operating system processes that can be connected to Oracle concurrently. The value of this parameter must account for Oracle background processes. SESSIONS parameter is deduced from this value.

Oracle Release 2 (11.2.0.2) default value: 100

The suggested value for an Oracle Fusion Applications DW or IDM database (OID, OIM) is 2500.

The suggested value for an Oracle Fusion Applications Starter or Production database is 5000.

sga_target

Setting this parameter to a nonzero value enables Automatic Shared Memory Management. Consider using automatic memory management, both to simplify configuration and to improve performance.

Oracle Release 2 (11.2.0.2) default value: 0

The suggested value for Oracle Fusion Applications IDM databases (OID, OIM) is 4 GB.

The suggested value for an Oracle Fusion Applications Starter database is 9 GB.

The suggested value for an Oracle Fusion Applications DW database is 8 GB.

The suggested value for an Oracle Fusion Applications Production database is 18 GB (based on reference hardware having 32 GB of physical memory).

pga_aggregate_target

Specifies the target aggregate Program Global Area (PGA) memory available to all server processes attached to the instance.

Oracle Release 2 (11.2.0.2) default value is 0.

The suggested value for Oracle Fusion Applications IDM databases (OID, OIM) is 2 GB.

The suggested value for an Oracle Fusion Applications Starter database is 4 GB.

The suggested value for an Oracle Fusion Applications DW database is 4 GB.

The suggested value for an Oracle Fusion Applications Production database is 8 GB (based on reference hardware having 32 GB of physical memory).

star_transformation_enabled

Determines whether a cost-based query transformation will be applied to star queries.

Oracle Release 2 (11.2.0.2) default value is FALSE.

The suggested value for an Oracle Fusion Applications DW database is TRUE.

query_rewrite_integrity

Determines the degree to which Oracle must enforce query rewriting

Oracle Release 2 (11.2.0.2) default value is ENFORCED.

The suggested value for an Oracle Fusion Applications DW database is TRUSTED.

PARALLEL_MAX_SERVERS

Specifies the maximum number of parallel execution processes and parallel recovery processes for an instance.

Oracle Release 2 (11.2.0.2) default value is Derived.

The suggested value for an Oracle Fusion Applications DW database is 16.

The suggested value for all Oracle Fusion Applications IDM databases is NUM_CPU_CORES (number of CPU cores on the database server).

The suggested value for all Oracle Fusion Applications Production databases is NUM_CPU_CORES (number of CPU cores on the database server).

JOB_QUEUE_PROCESSES

Specifies the maximum number of job slaves per instance that can be created for the execution of DBMS_JOB jobs and Oracle Scheduler (DBMS_SCHEDULER) jobs.

Oracle Release 2 (11.2.0.2) default value is 1000.

The suggested value for an Oracle Fusion Applications DW database is 10.

The suggested value for all Oracle Fusion Applications IDM databases is NUM_CPU_CORES (number of CPU cores on the database server).

The suggested value for all Oracle Fusion Applications Production databases is NUM_CPU_CORES (number of CPU cores on the database server).

disk_asynch_io

Controls whether I/O to datafiles, control files, and logfiles is asynchronous.

Oracle Release 2 (11.2.0.2) default value is TRUE.

The suggested value for all Oracle Fusion Applications databases is TRUE.

filesystemio_options

Specifies I/O on file system files to be asynchronous I/O or direct I/O.

Oracle Release 2 (11.2.0.2) default value: This parameter is platform-specific and has a default value that is best for a particular platform.

The suggested value for all Oracle Fusion Applications databases is to use a value that is supported by the specific platform. Do not set it to NONE.

DB_SECUREFILE

Specifies whether or not to treat LOB files as SecureFiles.

Oracle Release 2 (11.2.0.2) default value is PERMITTED.

The suggested value for all Oracle Fusion Applications databases is ALWAYS.

_active_session_legacy_behavior

Enables active session legacy behavior.

Oracle Release 2 (11.2.0.2) default value: FALSE

The suggested value for all Oracle Fusion Applications Production databases is TRUE.

shared_servers

Specifies the number of server processes that need to be created when an instance is started.

Oracle Release 2 (11.2.0.2) default value: 0

The suggested value for all Oracle Fusion Applications IDM database is 0.

The suggested value for all Oracle Fusion Applications Production database is 0 or 1. A value of 1 is acceptable if the dispatchers parameter has the SERVICE clause defined as XDB.

6.3.3 Use Fusion Applications Tools to Optimize UNDO, TEMP, and LOGS Handling

This section contains an overview for configuring a database for performance. Although it is expected that modifications will be made to the database on an ongoing basis to maintain or improve performance, significant benefits can be gained by proper initial configuration of the database.

In addition to tuning the database parameters, the database administrator should properly configure the REDO Logs, and the UNDO and TEMP tablespaces, to meet the demands of the expected or observed database workload. The recommendations in this section are intended to provide initial guidance in these areas.

REDO Logs

Under demanding workloads, the size of the redo log files can influence performance. Generally, larger redo log files provide better performance. Undersized log files increase checkpoint activity and reduce performance. It is possible to obtain sizing advice on the Redo Log Groups page of Fusion Applications Control. In addition, depending on the storage configuration and performance characteristics, it may be necessary to redistribute redo logs to optimize I/O performance. The suggested minimum setting for Redo Logs is to have 3 log files of 2 GB each.

UNDO

Oracle recommends that the default mode of automatic undo management be leveraged to maximize performance and efficiency. Oracle Enterprise Manager Fusion Applications Control Automatic Undo Management Advisor should be leveraged to set configuration details for undo tablespace and retention settings. This advisor also provides access to the Undo Advisor that assesses the effect and provides advice of a new undo retention setting. The suggested minimum size for the UNDO tablespace is 6 GB with auto-extend enabled.

Tablespaces

The location of the datafiles should be optimized for I/O performance and growth. Also, Fusion Applications Control Segment Advisor should be leveraged to optimize the use of segment space and assure performance degradation does not occur. The advisor can provide historical growth trends of segments, which can be used to proactively plan for growth.

TEMP

Oracle recommends the use of locally-managed temporary tablespaces with UNIFORM extents and the default size of 1 MB. Some workflows in Oracle Fusion applications can generate a large amount of disk sorts that require high temporary space requirements. Therefore, the use of multiple temporary tablespaces and tablespace groups is recommended to meet these requirements and assure optimal performance. A suggested minimum size for the TEMP tablespace (or tablespace group) assigned to the Oracle Fusion Applications schema owners is 6 GB with auto-extend enabled.

6.3.4 Configure Kernel Parameters

The parameters listed here are only a subset of the parameters needed to properly configure the database environment. Consult the Oracle Database Installation Guide for the specific operating system to determine the overall requirements for the kernel parameter settings. Installation guides are available in the Oracle Database Documentation Library. For additional details, go to My Oracle Support and search for DocID 169706.1.

If the current values of these parameters are larger than what is recommended, no change is necessary.

  • SHMMAX - Set to the larger of either the largest System Global Area (SGA) on the system or half of the physical memory available.

  • SEMMNS - Set to the larger of either 32000 or twice the sum of the PROCESSES initialization parameter for each Oracle database.

  • SHMALL - Set to the sum of all SGAs divided by the page size (getconf PAGE_SIZE).

  • SHMMNI - Recommended value is 4096.

  • vm.nr_hugepages - Should be set for SGA larger than 8 GB. The value should be set to the sum of all SGAs.

6.3.5 Configure the Database Listener

The database listener is responsible for accepting and routing connection requests to the database. The parameters described in this section can change the behavior of the listener and, therefore, need to be examined and changed accordingly to address the needs of the particular database connection load.

SQLNET.EXPIRE_TIME Parameter

For Fusion Application environments that leverage a firewall between the middle and database tiers, it is recommended to set the database listener setting SQLNET.EXPIRE_TIME. This parameter is defined in the sqlnet.ora file that is located in the TNS_ADMIN location. This parameter is used to set a time interval, in minutes, to determine how often to probe connections to verify their status.

Typically, a firewall is configured to terminate connections after it has been idle for a specified amount of time. Setting SQLNET.EXPIRE_TIME to an interval smaller than the firewall's will generate enough traffic within an appropriate interval to prevent the firewall from determining the connections are in an idle state and terminating these connections. A setting of SQLNET.EXPIRE_TIME = 10 is commonly used.

INBOUND_CONNECT_TIMEOUT Parameter

On occasion, due to network latency, connections can exceed the default timeout of 60 seconds. Typical symptoms of this include observing "TNS-12537: TNS:connection closed" errors in the database alert logs. One of the things that can resolve these issues is to increase the timeout parameters. A suggested value of INBOUND_CONNECT_TIMEOUT_<listenerName> = 120 (listener.ora) and SQLNET.INBOUND_CONNECT_TIMEOUT=130 (sqlnet.ora) is recommended.

6.3.6 Tune Tips for the Real Application Cluster (RAC) Databases in Oracle Fusion Applications

If the Oracle Fusion Applications environment was installed using Real Application Clusters (RAC), refer to the Oracle Database 2 Day + Real Application Clusters Guide:


The sections below provide a few initial parameters and tips on using the Automatic Workload Repository (AWR) during any troubleshooting sessions.

RAC supports the transparent deployment of a single database across a cluster of servers, providing fault tolerance from hardware failures or planned outages in terms of availability, scalability, and low-cost computing.

Initial Setting

  • The network between the nodes of a RAC cluster must be private.

  • Supported links: Gigabit Ethernet and InfiniBand

  • Supported transport protocols: UDP or RDS

  • Use multiple or dual-ported Network Interface Cards (NICs) for redundancy and increase bandwidth with NIC bonding.

  • Set these parameters with respect to the ORACLE/OS release for Interconnect performance.

net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Troubleshooting

Use this information to identify if proper interconnect is used and picked up by ClusterWare.

  • To identify the interconnect:

    show parameter cluster_interconnects
    or
    select name,ip_address,is_public from v$cluster_interconnects
    

    The Alert log will have an entry similar to this:

    Cluster communication is configured to use the following interface(s) for this instance
     123.45.67.89
    cluster interconnect IPC version:Oracle UDP/IP (generic)
    
  • Identify network and contention issues.

    Check for "gc cr lost blocks" wait event in Automatic Workload Repository (AWR)/sysstats.

    If found, check for these errors on the NIC:

    • Dropped packets/fragments

    • Buffer overflows

    • Packet reassembly failures or timeouts

    • TX/RX errors

    Use these commands to find any errors:

    netstat -s 
    Ifconfig -a
    ORADEBUG
    
  • Identify Interconnect performance from AWR.

    • Under Global Cache and Enqueue Services - Workload Characteristics

      Avg global cache cr block receive time (ms): should be <=15 ms

    • Global Cache and Enqueue Services - Messaging Statistics

      Avg message sent queue time on ksxp (ms): should be <1 ms

    • Under Interconnect Ping Latency Stats

      Avg Latency 8K msg should be close to Avg Latency 500B msg.

  • These wait events from AWR and sysstat can indicate contention related to RAC.

    GC current block busy
    GV cr block busy
    GC current buffer busy
    GC buffer busy acquire/release
    

    See the Oracle Real Application Clusters Administration and Deployment Guide for a complete list.

    These wait events in the AWR indicate that there might be a Hot Block that is causing these wait events. From the AWR Segment Statistics, the objects can be found.

    Enq:TX Index Contention
    Gc buffer busy
    Gc current block busy
    Gc current split
    

    This issue will be noticed if multiple sessions are inserting into a single object or are using a sequence, and the indexed column is sequentially increasing. To address the specific issues:

    • Identify the indexes and Global Hash Partition them.

    • Increase the Sequence Cache if ordering is not a problem.

6.3.7 Optimize SQL Statements

When Oracle Database executes a SQL statement, the query optimizer (also called the optimizer) first determines the best and most efficient way to retrieve the results. It compares the cost of all possible approaches and chooses the approach with the least cost. The access method for physically executing a SQL statement is called an execution plan, which the optimizer is responsible for generating. The determination of an execution plan is an important step in the processing of any SQL statement, and can greatly affect execution time.

See the Tuning SQL Statements section in the Oracle Database 2 Day + Performance Tuning Guide for details on:

  • Identifying High-Load SQL Statements

  • Tuning SQL Statements

  • Optimizing Data Access Paths

Oracle Fusion Applications use Cost Based Optimization (CBO) to choose the most efficient execution plan for SQL statements. Using this approach, the optimizer determines the most optimal execution plan by costing available access paths and factoring information based on statistics for the schema objects accessed by the SQL statement:

6.3.7.1 Collect Optimizer Statistics

For the query optimizer to produce an optimal execution plan, the statistics in the data dictionary should accurately reflect the volume and data distribution of the tables and indexes. To this end, database statistics should be refreshed periodically. However, that does not necessarily imply that statistics should be gathered frequently. Systems that are close to going live typically experience inserts of a large amount of data, as data from legacy systems is migrated. In that scenario, the statistics would probably need to be refreshed quite frequently (for instance, after each major load), as large loads could change the data distribution significantly. Once the system reaches steady state, the frequency of statistics collection at the schema and database level should be reduced to approximately once a month. However, statistics on some volatile tables can be gathered as frequently as required.

Oracle Fusion Applications has an automated way of gathering the statistics. It uses DBMS_STATS with the AutoTask feature. For more information about AutoTask, see the Enabling and Disabling Automatic Optimizer Statistics Collection section in the Oracle Database 2 Day + Performance Tuning Guide.

Gather Statistics for Cost Based Optimizer

Oracle Fusion Applications use automatic optimizer statistics collection. That is, the database automatically gathers the optimizer statistics. Automatic statistics eliminates any manual intervention, thereby significantly reducing the onus on a system administrator. For a Data Warehouse (DW) database, optimizer statistics are collected as part of ETL and BI apps, so it is recommended not to use automatic statistics gathering.

Table Statistics and Number of Distinct Values (NDV)

For versions prior to Oracle 12g, a database performance problem can occur by missing a non-popular value in the sample created from the table, leading to a frequency histogram where the number of buckets is less than the number of values.

To work around this problem, set this entry in init.ora:

_fix_control='5483301:off','6708183:ON';

Manual Statistics Gathering

Automatic optimizer statistics collection is sufficient for most of the database objects, but in a database that is close to going live or for tables that are modified significantly, manual statistic gathering is needed. In these cases, use the DBMS_STATS.GATHER_TABLE_STATS procedure. Do not explicitly set any parameters apart from owner and table_name. All the parameters, such as estimate_percent, parallel degree and method_opt, are globally seeded for Oracle Fusion database tables. Therefore, there is no need to use them when manually gathering the statistics. See Figure 6-1.

Figure 6-1 Gather Optimizer Statistics Page



Histograms

All the columns that need a histogram are seeded using DBMS_STATS.SET_TABLE_PREFS and the automatic optimizer statistic collection will create histograms for all the pre-identified columns apart from the columns identified by DBMS_STATS under size auto. It is possible to use DBMS_STATS.SET_TABLE_PREFS to manually seed histograms. See Figure 6-2:

Figure 6-2 Add Table Preferences Page



MDS DB: Collect database statistics for optimizing the MDS database repository performance

Ensure auto-stats collection is enabled.

In most cases, the first 32 characters of PATH_FULLNAME in the MDS_PATHS table are the same. It is possible to prevent the database putting them in the same section of the histogram by doing the following:

  1. Drop the histogram for PATH_FULLNAME column by executing the following as system.

    execute dbms_stats.delete_column_stats(ownname=>'mdsSchemaOwner', tabname=>'MDS_PATHS', colname=>'PATH_FULLNAME', col_stat_type=> 'HISTOGRAM');
    
  2. Set table preferences to exclude collecting histogram for the PATH_FULLNAME column.

execute dbms_stats.set_table_prefs(mdsSchemaOwner, 'MDS_PATHS', 'METHOD_OPT', 'FOR COLUMNS SIZE 1 PATH_FULLNAME');

6.3.7.2 Pin Packages and Cursors

Pinning the objects in the shared pool reduces the possibility of ora-4031 error messages, and increases the performance of the OLTP applications.

Objects are cached in a library cache that uses a Least Recently Used (LRU) algorithm to flush the objects. The problem worsens if these large library cache objects are executed only infrequently. That is, if they are loaded into the library cache whenever required if they have aged out of the cache. This causes most of the problems leading to ora-4031 errors and poor performance for UI-specific flows.

Consider a large package, or any object, that has to be loaded into the shared pool. Large PL/SQL objects present particular challenges. The database has to search for free space for the object. If it cannot get enough contiguous space, it will free many small objects to satisfy the request. If several large objects need to be loaded, the database has to throw out many small objects in the shared pool. Finding candidate objects and freeing memory is very costly. These tasks will affect CPU resources.

The same situation applies to SQL statements that are executed occasionally but are very important from a response time perspective. For example, a statement that is part of a CEO's dashboard is executed once every 3 to 4 hours, but it takes a long time for parsing.

A common question asked is how to keep the LRU algorithm from forcing objects out of the shared pool. This is mainly useful in cases where a SQL statement that is very expensive to parse may just be executed once every 12 hours, such as a dashboard SQL statement. But due to the LRU algorithm, the results are flushed before the next execution. In these cases, it may be preferable to pin the cursor so that subsequent parse times are reduced.

The DBMS_SHARED_POOL package provides procedures to facilitate this. With this, it is possible to ensure in an easy way, that the specified cursors always remain in the Most Recently Used (MRU) end of the cache. This prevents the cursor from being paged out and then re-parsed upon re-load. The DBMS_SHARED_POOL.KEEP procedure is used to pin the cursor and DBMS_SHARED_POOL.UNKEEP is used to unpin the cursor.

6.3.8 Configure the Database Resource Manager

To better ensure system stability during periods of high system load and prevent runaway queries, Oracle Database Resource Manager can be enabled on the Oracle Fusion Applications database instance.

For more details about the feature, including an explanation on when enabling this feature is desired, see section Managing Resources with Oracle Database Resource Manager in the Oracle Database 2 Day + Performance Tuning Guide.

Use the resource manager to:

  • Assign connections to different resource consumer groups.

  • Create directives to manage resource allocations for connections in different resource consumer groups.

The following topics are described:

6.3.8.1 Assign Connections to Resource Consumer Groups

There are multiple ways a connection can be assigned to a resource consumer group. See the for complete details.

See Table 6-1 for connection attributes settings for Oracle Fusion Applications.

6.3.8.2 Use the Oracle Database Resource Manager

This section shows how to use the Oracle Database Resource Manager for Oracle Fusion Applications. Connection attribute mappings, and explicit assignment using a database login trigger are used to assign connections to different resource consumer groups. The plan is enabled by default for a newly-provisioned instance. If the upgrade is being done from earlier releases, the scripts listed in topic Enable the Resource Plan can be run, to create the same resource plan that is enabled by default in a freshly-provisioned database. The resource plan is called FUSIONAPPS_PLAN.

The plan has two resource consumer groups:

  • FUSIONAPPS_ONLINE_GROUP - Connections used for servicing ADF UI pages are assigned to this resource group via a login trigger.

  • FUSIONAPPS_BATCH_GROUP - All other connections used by Fusion Applications are assigned to this group.

Resource Directives

These resource directives are defined:

  • Connections in FUSIONAPPS_ONLINE_GROUP get priority for 45% of the CPU. Parallel query is disabled, and any queries consuming more than 120s of CPU or resulting in more than 10GB of I/O will be canceled.

  • Connections in FUSIONAPPS_BATCH_GROUP get priority for 35% of the CPU. There are no other resource restrictions.

  • Connections used for sysdba activities get priority for 15% of the CPU. There are no other resource restrictions.

  • All non-Oracle Fusion applications connections get priority for 5% of the CPU.

    Note that if a particular resource group does not consume all its allocated CPU, the unused CPU can be used by other resource consumer groups.

Map Connections

To map connections to resource consumer groups, this approach is used:

  • All schemas containing the string FUSION are mapped to FUSIONAPPS_BATCH_GROUP.

  • A login trigger is used to check connections to schema FUSION_RUNTIME. If the connection is coming from an ADF server, assign the connection to FUSIONAPPS_ONLINE_GROUP.

Enable the Resource Plan

To enable this resource plan, follow these steps:

  1. Run this script using sqlplus as sysdba to create the resource plan, the resource consumer groups and the resource directives.

    begin
      DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
      DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
     
      begin
        DBMS_RESOURCE_MANAGER.DELETE_PLAN('FUSIONAPPS_PLAN');
      exception
        when others then
          null;
      end;
     
      begin
        dbms_resource_manager.delete_consumer_group(CONSUMER_GROUP => 'FUSIONAPPS_ONLINE_GROUP');
      exception
        when others then
          null;
      end;
     
      begin
        dbms_resource_manager.delete_consumer_group(CONSUMER_GROUP => 'FUSIONAPPS_BATCH_GROUP');
      exception
        when others then
          null;
      end;
     
      dbms_resource_manager.create_consumer_group(CONSUMER_GROUP => 'FUSIONAPPS_ONLINE_GROUP', COMMENT => 'Consumer Group for online users');
      dbms_resource_manager.create_consumer_group(CONSUMER_GROUP =>'FUSIONAPPS_BATCH_GROUP', COMMENT => 'Consumer Group for batch');
     
      dbms_resource_manager.create_plan(PLAN => 'FUSIONAPPS_PLAN',
      COMMENT => 'Fusion Applications Resource Plan');
     
      dbms_resource_manager.create_plan_directive(
        plan => 'FUSIONAPPS_PLAN',
        group_or_subplan => 'FUSIONAPPS_ONLINE_GROUP',
        comment => 'Online users at level 1',
        mgmt_p1 => 45,
        parallel_degree_limit_p1 => 0,
        switch_time => 120,
        switch_io_megabytes => 10000,
        switch_group => 'CANCEL_SQL');
     
      dbms_resource_manager.create_plan_directive(
        plan => 'FUSIONAPPS_PLAN',
        group_or_subplan => 'FUSIONAPPS_BATCH_GROUP',
        comment => 'Batch users at level 1',
        mgmt_p1 => 35);
     
      dbms_resource_manager.create_plan_directive(
        plan => 'FUSIONAPPS_PLAN',
        group_or_subplan => 'SYS_GROUP',
        comment => 'System administrator group at level 1',
        mgmt_p1 => 15);
     
      dbms_resource_manager.create_plan_directive(
        plan => 'FUSIONAPPS_PLAN',
        group_or_subplan => 'OTHER_GROUPS',
        comment => 'Other users at level 1',
        mgmt_p1 => 5);
     
      for rec in (select username from dba_users where username like '%FUSION%') loop
        if (rec.username <> 'FUSION_READ_ONLY') then
          dbms_resource_manager.set_consumer_group_mapping('ORACLE_USER',rec.username,'FUSIONAPPS_BATCH_GROUP');
        end if;
      end loop;
     
      begin
        dbms_resource_manager.set_consumer_group_mapping('ORACLE_USER','SEARCHSYS','FUSIONAPPS_BATCH_GROUP');
      exception
        when others then
          null;
      end;
     
      DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
      DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
      DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
      dbms_resource_manager_privs.grant_switch_consumer_group('PUBLIC','FUSIONAPPS_ONLINE_GROUP',FALSE);
      dbms_resource_manager_privs.grant_switch_consumer_group('PUBLIC','FUSIONAPPS_BATCH_GROUP',FALSE);
    end;
    /
    
  2. As sysdba, issue the following command to enable the resource plan:

    (if using spfile)
     ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = FUSIONAPPS_PLAN SCOPE = BOTH;
     
    (if not using spfile)
     ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = FUSIONAPPS_PLAN;
    
  3. Run this script using sqlplus as sysdba to create the login trigger:

    CREATE OR REPLACE TRIGGER fusion_resource_trigger
       AFTER logon ON fusion_runtime.schema
    declare
    login_sid pls_integer;
    login_program varchar2(40);
    old_plan21    varchar2(44);
      begin
     
    select 'Y' into login_program from dual where exists
    (select program from v$session where audsid=userenv('sessionid') and
      process like 'ApplicationDB%' and
      ( program is not null and
        program not like 'JDBC Thin Client' and
        program not like '%ess_server%' and
        program not like '%soa_server%' and
        program not like '%SearchServer%' and
        program not like '%search_server%' and
        program not like '%odi_server%' and
        program not like '%bi_server%'
        ) );
     
    if login_program = 'Y'
    then
    dbms_session.switch_current_consumer_group('FUSIONAPPS_ONLINE_GROUP',old_plan21,false);
    else
    null;
    end if;
    EXCEPTION
    when NO_DATA_FOUND
    then
    null;
      end;
      /
    
  4. If applicable, change the init.ora parameter to enable the resource plan:

    RESOURCE_MANAGER_PLAN = FUSIONAPPS_PLAN
    
  5. Bounce all middle tiers.

6.3.8.3 Monitor the Resource Manager

For details, see the Oracle Database Administrator's Guide. In particular, v$rsrc_consumer_groups provides information on CPU wait time and the number of SQL statements canceled.

Scripts and Tips for Monitoring CPU Resource Manager, which is note ID 1338988.1 in My Oracle Support, also has information about monitoring CPU usage for different resource consumer groups. If a resource consumer group is spending significant time waiting for CPU, review the resource directives and see if the waits are expected and if any adjustments are needed.

6.3.9 Tune the PS_TXN Table in the FUSION Schema

Oracle Fusion Applications use the PS_TXN table to store the intermediate processing state. When there are many concurrent users, this table receives a high number of inserts and could suffer from concurrency issues. To detect this contention issue, check the wait event "enq: HW contention" in the AWR report of the database.

To alleviate the contention, follow the steps outlined in the DocID 1444959.1 on My Oracle Support .

6.3.10 Optimize Maintenance Windows

By default, Oracle enables various AUTOTASK clients and preconfigures maintenance windows that can be optimized to reduce unnecessary overhead. The following topics are discussed:

6.3.10.1 Disable AUTOTASK

Starting with Oracle Release 11.2.0.2, these AUTOTASKs should be evaluated. It is recommended that they be disabled if the respective features are not being used.

  • AUTO SPACE ADVISOR

  • SQL TUNING ADVISOR

The syntax for disabling these advisors is:

  • execute dbms_auto_task_admin.disable(client_name => 'auto space advisor',operation => NULL, window_name => NULL);

  • execute dbms_auto_task_admin.disable(client_name => 'sql tuning advisor',operation => NULL, window_name => NULL);

6.3.10.2 Adjust Default Maintenance Windows

Starting with Oracle Release 11.2.0.2, various weekday and weekend windows are preconfigured with durations of 4 and 20 hours respectively. These windows should be adjusted to run during time frames with minimal application workloads. In addition, the weekend windows should be reduced from the default configuration to a duration lower than the "byhour" value defined in the maintenance window's "repeat interval" settings. These values can be reviewed by querying the DBA_SCHEDULER_WINDOWS view. A suggested maintenance window configuration is to enable both the WEEKNIGHT_WINDOW and WEEKEND_WINDOW with a duration of 4 hours each.

Example syntax for how to reduce the duration for maintenance windows is:

  • execute dbms_scheduler.set_attribute(name => WEEKEND_WINDOW', attribute => 'duration', value => '0 04:0:0.0');

  • execute dbms_scheduler.set_attribute(name => WEEKNIGHT_WINDOW', attribute => 'duration', value => '0 04:0:0.0');

6.3.11 Reduce Connection Creation Originating from SOA Server

With the default settings, connection creations originated from the different SOA servers may be seen in each domain, even if the environment is idle. These connections are opened, used and then closed. Under high load, these connection requests could cause performance issues.

To reduce the number of connection creations:

  1. Open the WebLogic console for each domain.

  2. Uncheck the "Remove Infected Connections Enabled" checkbox under the "Connection Pool" tab for the following data sources:

  • EDNDataSource

  • EDNLocalTxDataSource

  • EDNLocalTxSource

  • EDNSource

  • SOADataSource

  • SOALocalTxDataSource

  • mds-soa

6.4 Test Oracle Database Changes

Oracle Real Application Testing makes possible to perform real-world testing of Oracle Database. By capturing production workloads and assessing the impact of system changes on a test system before production deployment, Oracle Real Application Testing minimizes the risk of instabilities associated with changes.

Tasks for testing database changes include:

6.4.1 Use the SQL Performance Analyzer

System changes (such as a upgrading a database or adding an index) may cause changes to execution plans of SQL statements, resulting in a significant impact on SQL performance. SQL Performance Analyzer automates the process of assessing the overall effect of a change on the full SQL workload by identifying performance divergence for each SQL statement.

See section SQL Performance Analyzer in the for details on:

  • Creating an Analysis Task

  • Creating a Pre-Change SQL Trial

  • Creating a Post-Change SQL Trial

  • Comparing SQL Trials

  • Testing a Database Upgrade

6.4.2 Use Database Replay

Database Replay can be used to capture a workload on the production system and replay it on a test system with the exact timing, concurrency, and transaction characteristics of the original workload. This makes possible to test the effects of a system change without affecting the production system.

See section Database Replay in the for details on:

  • Capturing a Database Workload

  • Preprocessing a Database Workload

  • Replaying a Database Workload

  • Analyzing Captured and Replayed Workloads

  • Using Workload Intelligence

  • Using Consolidated Database Replay

  • Using Workload Scale-Up

6.4.3 Manage Test Data Management

Oracle Database offers test data management features that make possible to:

  • Store the list of applications, tables, and relationships between table columns using Application Data Modeling.

  • Replicate information that pertains only to a particular site using data subsetting.

  • Replace sensitive data from the production system with fictitious data that can be used during testing using Oracle Data Masking.

See section Test Data Management in the for details on:

  • Application Data Models

  • Data Subsetting

  • Masking Sensitive Data