using active data guard reporting with oracle e-business suite release

21
9/24/12 Document 1/21 https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128 Using Active Data Guard Reporting with Oracle E-Business Suite Release 12.1 and Oracle Database 11g [ID 1070491.1] Modified: Jun 25, 2012 Type: WHITE PAPER Status: PUBLISHED Priority: 3 Oracle E-Business Suite Release 12 has numerous configuration options that can be chosen to suit particular business scenarios, uptime requirements, hardware capability, and availability requirements. This document describes how to configure Oracle E-Business Suite Release 12 for Active Data Guard Reporting. Note: At present, this document applies to UNIX and Linux platforms only. The most current version of this document can be obtained in My Oracle Support Knowledge Document 1070491.1 . There is a change log at the end of this document. A number of conventions are used in describing the Oracle E-Business Suite architecture: Convention Meaning Application tier Machines (nodes) running Forms, Web, and other services (servers). Sometimes called middle tier. Database tier Machines (nodes) running the Oracle E-Business Suite database. Primary System Primary Oracle E-Business Suite system Standby System Oracle E-Business Suite system running as a data guard standby to the primary system, open for read only access. oracle User account that owns the database file system (database ORACLE_HOME and files). CONTEXT_NAME The CONTEXT_NAME variable specifies the name of the Applications context that is used by AutoConfig. The default is <SID >_ <hostname >. CONTEXT_FILE Full path to the Applications context file on the application tier or database tier. The default locations are as follows. Application tier context file: <APPL_TOP >/admin/ <CONTEXT_NAME >.xml Database tier context file: <RDBMS ORACLE_HOME >/appsutil/ <CONTEXT_NAME >.xml APPSpwd Oracle E-Business Suite database user password. Monospace Text Represents command line text. Type such a command exactly as shown. < > Text enclosed in angle brackets represents a variable. Substitute a value for the variable text. Do not type the angle brackets. \ On UNIX or Linux, the backslash character can be entered to indicate continuation of the command line on the next screen line. This document is divided into the following sections: Section 1: Overview Section 2: Concurrent Manager Reporting Section 3: Configuration Section 4: Managing ADG Support

Upload: mohammed-abdul-muqeet

Post on 28-Oct-2014

208 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

1/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Using Active Data Guard Reporting with Oracle E-Business Suite Release12.1 and Oracle Database 11g [ID 1070491.1]

Modified: Jun 25, 2012 Type: WHITE PAPER Status: PUBLISHED Priority: 3

Oracle E-Business Suite Release 12 has numerous configuration options that can be chosen to suit particular businessscenarios, uptime requirements, hardware capability, and availability requirements. This document describes how toconfigure Oracle E-Business Suite Release 12 for Active Data Guard Reporting.

Note: At present, this document applies to UNIX and Linux platforms only.

The most current version of this document can be obtained in My Oracle Support Knowledge Document 1070491.1.

There is a change log at the end of this document.

A number of conventions are used in describing the Oracle E-Business Suite architecture:

Convention Meaning

Application tierMachines (nodes) running Forms, Web, and other services (servers). Sometimes called middletier.

Database tier Machines (nodes) running the Oracle E-Business Suite database.

Primary System Primary Oracle E-Business Suite system

Standby SystemOracle E-Business Suite system running as a data guard standby to the primary system, open forread only access.

oracle User account that owns the database file system (database ORACLE_HOME and files).

CONTEXT_NAMEThe CONTEXT_NAME variable specifies the name of the Applications context that is used byAutoConfig. The default is <SID >_ <hostname >.

CONTEXT_FILE

Full path to the Applications context file on the application tier or database tier. The defaultlocations are as follows.Application tier context file:<APPL_TOP >/admin/ <CONTEXT_NAME >.xmlDatabase tier context file:<RDBMS ORACLE_HOME >/appsutil/ <CONTEXT_NAME >.xml

APPSpwd Oracle E-Business Suite database user password.

Monospace Text Represents command line text. Type such a command exactly as shown.

< > Text enclosed in angle brackets represents a variable. Substitute a value for the variable text. Donot type the angle brackets.

\On UNIX or Linux, the backslash character can be entered to indicate continuation of thecommand line on the next screen line.

This document is divided into the following sections:

Section 1: OverviewSection 2: Concurrent Manager ReportingSection 3: ConfigurationSection 4: Managing ADG Support

Page 2: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

2/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Section 5: Managing Simulated StandbySection 6: Managing Concurrent ProgramsSection 7: Database TriggersSection 8: Understanding ADG Process FlowSection 9: Maintenance and HousekeepingSection 10: Understanding READ ONLY ViolationsSection 11: Approved Reports

Appendix A: Example ConfigurationAppendix B: Opening a Physical Standby Read OnlyAppendix C: Example ADG Concurrent ManagerAppendix D: Creating and Using Database ServicesAppendix E: ADG Reporting Tables

Section 1: Overview

An Active Data Guard [ADG] database is a data guard physical standby database opened for read access. Thisdocument assumes that you have a data guard physical standby database configured for read access. To set upphysical standby for Oracle E-Business Suite Release 12, see My Oracle Support Knowledge Document 1070033.1.

This document details the required steps to allow Concurrent Manager Reports to be run on ADG.

1.1 Active Data Guard

An Active Data Guard database applies redo from the primary. Although ADG guarantees query consistency [ by astandby query SCN ] the redo should be applied as soon as possible to the standby to ensure reports are using up todate data. A delay of 30 seconds is no different to a job being held on a primary manager queue for an extra 30seconds.

1.2 Software Prerequisites

This document assumes the following minimum software versions:

Software Component Minimum Version Additional Patches

Oracle E-Business Suite 12.1.3 or higherInfrastructure patch 9434627 9434627:R12.FND.BEnabling patch 9505793 9505793:R12.FND.B patch 9526837 9526837:R12.FND.B .

Oracle Database 11gR1 11.1.0.7 or higherRecording ADG violations: <patch 10070167> patch 10134846

Oracle Database 11gR2 11.2.0.2 or higher None - included in patchset.

1.3 Parallel Concurrent Processing

In order to use Concurrent Manager Reporting you must be using Parallel Concurrent Processing with new processingnodes set up to handle ADG reports. It is recommended that these nodes, although part of the primary system , be co-located with the ADG database as the majority of network traffic will be between the report programs and the ADGdatabase. This decision will of course depend on the network latency between the primary and the ADG [ standby ]servers.

In this ADG manager configuration, the concurrent manager connects to the primary database; only the reportsconnect to the ADG database.

Page 3: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

3/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

1.4 Read-Only Limitations

ADG is a READ ONLY database. No DML of any sort is permitted other than DML executed via database links. Thislimitation applies to both user and dictionary DML. So for example <sequence>.nextval is not supported as thisrequires a dictionary update.

Concurrent Reporting requires some level of application level DML, from updating the FND_CONCURRENT_REQUESTStable through to setting up Row Level Security via the multi-org temporary table. Temporary tables provide thegreatest challenge for Concurrent Reporting, as all access must be via a database link. In the current implememtation,temporary tables are resolved to the primary. It is of course technically possible to change the database link fortemporary tables to a local, read-write scratch database. However, this is currently not the delivered solution, as forsecurity reasons all db links are checked to ensure that they resolve to primary.

1.5 Security

The only new security issue is the requirement to secure the SQL net traffic between the standby and the primary. Asper usual database security practice the traffic between the two servers should be encrypted using standard SSL - see<Document 376700.1>.

Section 2: Concurrent Manager Reporting

Concurrent Manager support for ADG reporting is currently restricted as follows:

Only Oracle Reports programs are supported.For a report to be run on ADG it must have been previously run on the primary.Only Oracle Reports programs that have no direct or indirect DML are supported. [ This excludes FND level DMLdiscussed in 1.4 ]FND Debug is not supported.

The process for running ADG reporting is :

Identify reports that can be run on ADG.Redirect reports to ADG.

2.1 Identifying Reports that can be run on Active Data Guard

Section 11 contains a list of reports that have been validated against Active Data Guard. However, there are manythousands of Oracle Reports programs, not to mention custom reports. Therefore, a process is required to allowcustomers to identify reports that can be run on ADG. This is done by providing a simulation mode, where reports runon primary but log READ ONLY violations. This information is logged to both V$ views and database trace files.

2.2 Redirecting Reports to Active Data Guard

As mentioned in 1.3, a concurrent processing node needs to be set up for ADG reporting. There is nothing specialabout the node other than its location - in other words, if network latency was not an issue the report could beassigned to any node, using existing work shifts and rules.

Once a node has been set up, the reports need to be redirected to the standby. This can be done in one of two ways:

1. By changing the Session Properties within the Concurrent Program Definition form and specifying an ADGinstance.

2. By using automatic redirection. With this option, request submission will automatically push the request to thefirst available standby [concurrent manager].

The configuration steps required are covered in the following sections.

Page 4: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

4/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Section 3: Configuration

3.1 Configure an ADG database

Set up a physical standby using My Oracle Support Knowledge Document 1070033.1 and open the database READONLY. See Appendix B for the steps to open a data guard database read only.

3.2 Configure Parallel Concurrent Processing and set up an ADG Manager

Follow the steps in Document 406982.1 for cloning an applications tier to set up Parallel Concurrent Processing,registering the node for batch processing only. As discussed earlier, it is recommended that this node, although part ofthe primary system , be co-located with the ADG database as the majority of network traffic will be between the reportprograms and the ADG database

Start up the application and register a new concurrent manager, assigning it the node co-located with ADG. To ensurethat this manager only handles reports destined for ADG, use exclude/include rules. It is beyond the scope of thisdocument to discuss the concurrent manager architecture but an example configuration is supplied in Appendix C.

3.3 Apply Patches

Apply patches as per Software Prerequisites .

3.4 Prepare System for reporting

As the APPS user carry out the following steps.

1. Disable system - if this is the first time, skip this step.1. execute fnd_adg_utility.disable_adg_support;2. execute fnd_adg_utility.disable_database_triggers; -- If enabled.3. execute fnd_adg_utility.switch_rpc_system_off;

2. execute fnd_adg_utility.clone_clean;3. execute fnd_adg_utility.prepare_for_rpc_system;4. Create a database link that will be used to connect to the primary. [ Although it is possible to create the

database link dynamically, the standard APPS account does not have the "CREATE PUBLIC DATABASE LINK"privilege ]

1. create public database link <db_link> using <connect_str> [ The link must be public and the connectstring a TNS alias. It will be validated before it can be used.] The <connect_str> can be the standardautoconfig generated TNS alias.

5. Register a database link that will be used to connect to the primary. 1. execute fnd_adg_utility.register_connection(p_type =>

fnd_adg_utility.C_CONNECT_STANDBY_TO_PRIMARY, p_link_name => <db link name>, p_link_connstr=> <connect_string> );

6. execute fnd_adg_utility.switch_rpc_system_on;1. This will fail unless the database link registered in step 4 is valid - i.e. the link must resolve to a READ-

WRITE database with the same DBID.7. Recompile invalid objects

1. execute fnd_adg_utility.compile_rpc_dependents; or use standard RDBMS scripts.8. Optionally enable database triggers - see Section 7

1. execute fnd_adg_utility.enable_database_triggers;

Switching RPC System On

Out of the box, ADG support is disabled. This is achieved by using compile time directives to ensure that no databaselink dependencies are brought in until customers choose to enable ADG support.

Switching the RPC system on does two things:

Page 5: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

5/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

1. Creates synonyms to allow REMOTE DML via database links.2. Enables the compile time directive so that the REMOTE code path is now available.

Note that enabling the compile time directive doesn't mean that the code path will be executed. It just brings in theREMOTE code path for compilation.

3.5 Register ADG connections

Connections are registered via fnd_adg_utility.register_connection. There are three types of connections:

Connection from Standby to Primary. This is used for DML operations from the standby.Connections from Primary to Standby. These are the connections used for running the reports. Up to fiveconnections [ ADG databases ] can be specified. Connection to Simulated Standby. This is a connection to primary that allows a report to run on primary as if itwere running on standby.

fnd_adg_utility.register_connection

Option Type Description

type Boolean

Use constant from fnd_adg_utility:

C_CONNECT_STANDBY_TO_PRIMARY C_CONNECT_PRIMARY_TO_STANDBY C_CONNECT_TO_SIMULATED_STANDBY

link_name varchar2 Database link name.

link_owner varchar2 Defaults to PUBLIC which is the only allowable value.

link_connstr varchar2 Database link connect string. Resolves to a TNS alias.

create_db_link_if_undefined Boolean

Default is FALSE. Cannot be set to TRUE unless APPSaccount has "CREATE PUBLIC DATABASE LINK" privilege.It is not recommended to add this privilege to the APPSaccount. Therefore, connect as a privileged user andcreate the required database links using the aliasesdetailed below.

standby_number numberAllowable values 1 to 5. Only valid when type isC_CONNECT_PRIMARY_TO_STANDBY.

C_CONNECT_STANDBY_TO_PRIMARY was discussed in 3.4.5 as the RPC system cannot be enabled until thisconnection has been registered. Before a connection can be used it must be validated. [ Not thatC_CONNECT_STANDBY_TO_PRIMARY is automatically validated during the RPC system switch.]

fnd_adg_utility.validate_connection(<type>,<standby_number>);

There must be at least one C_CONNECT_PRIMARY_TO_STANDBY connection in order for reports to use ADG.

C_CONNECT_TO_SIMULATED_STANDBY is required for using the simulated standby feature - see Section 5.

TNS Aliases

There is currently no autoconfig support for ADG aliases so theses aliases need to be set up manually both on thedatabase and middle tier. The TNS alias requirements are discussed below. It is recommended to create an <IFILE>

Page 6: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

6/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

and copy the contents to the respective tiers <TNS_ADMIN> directory.

Connection Type TNS Alias Description

Required onDatabase

Tier (Primary& ADG)

Required onApplications

Tier

C_CONNECT_STANDBY_TO_PRIMARYAn alias that connects to the primarydatabase. Yes No

C_CONNECT_PRIMARY_TO_STANDBY An alias that connects to an ADG instance. Yes Yes

C_CONNECT_TO_SIMULATED_STANDBY

An alias that connects to the primarydatabase via a dedicated service. Itcannot be the same alias as<STANDBY_TO_PRIMARY>. See Section5 for further details on SimulatedStandby.

Yes Yes

3.6 Configuring Concurrent Managers

Once you have set up a dedicated concurrent processing node for ADG concurrent managers, the managers need to beconfigured and registered.

To ensure that only ADG managers handle standby requests, you need to designate an include/exclude rule, such thatADG managers are included, all others are excluded. See Appendix C for an example of setting up an ADG manager. Once configured this rule needs to be registered using fnd_adg_utility.register_standby_cm_class.

fnd_adg_utility.register_standby_cm_class

Option Type Description

standby_number number Allowable values 1 to 5.

rule_class_app_id number The Class Application Id for the rule.

rule_class_id number The Class Id for the rule.

For a given request type use the following SQL to determine the class ids:

select APPLICATION_ID,REQUEST_CLASS_ID from fnd_concurrent_request_class where REQUEST_CLASS_NAME='<REQUEST_TYPE>';

All valid requests will now be routed to the designated manager. Conversely, if the ADG manager/database isunavailable, the request will be routed based on existing rules/shifts defined for the program.

Section 4: Managing ADG Support

Before discussing how concurrent programs are managed the control process is discussed.

4.1 Enabling/Disabling ADG support

Page 7: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

7/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

ADG support must be enabled before it can be used:

execute fnd_adg_utility.enable_adg_support;

Conversely it can be disabled at any time. All other settings are left unchanged.

execute fnd_adg_utility.disable_adg_support;

Disabling ADG support is done for two reasons:

1. To disable all standby/simulation actions. 2. To allow the control APIs to be called.

4.2 General Options

These options are set by calling fnd_adg_utility.set_control_options. In most cases, they do not need to be changedand the defaults are fine.

Option Type DescriptionInitialValue

always_collect_primary_data Boolean

When a request completes successfully on primary, markreport as having run at least once on primary.

This is the ONE option that is honoured even if ADG support hasbeen disabled

TRUE

enable_redirect_if_valid BooleanRedirect valid reports to standby regardless of the state of theconcurrent managers. The initial value is FALSE - i.e. the ADGmanager must be running for the report to be redirected.

FALSE

enable_standby_error_checks Boolean Check for ADG instance read only errors. TRUE

enable_automatic_redirection Boolean Automatically redirect if the report can be run on ADG. FALSE

debug_rpc Number0 - No debug1 - Enable SQL TRACE.

0

enable_commit_wait Boolean Currently unused

max_commit_wait_time Number Currently unused

runtime_validate_timestamp Boolean Currently unused

standby_error_threshold Number Currently unused

debug_slave_rpc Number Currently unused

This API can only be called when ADG support has been disabled - see Section 4.1

Section 5: Simulated Standby

One of the problems with redirecting reports to an ADG database, is determining whether a report will run on a READONLY database. To help answer this, it is possible to run a simulation where a report runs on primary but is executedas if it were running on standby. In this simulation mode, SQL that would fail on the standby is logged to both databasetrace files and V$ views. After a program has completed, the EBS infrastructure will scan the trace file/V$ views andrecord the number of violations. Note that trace file access requires a directory object that resolves to the instancetrace directory.

Page 8: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

8/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

The process of using simulated standby is as follows:

Register a Simulated Standby ConnectionCreate a database service to identify a simulation connection.Set simulation optionsEnable database logon/off triggers - see Section 7.Use the simulated standby connect string for the concurrent program or use redirection.Run the concurrent program.

5.1 Simulation Options

fnd_adg_utility.set_simulated_standby_options

Option Type DescriptionInitialValue

enable_simulated_standby BooleanEnables/disables simulation mode. To captureread-only violations, database triggers must also beenabled - see Section 7.

TRUE

enable_auto_simulation BooleanIf a report can be run in simulation mode, then thisoption will automatically direct to the simulationconnection.

FALSE

simulated_standby_service varchar2

To identify that a connection is for simulation, adedicated database service needs to be createdand then registered.

A database service can be set at the init.ora level,via Grid infrastructure or using the DBMS_SERVICEpackage. See Appendix D for an example ofcreating and using a database service.

NULL

simulation_error_threshold NumberDuring logoff processing, do not report violationsunless above threshold.

5

trace_directory_obj varchar2

A directory object for the standard RDBMS tracedirectory. This directory object must provide READaccess to the diagnostic trace directory - i.e. thedirectory where SQL trace files are created.

NULL

This API can only be called when ADG support has been disabled - see Section 4.1

5.2. Read Only Violation Processing

During logoff processing, the following data is recorded :

Session level violations in fnd_adg_simulated_stndby_trcProgram level violations in fnd_adg_concurrent_program.

If the simulation was successful and no violations were recorded, the program is marked as runnable on standby. [ Note: The violation count in fnd_adg_simulated_stndby_trc is the total count; in fnd_adg_concurrent_program it is thecount less the threshold. ]

Page 9: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

9/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Section 6: Managing Concurrent Programs

Previous sections covered enabling and configuring Active Data Guard support. The next step is to manage theprograms that can run on an ADG database.

Due to various limitations with ADG, the following has to be true before a report can be run on standby.

Report must be the correct type - currently only Oracle Reports programs are supported.Report must have been previously been run on primary.Report must have been run in simulation mode.Report must be marked as runnable on standby - i.e. has no READ ONLY violations.

With these conditions met, and with ADG support enabled - see 4.1 - a concurrent request will be redirected to theADG concurrent managers.

The state changes above are handled automatically but customers may wish to override/pre-populate the programrules based on their requirements. This is managed through the manage_concurrent_program API.

fnd_adg_utility.manage_concurrent_program

Option Type DescriptionDefaultValue

application_id Number

concurrent_program_id NumberApplication_id,Concurrent_Program_Id - primary keyfrom FND_CONCURRENT_PROGRAM.

has_run_on_primary Boolean Set to TRUE to mark as run on primary. FALSE

has_run_on_simulated_standby Boolean Set to TRUE to mark as run as simulated standby. FALSE

run_on_standby Boolean Set to TRUE to mark as runnable on standby. FALSE

no_standby_failures NumberSet the number of standby failures. This is setautomatically so the main use is to reset the value.

0

max_standby_failures NumberSet the maximum of standby failures. Run_On_Standbyis disabled when no_standby_failures >max_standby_failures

0

no_simulated_stdby_failures NumberSet the number of simulated standby failures. This is setautomatically so the main use is to reset the value.

0

max_simulated_stdby_failures Number

Set the maximum number of simulated standby failures.Run_On_Standby is disabled whenno_simulated_stdby_failures >max_simulated_stdby_failures.

0

always_redirect_if_valid Boolean

Program level option to always redirect valid reports tostandby regardless of the state of the concurrentmanagers.

Has no effect unless the control option"enable_redirect_if_valid" is TRUE.

TRUE

If the report can be run on standby, then automaticallyredirect to the first available ADG database, ignoring any

Page 10: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

10/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

use_automatic_redirection Booleanprimary instance/node affinity.

Has no effect unless the control option"enable_automatic_redirection" is TRUE.

FALSE

This data is stored in FND_ADG_CONCURRENT_PROGRAM. Use PL/SQL for bulk operations.

e.g.

declarecursor c1 is select a.APPLICATION_ID,a.CONCURRENT_PROGRAM_ID from fnd_concurrent_programs a;begin for f_rec in c1 loop fnd_adg_utility.manage_concurrent_program (p_application_id => f_rec.APPLICATION_ID, p_concurrent_program_id => f_rec.CONCURRENT_PROGRAM_ID, p_max_standby_failures => 1, p_max_simulated_stdby_failures => 5, p_has_run_on_primary => true ); end loop;end;/

Section 7: Database Triggers

ADG support delivers three schema level database triggers. They are disabled by default. To enable/disable thesetriggers use:

fnd_adg_utility.enable|disable_database_triggers.

The three triggers are for logon,logoff and servererror.

7.1 Logon/Logoff Triggers

These triggers are to support simulation testing. The logon trigger will enable READ ONLY violation trace; the logofftrigger will record the number of violations.

If these triggers are not enabled, the following limitations apply:

Trace errors and V$ data are not recorded and simulations will be treated as having no errors. Without thesetriggers, enabling the simulation option is of limited benefit.

7.2 Error Trigger

This trigger is only executed if ORA-16000 is raised - i.e. the trigger does nothing on the primary. If<standby_error_checking> has been enabled [ see 4.2 ] then the error count for the concurrent program isincremented.

If the error trigger is not enabled, the following limitations apply:

Report failures will not be recorded.Failiures will not lead to "Run on Standby" being disabled.

Page 11: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

11/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Section 8: Understanding ADG Process Flow

The process flow depends on whether automatic or manual redirection is being used. However, the prerequisites forboth process flows are the following:

System prepared - Section 3.4Validated connections - Section 3.5ADG support enabled - Section 4.1For standby simulation

Database logon/off triggers enabled - Section 7.1 Simulation options - Section 5.1

Simulation enabledSimulation service registeredFor trace file access [optional] trace directory object registered

For ADG standbyRegistered CM class for standby - Section 3.6Standby error checks enabled - Section 4.2Database error trigger enabled - Section 7.2

TNS aliases configured on all nodes - Section 3.5Concurrent program

Must have been previously run on the primary database. It is possible to set this state from the API - seeSection 6.

8.1 Manual Redirection

In this mode of operation, the connection string is set as part of the Session Properties within the Concurrent ProgramDefinition form.

Simulation

Set the connection string to the simulation alias and submit a request. If the request is successful, the program ismarked as having been run in simulation mode. It is also marked as runnable on standby if the number of violations [less threshold ] is less than the program maximum.

Standby

Additional prerequisites

Concurrent programMust have been successfully run in simulation mode. It is possible to set this state from the API - seeSection 6.Must have been marked as runnable on standby. It is possible to set this state from the API - seeSection 6.

ADG Concurrent Manager must be running.ADG database must be open READ ONLY.

Set the connection string to the standby alias and submit the request. The request will be redirected to the standby. Ifany READ ONLY errors occur on the standby, the ERROR trigger will update the number of concurrent program standbyerrors. If the number of standby errors exceed the program level maximum, the program will be marked as no longerrunnable on standby.

8.2 Automatic Redirection

In this mode of operation, programs that are marked as runnable on standby and are enabled for automatic redirectionwill be automatically redirected to the first available ADG instance.

Page 12: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

12/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Additional prerequisites:

System wide automatic redirection enabled - Section 4.2Program level automatic redirection enabled - Section 6For simulation

Enable automatic simulation - Section 5.1

Simulation

Requests will automatically run in simulation mode. If the requests are successful, the programs are marked as havingbeen run in simulation mode. They are also marked as runnable on standby if the number of violations [ less threshold] is less than the program maximum.

Standby

Additional prerequisites

Concurrent programMust have been successfully run in simulation mode. It is possible to set this state from the API - seeSection 6.Must have been marked as runnable on standby. It is possible to set this state from the API - see Section6.ADG Concurrent Manager must be running.ADG database must be open READ ONLY.

Requests will be redirected to the first available standby. If any READ ONLY errors occur on the standby, the ERRORtrigger will update the number of concurrent program standby errors. If the number of standby errors exceed theprogram level maximum, programs will be marked as no longer runnable on standby.

Section 9: Maintenance and Housekeeping

9.1 Removing ADG and RPC Support

ADG reporting functionality can be disabled at any time as per Section 4.1 . However, this does not remove databaselink dependencies within the EBS code. If for any reason you wish to remove these dependencies, carry out thefollowing steps.

1. Connect to SQLPLUS as the <APPS> user.2. execute fnd_adg_utility.disable_adg_support;3. execute fnd_adg_utility.disable_database_triggers;4. execute fnd_adg_utility.switch_rpc_system_off;5. execute fnd_adg_utility.compile_rpc_dependents;

To reinstate ADG support after it has been removed:

1. Connect to SQLPLUS as the <APPS> user.2. execute fnd_adg_utility.switch_rpc_system_on;3. execute fnd_adg_utility.compile_rpc_dependents;4. execute fnd_adg_utility.enable_database_triggers;5. execute fnd_adg_utility.enable_adg_support;

9.2 Patch Application

Applying patches to the primary database is unaffected by ADG reporting functionality.

Page 13: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

13/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Section 10 : Understanding READ ONLY Violations

The simulation feature discussed in previous sections is underpinned by a new kernel feature to allow READ ONLYviolations to be tracked and recorded.

This section provides some background on this new kernel feature. It is for information only as the simulation optionautomatically handles the session events and statistics.

Enabling/Disabling READ ONLY violations

Version Enabling READ ONLY Violations Disabling READ ONLY Violations

11.1.0.7 + patch 10070167patch 10134846

alter session set events '3177 trace name context forever, level 1'

alter session set events '3177 trace name context forever, level 0'

11.2.0.2alter session set log_read_only_violations =true

alter session set log_read_only_violations =false

Recording READ ONLY violations

Version Session Level Trace file

11.1.0.7 + patch10070167 patch10134846

The violations count is recorded in thesession level statistic,'spare statistic 1'.

e.g. to query the current sessionsviolations

select a.value from v$mystat a, v$statname bwhere a.statistic# = b.statistic# and b.name = 'spare statistic 1';

Each entry is tagged with "*** READ-ONLY VIOLATION BY MODULE ..."

11.2.0.2+

The violation count is recorded in thesession level statistic,'read-only violation count'.

e.g. to query the current sessionsviolations

select a.value from v$mystat a, v$statname bwhere a.statistic# = b.statistic# and b.name = 'read-only violation count';

Each entry is tagged with "*** READ-ONLY VIOLATION BY MODULE ..."

Note that trace is only generated when the followingunderscore parameter is set:

_read_only_violation_dump_to_trace=true

In 11.2.0.2+ there are additional reporting and control features.

x$krdrsbrov. A circular buffer to keep track of violations by module. The circular buffer is controlled by thefollowing initialisation parameters.

_read_only_violation_max_count. Total size of the circular buffer. Default is 500._read_only_violation_max_count_per_module . Maximum number of violations per module kept in thebuffer. Default is 100.

Note that these additional reporting features are not currently used by the simulation implementation.

Page 14: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

14/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

If both simulation and database triggers have been enabled, then it is simply a matter of connecting via the simulationservice to enable READ ONLY violation reporting.

Section 11 : Approved Reports

Concurrent Program Name Concurrent Prog Short Name Application

Eligibility and Enrollment List BENELGEN Advanced Benefits

Extract Error Report BENXERRO Advanced Benefits

Extract Layout Report BENXLAYT Advanced Benefits

Extract Summary Report BENXSMRY Advanced Benefits

Life Events Summary Report BENLESUM Advanced Benefits

Participation Error Detail Report by Person BENERRPE Advanced Benefits

OTLR Missing Timecard Report HXT964A Time and Labor

Project Accounting Table List HXT957E Time and Labor

Total Hours To BEE HXT007A Time and Labor

Total Table Entries HXT957H Time and Labor

Assignments Unavailable for Processing PAYRPBLK Payroll

Deductions Report PAYUSDED Payroll

Employee Payroll Movements Report PAYRPEMV(PAY) Payroll

Employee Run Results Report PAYUSRRS Payroll

GRE Totals Report PAYUSTOT Payroll

NACHA Report PAYRPNAC Payroll

Payment Register Report PAYACPRE Payroll

Third Party Payment Register Report PAYRPTPP Payroll

Void Payments Report (US) PAYRPVPRUS Payroll

Absences Report PERRPRAA Human Resources

Assignment Status Report PERRPRAS Human Resources

Duplicate Person Report PERWSDUP Human Resources

Full Person Details Report PERRPFP1 Human Resources

Organization Hierarchy Report PERRPROH Human Resources

Terminations Report PERRPRTM Human Resources

Incomplete invoices Report RAXIIR Receivables

Disputed invoice report ARXDIR Receivables

Journal Entries Report GLYRLGLG General Ledger

Unposted items report ARXGER Receivables

Page 15: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

15/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Tax Exempt Customer Report ZXXSTTEC E-Business Tax

US Sales Tax Report ZXXSTR E-Business Tax

Commitment Balance Report RAXCBR Receivables

Cash Requirement Report APXCRRCR Payables

Sales Journal by GL Account Report RAXGLR Receivables

AR Reconciliation Report ARXRECON Receivables

Account Analysis - (180 Char) GLACTANL2 General Ledger

Agreement Activity Report OEXOEASR Order Management

Audit History Report OEXAUDHR Order Management

Cancelled Orders Reason Detail Report OEXOEOCR Order Management

Cancelled Orders Report OEXOEOCS Order Management

Comprehensive Order Detail Report OEXOECOD Order Management

Credit Check Processor OEXAUCRC Order Management

Credit Order Detail Report OEXOEORD Order Management

Credit Order Discrepancy Report OEXCRDIS Order Management

Credit Order Summary Report OEXOEORS Order Management

Defaulting Rules Listing Report OEXDERUL Order Management

Export Compliance Report to Government OEXITMGV Order Management

Export Compliance Screening Failure Report OEXITMSF Order Management

Internal Order and Purchasing Requisition DiscrepancyReport

OEXIODIS Order Management

Lines on Credit Check Hold Report OEXOECCL Order Management

Order Discount Detail Report OEXPRPRD Order Management

Order Discount Summary Report OEXPRPRS Order Management

Order/Invoice Detail Report OEXOEIOD Order Management

Order/Invoice Summary Report OEXOEIOS Order Management

Orders Summary Report OEXOEOSR Order Management

Orders by Item Report OEXOEITR Order Management

Orders on Credit Check Hold Report OEXOECCH Order Management

Outstanding Holds Report OEXOHOHS Order Management

Payment Receipt OEXPMTRC Order Management

Processing Constraints Listing Report OEXOEPCL Order Management

Returns by Reason Report OEXOEORR Order Management

Sales Order Acknowledgement OEXOEACK Order Management

Page 16: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

16/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Sales Order Workflow Status Report OEXOEWFR Order Management

Sales Order and Purchase Order Discrepancy Report OEXPODIS Order Management

Salesperson Order Summary Report OEXOESOS Order Management

Transaction Types Listing Report OEXORDTP Order Management

Unbooked Orders Detail Report OEXOEUBD Order Management

Unbooked Orders Report OEXOEUBK Order Management

Workflow Assignments Report OEXWFASG Order Management

Discrete Job Pick List Report WIPDJPCK Work In Progress

WIP Account Distribution Report WIPUTACD Work In Progress

Cycle count listing INVARCLI Inventory

Discrete Job Shortage Report WIPDJORQ Work In Progress

Discrete Job Value Report - Standard Costing WIPRDJVR Work In Progress

Shipping Transaction Summary Report CSTRSTSR Bills of Material

Subinventory quantities report INVIRSIQ Inventory

Prepayments Status Report APXINPSR Payables

Overtaken Vacation and Holiday HXT015A Time and Labor

Appendix A - Example Configuration

rem Public database linksrem These links assume that ADG,ADG_TO_STANDBY and ADG_SIMULATED TNS aliases have been created.

rem standby_to_primary

create public database link adg_to_primary.uk.oracle.com using 'ADG';

rem primary_to_standby

create public database link ADG_TO_STANDBY.UK.ORACLE.COM using 'ADG_STANDBY';

rem simulated standby

create public database link ADG_TO_SIMULATED_STANDBY.UK.ORACLE.COM using 'ADG_SIMULATED';

rem Optionally create database directory object for trace directory.

create or replace directory ADG_PRIMARY_TRACE_DIR as '/d1/ADGSUP/ADG-11.1/db/tech_st/11.1.0/admin/ADG_rws60001atg/diag/rdbms/adg/ADG/trace';

rem ignore errors if adg support/rpc system not enabled

execute fnd_adg_utility.disable_adg_support; execute fnd_adg_utility.switch_rpc_system_off;

Page 17: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

17/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

rem clean up

execute fnd_adg_utility.clone_clean;

rem execute fnd_adg_utility.clean_all;

rem Clean_all is an alternative to clone_clean. Not normally used. It will remove everything, rem including RPC packages and ADG concurrent program data.

rem execute fnd_adg_utility.resync_compile_directive; -- Only required if clean_all is used.

execute fnd_adg_utility.prepare_for_rpc_system;

begin

fnd_adg_utility.register_connection ( fnd_adg_utility.C_CONNECT_STANDBY_TO_PRIMARY, 'ADG_TO_PRIMARY.UK.ORACLE.COM', 'PUBLIC', 'ADG' );

end;/

execute fnd_adg_utility.switch_rpc_system_on;

execute fnd_adg_utility.compile_rpc_dependents;

begin

fnd_adg_utility.register_connection ( fnd_adg_utility.C_CONNECT_PRIMARY_TO_STANDBY, 'ADG_TO_STANDBY.UK.ORACLE.COM', 'PUBLIC', 'ADG_TO_STANDBY', false, 1 );

fnd_adg_utility.register_connection ( fnd_adg_utility.C_CONNECT_TO_SIMULATED_STANDBY, 'ADG_TO_SIMULATED_STANDBY.UK.ORACLE.COM', 'PUBLIC', 'ADG_SIMULATED' );

end;/

rem Example use of options

begin

fnd_adg_utility.set_simulated_standby_options ( p_enable_simulated_standby => true, p_enable_auto_simulation => false,

Page 18: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

18/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

p_simulated_standby_service => 'ADG_SIMULATED', p_trace_directory_obj => 'ADG_PRIMARY_TRACE_DIR', p_simulation_error_threshold => 4 );

fnd_adg_utility.set_control_options ( p_standby_error_threshold => 6, p_debug_rpc => 1 );

end;/

rem register standby CM class

begin

fnd_adg_utility.register_standby_cm_class ( 1, 0, -- specify required app id 44598 -- specify required class id );

end;/

Appendix B - Opening a Physical Standby Read Only

Active Data Guard is a separately licensed database option. You must have acquired the licensed before carrying outthe following steps.

1. Cancel the recoveryalter database recover managed standby database cancel;

2. Open the standby database in read only modealter database open read only;

3. Start managed recoveryalter database recover managed standby database using current logfile disconnect FROM

SESSION;

4. Make sure the standby is in read only modeselect open_mode from v$database;

Appendix C - Example ADG Manager Configuration

The following is an example configuration for an ADG Concurrent Manager.

Log in as System Administrator

Concurrent -> Program -> Types

Create

Name : ADGApplication: Application Object Library

Page 19: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

19/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Description : ADG Type for CM

Save to commit.

Concurrent -> Manager -> Define

Create

Manager: ADG ManagerShort Name: ADGMGRApplication: Application Object LibraryDescription: ADG ManagerType: Concurrent ManagerProgram Library: FNDLIBRPrimary Node: ADG reporting nodeSave to commit.Specialization Rules

Include/Exclude: IncludeType: Request TypeApplication: Application Object LibraryName: ADG [ find for type defined above ]

Work ShiftsStandard/24 hoursProcesses: 2Sleep seconds : 20Save to commit.

Update Specialization Rules for STANDARD

Include/Exclude: ExcludeType: Request TypeApplication: Application Object LibraryName: ADG [ find for type defined above ]Save to commit.

On the ADG node, the following services need to be started:

GSMListenerConcurrent Manager

Appendix D - Creating and Using Database Services

The example below uses DBMS_SERVICE. Alternative approaches are to use the init.ora or Grid infrastructure.

rem Step 1 - Create Service as privileged user

execute dbms_service.create_service('ADG_SIMULATED','ADG_SIMULATED');

rem Step 2 - Start the Service as privileged user

execute dbms_service.start_service('ADG_SIMULATED');

Appendix E: ADG Reporting Tables

Page 20: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

20/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

Table Name Type Description

FND_ADG_CONTROL Number

Contains one row and stores all control information, includingconnections, state, control options and simulation options. Themapping is one to one with corresponding procedure argumentsexcept for RPC state.

FND_ADG_CONCURRENT_PROGRAM Number

The rows map one to one with FND_CONCURRENT_PROGRAMand contains all program control information . The columnmapping is one to one with the corresponding arguments infnd_adg_utility.manage_concurrent_program.

FND_ADG_SIMULATED_STNDBY_TRC Boolean

Records READ ONLY violations from simulation sessions andcontains one row for each simulation session. The table ispopulated via the LOGOFF trigger. If the LOGOFF trigger isdisabled, no information will be recorded.

Column Description

LOG_SEQ Internal sequence

ORACLE_PROCESS_ID As perFND_CONCURRENT_REQUESTS

OS_PROCESS_ID As perFND_CONCURRENT_REQUESTS

ORACLE_SESSION_ID As perFND_CONCURRENT_REQUESTS

REQUEST_ID As perFND_CONCURRENT_REQUESTS.Set to -1 if trigger [ simulation ]hasbeen run outside of a concurrentjob.

MAGIC_SWITCH_ENABLED Should always be Y. A value of Nwould imply that the LOGOFF triggerhas been fired but the LOGONtrigger has been disabled.

READ_ONLY_VIOLATIONS The total number of read onlyviolations. It is calculated from boththe V$ view and the trace file itself.If there is a discrepancy betweenthe two counts, the higher one ischosen. See alsoTRACE_ACCESS_ERROR

TRACE_FILE_NAME Name of the database trace file.

TRACE_ACCESS_ERROR Indicates possible errors duringLOGOFF trigger processing. Thebase point for the error depends onwhether there is a discrepancybetween read only violations.

0 - no discrepancy100 - Trace file count > V$ count200 - V$ count > Trace file count

After subtracting the base point, anon-zero value indicates an error

Page 21: Using Active Data Guard Reporting With Oracle E-Business Suite Release

9/24/12 Document

21/21https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_adf.ctrl-state=uwfh2uefp_128

accessing the trace file.

1 - Invalid path2 - Invalid file name and/orpermissions3 - Unknown open error.4 - Read error.

FND_ADG_PACKAGE Boolean Internal support table.

FND_ADG_COMMIT_WAIT Number Internal support table.Currently unused.

Change Log

Date Description

Jun, 2012 Removed controlled release restriction for 9526837.

Apr, 2011 Changed ReportWriter to Oracle Reports.

Jan, 2011 Added notebox for controlled release of 9526837.

Nov, 2010 Doc updates from cert testing.

Aug, 2010 Formatting updates + patches.

Mar, 2010 Initial creation.

My Oracle Support Knowledge Document 1070491.1 by Oracle E-Business Suite DevelopmentCopyright © 2010, Oracle