Thursday, July 8, 2021
Using the Online Patching Readiness Report in Oracle E-Business Suite Release 12.2 (Doc ID 1531121.1)
This document introduces the Global Standards Compliance Checker (GSCC) and Readiness Report, and outlines how it is used to help prepare for using Oracle E-Business Suite Release 12.2 with online patching, as described in the applicable version of Oracle E-Business Suite Upgrade Guide, available in Oracle E-Business Suite Documentation Web Library Release 12.2.
This document contains the following sections:
Section 1: Prerequisites for Oracle E-Business Suite Online Patching Readiness and GSCC Report Patch
Section 2: Using the Global Standards Compliance Checker (GSCC) and Readiness Report
Section 3: Check for Data Dictionary Corruption / Time Stamp Mismatch
Section 4: Run Script to Reduce Upgrade Time
Section 5: Patch Readme
References
There is a change log at the end of this document.
Section 1: Prerequisites for Oracle E-Business Suite Online Patching Readiness and GSCC Report Patch
You need to start by identifying and applying the correct Online Patching Readiness and GSCC Report patch for the codelevel from which you are upgrading.
Apply whichever of the following patches is relevant to your Oracle E-Business Suite release.
Oracle E-Business Suite Release Online Patching Readiness and GSCC Report Patch
12.2.3 or higher Patch 31026891:R12.AD.C
12.1 Patch 31026891:R12.AD.B
12.0 Patch 31026891:R12.AD.A
11i Patch 31026891
The patch delivers a new set of Online Patching Development Standards for Oracle E-Business Suite Release 12.2, plus a set of reports that will help you analyze the dependencies between database objects as specified by the new rules used by the Edition Based Redefinition (EBR) feature that was introduced in Oracle Database Release 11gR2.
You can then proceed to use the Global Standards Compliance Checker (GSCC) and Readiness Report, as described in Section 2 below.
Section 2: Using the Global Standards Compliance Checker (GSCC) and Readiness Report
This patch delivers scripts to automatically check that custom code complies with Oracle E-Business Suite online-patching coding standards. The implementation of online patching in Oracle E-Business Suite Release 12.2 relies on the Oracle Database 11gR2 EBR feature, and adds a new logical view over the database objects in Oracle E-Business Suite. Access to these database objects must be via the logical layer, and new coding standards help to ensure that code does this correctly. The implementation of the logical layer is such that the majority of application code already follows the new standards: however, this patch delivers scripts to scan for and identify many compliance issues that may exist.
The Global Standards Compliance Checker (GSCC) delivered in this patch consists of the main engine script, $FND_TOP/bin/gscc.pl, plus a variety of enforcement code (EFC) modules in $FND_TOP/perl/GSCC/OpenEFC that check for common standards issues.
Section 3: Check for Data Dictionary Corruption / Time Stamp Mismatch
If if not already applied, apply the correct Online Patching Readiness and GSCC Report Patch for the codelevel from which you are upgrading. (Refer to Section 1 and Section 2 of this document.)
3.1 Check for Data Dictionary Corruption
Run the $AD_TOP/patch/115/sql/adzddtsfix.sql script, following the usage instructions provided.
Run the $AD_TOP/sql/ADZDDBCC.sql script to identify whether logical data dictionary corruption is present.
If no corruption is found, proceed with the upgrade.
If corruption is present, follow Step 3.2 below.
3.2 Fix Data Dictionary Corruption (Conditional)
Note: Follow these steps only as a fix when logical data dictionary corruption (missing parent) is present.
Copy the script $AD_TOP/patch/115/sql/adzddmpfix.sql to the database tier.
On the database tier, connect to the database as SYSDBA.
Note: If you are on Oracle E-Business Suite Release 12.1.3 or Release 12.2 with a multitenant architecture, to connect to a multitenant architecture database as SYSDBA, run the following commands to set the database SID field to , the pluggable database name for your Oracle E-Business Suite database:
$ source _.env
$ export ORACLE_PDB_SID=;
$ sqlplus "/ as sysdba"
Run the $AD_TOP/patch/115/sql/adzddmpfix.sql script.
On the application tier, run the $AD_TOP/sql/ADZDDBCC.sql script again to identify whether data dictionary corruption is still present.
If no corruption is found, proceed with the upgrade or patching cycle.
If corruption is still present, proceed to Step 3.3 below.
3.3 Additional Actions for Data Dictionary Corruption (Conditional)
Note: Follow these steps only when data dictionary corruption is present after following the steps in 3.2 above.
On the database tier, go to the $ORACLE_HOME/rdbms/admin directory.
Run the utlirp.sql script , following the usage instructions provided.
Run the utlrp.sql script, following the usage instructions provided.
On the application tier, run the $AD_TOP/sql/ADZDDBCC.sql script again to identify whether data dictionary corruption is still present.
If no corruption is found, proceed with the upgrade or patching cycle.
If corruption is still present, contact Oracle Support and request a bug to be logged.
Section 4: Run Script to Reduce Upgrade Time
To reduce the overall upgrade time, you can optionally run the ADZDMVREFRESHNEEDED.SQL script before starting the 12.2.0 upgrade driver.
Section 5: Patch Readme
==============================================================================
R1222: STANDALONE READINESS REPORT AND GLOBAL STANDARDS COMPLIANCE CHECKER (GSCC)
==============================================================================
Update - 31026891
Product - Applications DBA
Release - R12
Platform - Generic Platform
Built - AUG-03-2020 06:27:15
Instructions For Applying This Patch
==============================================================================
Preparation Tasks
==============================================================================
The tasks in this section can be completed without taking any Applications
services or users offline.
There are no tasks to be performed in this section.
Pre-install Tasks
==============================================================================
For 12.0.X / 12.1.X / pre-upgrade patches (using adpatch), you must
shut down all Application tier services before performing the tasks in this
section.
For 12.2.X patches (using adop), you can perform the tasks in this
section without shutting down the Application tier services.
There are no tasks to be performed in this section.
Apply The Patch
==============================================================================
1. Apply patch
This patch contains the following unified driver file to be applied with
ADOP (AD Online patch):
u22200487.drv (This is the unified driver)
Post-install Tasks
==============================================================================
For 12.0.X / 12.1.X patches, you must complete the tasks in this
section before starting up Application tier services.
For 12.2.X patches, you may complete the tasks in this section at
any time after the update, without taking any services or users offline.
There are no tasks to be performed in this section.
Finishing Tasks
==============================================================================
You may complete the tasks in this section at any time after the update,
without taking any services or users offline.
There are no tasks to be performed in this section.
Additional Information
==============================================================================
There are no tasks to be performed in this section.
==============================================================================
Description
==============================================================================
Oracle E-Business Suite Online Patching Readiness and GSCC Report Patch
=======================================================================
The Oracle E-Business Suite Release 12.2 includes a capability to apply
patches online. This feature relies on the Edition Based Redefinition
feature of the Oracle Database introduced in Release 11gR2. This database
feature added some new rules for implementing dependencies between database
objects. The purpose of this patch is to deliver a set of reports that will
help you analyze these dependencies as well as a new set of Online Patching
Development standards.
ADZDPSUM.sql
Lists schemas containing objects that reference EBS objects that are not
editioned. If the schemas are registered with the application, the Online
Patching Enablement patch will enable editioning on those schemas avoiding
many EBR rule violations (Non-Editioned objects referencing Editioned
objects). This report also provides instructions on how to register your
custom schemas, you are adviced to re-run the script after registering your
schemas in order to reduce the number of violations in the next report.
ADZDPMAN.sql
Lists objects that violate EBR standards and that require manual intervention
in order to address the violations. It groups the objects per violation type
and provides instrutions on how to address those violations. Make sure you
address all the violations in this report before proceeding with the next
reports.
ADZDPAUT.sql
Lists objects that violate Online Patching Enablement standards. The objects
in this report will be adjusted automatically by the Online Patching
Enablement patch. This report is provided for information purposes only, no
action is required on the output of this report.
ADZDDBCC.sql
Lists objects that violate Online Patching Development standards and that
require manual intervention in order to address the violations. It groups
the objects per violation type and provides instrutions on how to address
those violations.
Apply patch
===========
1. Apply E-Business Suite:Online Patching Readiness and GSCC Report patch
31026891 applicable to your EBS instance's release version
2. Once it is applied, Auto-patch will copy SQL files from patch to
$AD_TOP/sql/ADZDPSUM.sql
$AD_TOP/sql/ADZDPAUT.sql
$AD_TOP/sql/ADZDPMAN.sql
$AD_TOP/sql/ADZDDBCC.sql
$AD_TOP/sql/ADZDPCUST.sql location.
STEP#1: Run $AD_TOP/sql/ADZDPSUM.sql
====================================
This script should be run by SYSTEM schema of ORACLE database.
For Example:
sqlplus system/@DB @$AD_TOP/sql/ADZDPSUM.sql
OR
sqlplus system@DB @$AD_TOP/sql/ADZDPSUM.sql
In latter case, sql script will prompt for SYSTEM schema password. The
execution-time of this script varies from machine to machine and may take
approximately 2-3 hours to complete.
Note:
The SQL script only queries the data dictionary, it does not query any
customer tables, or perform any data dictionary updates.
Make sure you review the instructions in the report, perform the
recommended actions and re-run the report until you have no more pending
actions.
STEP#2: and STEP#3:
==================
In the same way as STEP#1 has been performed for @$AD_TOP/sql/ADZDPSUM.sql,
it should be repeated for
@$AD_TOP/sql/ADZDPMAN.sql and
@$AD_TOP/sql/ADZDPAUT.sql also
STEP#4: Run ADZDDBCC.sql
========================
This script should be run by APPS schema of E-business Suite.
For Example:
sqlplus APPS/@DB @$AD_TOP/sql/ADZDDBCC.sql
NOTE: Currently these scripts share common objects names, hence should be
run sequentially.
Review generated report
=======================
- The ADZDPSUM.sql SQL script generates report file adzdpsum.txt. Each
section of this report should be reviewed carefully and take appropriate
actions.
- Review adzdpman.txt for detail and follow given instructions
and may review adzdpaut.txt(optional) also but these violations would
be fixed automatically when your instance is enabled for Online Patching.
- Review database compliance-checker report adzddbcc.lst
Global Standards Compliance Checker (GSCC)
==========================================
This patch delivers scripts to automatically check that custom code complies
with E-Business Suite (EBS) online-patching coding standards.
The implementation of Online Patching in Oracle E-Business Suite Release 12.2
relies on the Oracle Database 11gR2 Editioning feature and adds a new logical
view over the database objects in Oracle E-Business Suite. Attempts to access
these database objects must go through the logical layer and new coding
standards help to insure that code does this correctly. The implementation of
the logical layer has been done such that the majority of application code
already follows the new standards; however, this patch delivers scripts to scan
and identify many compliance issues if they exist.
The Global Standards Compliance Checker (GSCC) delivered in this patch consists
of the main engine script $FND_TOP/bin/gscc.pl and a variety of enforcement
code (EFC) modules in $FND_TOP/perl/GSCC/OpenEFC that check for common
standards issues.
The following table lists the messages that can appear in the output of the
GSCC script along with a reference to the applicable Development Standards
sections which are included at the end of this file.
GSCC Error Associated Coding Standard Standards Section
---------- -------------------------- -----------------
File.Sql.80 VPD Policy must be on the Editioning View or VPD
Table Synonym, not the table.
File.Gen.34 Table Name must not use '#' character. Table (Ordinary)
File.Gen.35 Table must be owned by an EBS product schema Table (Ordinary)
and not APPS.
File.Gen.36 Base Column Name may only use '#' as the last Table (Ordinary)
character.
File.Xdf.4 Base Column name should be 28 bytes or less. Table (Ordinary)
File.Gen.37 Column Type must be a built-in type or a Table (Ordinary)
user-defined type owned by a non-editioned user.
File.Xdf.4 Column Type must not be LONG or LONG RAW. Table (Ordinary)
File.Xdf.4 Column Type should not be ROWID Table (Ordinary)
File.Gen.41 Query/DML statements must access Tables via the Table (Ordinary)
Table Synonym or Editioning View.
File.Gen.38 Do not modify application-managed tables in an Table (Ordinary)
Online Patch.
File.Sql.81 Patch the table definition using ODF or XDF. Table (Ordinary)
File.Gen.39 Index Name must contain an underscore ('_'). Index
File.Sql.81 Deliver constraint definition using ODF or XDF. Integrity Constr.
File.Sql.82 Deliver Materialized View using XDF. Materialized View
Using GSCC
==========
The Global Standards Compliance Checker (GSCC) delivered in this patch consists
of the main, engine script $FND_TOP/bin/gscc.pl and a variety of standards
enforcement code (EFC) modules in $FND_TOP/perl/GSCC/OpenEFC/ that check for
common standards issues.
After applying this patch to install the GSCC code, source the applications
environment file and then run the GSCC on a set files under a directory tree
like this:
cd /home/yourdir
$FND_TOP/bin/gscc.pl -f '/home/yourdir/your-code/*'
In this example, gscc.pl will check all of the files located under the
your-code/ directory using the EFC modules located in
$FND_TOP/perl/GSCC/OpenEFC/ and generate a report named gscc-out.log in the
current working directory (/home/yourdir/ in this example). Invoking
gscc.pl without arguments will print a usage message with additional
information.
Reading GSCC Output
-------------------
GSCC output looks like this example (sans line numbers):
01: ---------------------------------------------------------------------------
02: GSCC Compliance Test Results:
03: ---------------------------------------------------------------------------
04: File: /home/yourdir/your-code/yourfile.xdf
05:
06: Errors (3):
07: File.Gen.34 (Code Reviewers: CODE_REVIEWER)
08: 341 - Table Name must not use '#' character.
09: File.Gen.35 (Code Reviewers: CODE_REVIEWER)
10: 340 - Table must be owned by an EBS product schema, not APPS.
11: File.Gen.36 (Code Reviewers: CODE_REVIEWER)
12: 387, 443, 518 - Base Column Name may only use '#' as last character
13:
14: ---------------------------------------------------------------------------
15: GSCC Totals:
16: Passes: 19
17: Fails: 3
18: Warnings: 0
19: Under Review: 0
20: GSCC Errors: 0
21:
22: --* Failed GSCC Compliance Test with Code Review Failures *--
Lines 07:, 09:, and 11: in the example report name the coding standards that
GSCC identified as potential problems in the file being checked (line 04:,
yourfile.xdf in this example).
Lines 08:, 10:, and 12: in the report then give the specific lines within
yourfile.xdf (lines 341, 340, 387, 443, and 518) where potential standards
compliance problems were found.
To correct the errors shown in this example, the table being created on line
341 of yourfile.xdf would need to be renamed to remove the '#' character from
the table name, the table would need to be created in an EBS schema other than
APPS, and the table columns created on lines 387, 443, and 518 of yourfile.xdf
would need to be renamed to remove the '#' character from their names.
Sections of the Database Object Development Standards
-----------------------------------------------------
The following sections of the Database Object Development Standards have
checked by automated GSCC standards.
Virtual Private Database (VPD) Policy
-------------------------------------
VPD Definition Standards:
VPD Policy must be on the Editioning View or Table Synonym, not the table.
VPD Dynamic DDL Standards: No special considerations
VPD Online Patching Compliance Standards: No special considerations.
VPD Tip: You can add or drop VPD policies by calling the
FND_ACCESS_CONTROL_UTIL package from a SQL script (&phase=plb).
For more information on Oracle Virtual Private Database, see: Oracle Database
Security Guide 11g Release 2 (11.2).
Table (Ordinary)
----------------
An Ordinary Table is created/altered/dropped during application patching, In
contrast, a Dynamic Table is created/altered/dropped by application
runtime. The standards in this section only apply to Ordinary Tables.
In order to implement effectively-editioned support for ordinary tables, the
online patching technology installs and maintains a new Editioning View layer
over each table. The editioning view maps logical column names used by the
application to the actual storage columns used to hold those attributes in each
edition. Developers must follow new procedures in order to create and alter
ordinary tables in a development database, and patch those changes to other
systems.
Table Definition Standards:
An Ordinary Table is a table that is used by Oracle E-Business
Suite runtime, and patched via Online Patching
Table Name must not use '#' character. (GSCC FIle.Gen.34)
Table Name must be unique within the first 29 bytes.
Table must be owned by an Oracle E-Business Suite product
schema or custom product schema, not APPS. (GSCC File.Gen.35)
Base Column Name may only use '#' as last character.
(GSCC File.Gen.36)
Base Column Name should be 28 bytes or fewer.
(GSCC File.Xdf.4)
Note: Online Patching currently does not support patching columns that
violate this standard. If a violating column must be patched, then it
must be replaced with compliant column (shorter name) as part of the
patch. Application code will need to be updated to reference the new
shorter column name.
Column Type must be a built-in type or a user-defined type owned by a
non-editioned user. (GSCC File.Gen.37)
Column Type must not be LONG or LONG RAW. For more information on this
standard, see: Oracle Database SecureFiles and Large Objects
Developer's Guide 11g Release 2 (11.2). Also see: LONG to CLOB
Conversion Procedures. (GSCC File.Xdf.4)
Column Type should not be ROWID. (GSCC File.Xdf.4)
ROWID references can become invalid if the target table is patched,
loaded, or rebuilt. It is not safe to store ROWID references across an
online patching boundary.
Table Usage Standards:
Query/DML statements must access Tables via the Table Synonym or Editioning
View. (GSCC File.Gen.41)
If you query, display, or store table column names in your application
runtime code, you should use Logical Column Names rather than Physical
Column Names in most cases.
Follow the Logical versus Physical Column Guidelines for runtime
application code.
Warning: Some dictionary views (such as ALL_TAB_COLUMNS) contain
information for both Logical and Physical table columns, depending on
whether you query the editioning view or base table data. Consult
Logical versus Physical Column Guidelinesfor details.
Review the section Oracle E-Business Suite Objects that Reference
ALL_TAB_COLUMNS or DBA_TAB_COLUMNS and ensure that your query is
getting the correct logical or physical column information for your
purposes.
DDL statements such as TRUNCATE will not work on an APPS table synonym that
points to an editioning view. To truncate a table, you must supply the
actual base table (owner.table_name) in the truncate command.
Table Dynamic DDL Standards:
Application-managed tables are tables that are created and maintained by
application logic during normal application runtime:
Application-managed (dynamic) tables must not have an Editioning View.
Do not modify application-managed tables in an Online Patch.
(GSCC File.Gen.38)
Ordinary tables are created and maintained by Online Patching (and will
have an editioning view)
If the application logic modifies an ordinary table at runtime, it must
use the AD_DDL interface to execute the dynamic DDL.
Do not modify ordinary tables in the Run Edition while a Patch Edition
exists
Table Online Patching Compliance Standards:
Patch the table definition using ODF or XDF.
(GSCC File.Sql.81)
(Automatic) The table will be covered by an editioning view of the
name: substrb(table_name, 1, 29)||'#'
(Automatic) The editioning view will map each logical column name to
the latest version of that column.
Example: Table "FND_PROFILE_OPTIONS" has an editioning view called
"FND_PROFILE_OPTIONS#"
Do not update existing columns in a way that is incompatible with the
running application. Instead, create Revised Columns and store updated data
in the Revised Columns:
A Revised Column Name has the form:
#
Version_tag is a string of the form: [0-9A-Z]+
Version tags are compared using the SQL '>' operator. A "greater"
tag is a later version.
Example: Column "AMOUNT" is replaced by revised
column "AMOUNT#1"
Example: Column "AMOUNT#1" is replaced by revised
column "AMOUNT#2"
Populate a Revised Column using a Forward Cross-Edition Trigger (FCET).
The FCET must be owned by APPS.
The FCET name should be of the form
_F.
Example: "FND_PROFILE_OPTIONS_F3"
The FCET must be created with the "disable" option.
The FCET for the second and subsequent change to a given table must
specify that it "follows " in the trigger
definition.
For information on the FOLLOW clause, see: Oracle Database PL/SQL
Language Reference.
The FCET must be created using a DBDRV command that executes the
create script in phase=ccet.
The FCET must be applied using a DBDRV command that calls
AD_ZD_TABLE_APPLY . in phase=ccet.
Tip: Use the Forward Cross-Edition Trigger template.
Do not drop an existing table until the Cleanup phase of patch execution.
For an example of a deferred drop, see: Code Example of a Deferred Drop.
Do not drop an existing column. Columns that are replaced by new revised
columns will be dropped automatically at cleanup. Dropping a logical column
is not supported.
Do not rename an existing table.
For more information on guidelines for managing tables, see: Oracle Database
Administrator's Guide 11g Release 2 (11.2).For more information on using XDF
(XML Definition File) features, see: XML Definition File Utility.
Index
-----
Index Definition Standards:
Index Name must contain an underscore ('_'). (GSCC File.Gen.39)
The Unique Index on a Seed Data Table must include ZD_EDITION_NAME.
Note: This will be implemented automatically when you call
"ad_zd_seed.upgrade" on your seed data table, but if you add a new unique
index to an existing seed data table you will need to include the
ZD_EDITION_NAME column in your index definition.
The Unique Index on a Seed Data Table should have at least one not-null
column besides ZD_EDITION_NAME.
Note: If the unique index has all nullable columns, then we expect each row
in the table to have at least one non-null column value for the indexed
columns. You must ensure that this is true as part of the Oracle E-Business
Suite 12.2 upgrade (select rows where all indexed columns are null and
either delete or update as needed to meet this standard).
Index Key Length should be less than 3125 bytes.
Index Key Length is the sum of the column lengths for each column in the
index, plus one byte for each column.
If the Index Key Length is greater than 3125 bytes, then the index cannot
be revised using "online" index definition, and a full table lock will be
held during index revision.
A function-based index must not reference editioned Oracle E-Business Suite
objects (built-in database functions such as "UPPER()" are acceptable).
Index Dynamic DDL Standards:
"CREATE INDEX ... ON ..." statement must specify the fully qualified table
name, not the APPS table synonym.
Good: create index SOME_TABLE_N1 on SCHEMA.SOME_TABLE ...
Bad: create index SOME_TABLE_N1 on SOME_TABLE ...
Index Online Patching Compliance Standards:
Deliver the index definition using ODF or XDF.
(Automatic) New or revised indexes will be initially created disabled and
with an alternate name. These indexes will be enabled and renamed during
cutover processing.
Do not drop an existing index until the Cleanup phase of patch execution.
For an example of a deferred drop, see: Code Example of a
Deferred Drop.
For more information on indexes, see: Oracle Database Concepts 11g
Release 2 (11.2).
For more information on using XDF (XML Definition File) features, see:
XML Definition File Utility.
Integrity Constraint
--------------------
Integrity Constraint Definition Standards:
Constraint Name must contain an underscore ('_').
Foreign Key Constraint should not be created, and must not reference
a Seed Data Table.
Integrity Constraint Dynamic DDL Standards:
If you dynamically create a primary or unique constraint against a Seed
Data Table, the constraint must include the ZD_EDITION_NAME column.
Integrity Constraint Online Patching Compliance Standards:
Deliver constraint definition using ODF or XDF. (GSCC File.Sql.81)
New or revised constraints will be initially created as disabled, and
will be enabled during Cutover.
For more information on integrity constraints, see: Oracle Database
Concepts 11g Release 2 (11.2).
For more information on using XDF (XML Definition File) features, see:
XML Definition File Utility.
Materialized View (MV)
----------------------
The Materialized View is a non-editioned object type, and therefore a
materialized view cannot directly reference editioned objects. To avoid this
limitation, Oracle E-Business Suite Online Patching technology implements a new
Effectively Editioned Materialized View compound object. Application developers
create and maintain the Materialized View Definition (query) in an ordinary
view. The Online Patching technology then automatically maintains a
corresponding Materialized View Implementation that is legal for editioned
databases.
MV Definition Standards:
A Materialized View Name must be unique within the first 29 bytes.
A Materialized View Definition must be stored in an ordinary view
called MV_NAME||'#'.
Create or replace the Materialized View Definition as an ordinary view
calledmv_name||'#'.
Test the MV Definition for accuracy before generating the MV
Implementation.
For example:
create or replace view FND_EXAMPLE_MV# as select ... ;
select * from fnd_example_mv#;
The Materialized View Implementation is automatically generated from the MV
Definition using the AD_ZD_MVIEW.UPGRADE procedure.
The syntax is exec ad_zd_mview.upgrade(, )
Do not attempt to directly create or replace the Materialized View
Implementation Query. To recreate an MV Implementation, call the
AD_ZD_MVIEW.UPGRADE procedure.
A Materialized View Definition must specify a column alias for each item in
the select list.
Failure to specify a column alias may cause the error
ORA-00998 "must name this expression with a column alias"
Example: change select sum(EMP.SALARY), ...
to select sum(EMP.SALARY) SUM_EMP_SALARY, ...
A Materialized View Query must not reference editioned PL/SQL functions.
If the MV definition references an editioned PL/SQL function, the MV
Implementation will fail to generate and the MV will be unusable.
For examples of replacing PL/SQL function calls with equivalent SQL in
Materialized Views, see: Examples of SQL Replacements for PL/SQL
Functions
A Materialized View should use 'REFRESH FORCE' instead of 'REFRESH
FAST'. The 'FORCE' option allows the MV to fall back to using a complete
refresh in situations where the fast refresh is not possible.
See: Oracle Database SQL Language Reference 11g Release 2 (11.2) for more
information on the "REFRESH FORCE" option.
If the MV Implementation content must be automatically refreshed after
patching, include the '/*AUTOREFRESH*/' comment tag in the MV Definition
query.
Do not specify the /*AUTOREFRESH*/ tag for large MVs that will take a
long time to refresh. For these cases use a concurrent program to
refresh the MV after patching cutover.
Example: create or replace view FND_EXAMPLE_MV# as select
/*AUTOREFRESH*/ ... ;
MV Usage Standards:
Do not assume that Fast Refresh is always possible. After an online patch,
Complete Refresh may be required. When refreshing a Materialized View, us
the 'FORCE' clause instead of 'FAST'.
See: Oracle Database SQL Language Reference 11g Release 2 (11.2) for more
information on the 'FORCE' option.
MV Dynamic DDL Standards:
Use AD_MV to execute Dynamic DDL for materialized views. Here is an
example of creating a materialized view using the AD_MV package:
--
-- Code Example: Create a materialized view using AD_MV interface.
--
-- Note:
-- when executed in the Run Edition, the MV is created immediately.
-- when executed in the Patch Edition, the MV is generated at CUTOVER.
--
begin
-- Create MV
ad_mv.create_mv('FND_EXAMPLE_MV',
'create materialized view FND_EXAMPLE_MV '||
' tablespace '||ad_mv.g_mv_data_tablespace||' '||
' build deferred refresh on demand as '||
'select /*AUTOREFRESH*/ '||
' upper(oracle_username) USERNAME '||
' , decode(read_only_flag,''C'',''pub'',''E'',''applsys'',''U'',''apps'')
USERTYPE '||
'from fnd_oracle_userid '||
'where read_only_flag in (''C'',''E'',''U'') ');
end;
-- End of Code Example.
MV Online Patching Compliance Standards:
Deliver Materialized View using XDF. (GSCC File.Sql.82)
Do not drop an existing materialized view until the Cleanup phase of patch
execution.
Do not attempt to upgrade, refresh or access a Materialized View
Implementation in the Patch Edition. Although the MV implementation is
visible to the Patch Edition, it continues to implement the Run Edition of
the definition until the cutover phase. MV implementations are
automatically regenerated as needed at the cutover phase.
If an online patch must manually refresh the MV Implementation
contents, submit a concurrent request to do the refresh. The concurrent
request will be run after cutover and therefore after the MV
implementation has been regenerated.
If the MV Definition specifies the /*AUTOREFRESH*/ comment tag, then
the MV Contents will be automatically refreshed whenever the MV
implementation is regenerated.
Do not drop an obsolete materialized view until the Cleanup phase of patch
execution.
For more information on materialized views, see: Oracle Database Concepts 11g
Release 2 (11.2).
For more information on using XDF (XML Definition File) features, see:
XML Definition File Utility.
Examples of SQL Replacements for PL/SQL Functions
-------------------------------------------------
To "Editions-enable" the APPS schema, non-Editionable objects must not depend
on Editionable objects (NE !-> E). To meet this requirement, the database
object development standards specify that Materialized Views (Materialized
Views, or MVs, are non-Editionable) must not call PL/SQL functions (which are
Editionable).
The examples below demonstrate how to replace frequently- used Oracle
Applications Technology PL/SQL function calls with an equivalent SQL in
Materialized Views. You may continue to call built-in PL/SQL functions such as
"upper()". fnd_profile.value() replaced with a SQL sub-select:
Before:
fnd_profile.value('MSC_HUB_REGION_INSTANCE')
After:
(select profile_option_value
from fnd_profile_option_values
where level_id = 10001
and (profile_option_id, application_id) =
(select profile_option_id, application_id
from fnd_profile_options
where profile_option_name = 'MSC_HUB_REGION_INSTANCE'))
Notes:
This replacement is valid ONLY in a Materialized View. For other uses of
fnd_profile.value(), continue using the normal PL/SQL call.
The general case for fetching profile option values is very complex, that
is why there is a PL/SQL package dedicated to doing it. But materialized
views results have to be valid in any context, so profile options
referenced in materialized views should only have site-level values, and
the replacement SQL only needs to support fetching the site level value.
This replacement SQL will only use the profile option value set at the site
level.
fnd_message.get_string() replaced with a SQL sub-select
Before:
fnd_message.get_string('MSC','MSC_HUB_UNASSIGNED')
After:
(select substrb(REPLACE(message_text, '&&', '&'),1,2000)
from fnd_new_messages m, fnd_application a
where m.message_name = 'MSC_HUB_UNASSIGNED'
and m.language_code = 'US'
and a.application_short_name = 'MSC'
and m.application_id = a.application_id)
Notes:
This replacement is valid ONLY in a Materialized View. For other uses of
fnd_message.get_string(), continue using the normal PL/SQL call.
This replacement SQL will only retrieve the US language message text and is
not sensitive to any session language settings.
MV queries cannot contain a sub-SELECT within the main SELECT clause;
therefore, the replacement SQL is a bit trickier if the function call was
used in the MV SELECT clause.
Before:
select fnd_message.get_string('FND', 'CANCEL')
from dual
where 1=1
/
After:
select fmgs.result
from dual
, (select substrb(REPLACE(message_text, '&&', '&'),1,2000) result
from fnd_new_messages m, fnd_application a
where m.message_name = 'CANCEL'
and m.language_code = 'US'
and a.application_short_name = 'FND'
and m.application_id = a.application_id) fmgs
where 1=1
/
fnd_global.lookup_security_group() replaced with a SQL sub-select
Before:
fnd_global.lookup_security_group('INTEREST_STATUS', 279)
After:
(select nvl(max(lt.security_group_id), 0)
from fnd_lookup_types lt
where lt.view_application_id = 279
and lt.lookup_type = 'INTEREST_STATUS'
and lt.security_group_id in (
0,
to_number(decode(substrb(userenv('CLIENT_INFO'),55,1),
' ', '0',
null, '0',
substrb(userenv('CLIENT_INFO'),55,10)))))
Note: This replacement is valid ONLY in a Materialized View. For other uses of
fnd_global.security_group(), continue using the normal PL/SQL call.
Example of a Deferred Drop
Here is a code example of a deferred drop. This example is for a table:
REM dbdrv: sql ~PROD ~PATH ~FILE \
REM dbdrv: none none none sqlplus &phase=last \
REM dbdrv: checkfile:~PROD:~PATH:~FILE &un_fnd
-- Example logic to drop a table under online patching
--
-- Note: This script drops example table "APPLSYS.FND_EXAMPLE_TABLE".
-- To use this logic for another table, you must substitute "&un_fnd" with the
-- actual table owner token ("&un_"), and
-- "FND_EXAMPLE_TABLE" with the actual table name.
--
-- Usage
-- @TABLE_DROP_SCRIPT
drop synonym FND_EXAMPLE_TABLE;
drop view &1..FND_EXAMPLE_TABLE#;
exec ad_zd.load_ddl('CLEANUP', 'drop table &1..FND_EXAMPLE_TABLE')
The contents of the Readme (included with the patch) are as follows:
References
For more information on the operation of Oracle E-Business Suite Online Patching, refer to Chapter 3, Patching Procedures, in Oracle E-Business Suite Maintenance Guide.
Subscribe to:
Post Comments (Atom)
Database Options/Management Packs Usage Reporting for Oracle Databases 11.2 and later (Doc ID 1317265.1)
Database Options/Management Packs Usage Report You can determine whether an option is currently in use in a database by running options_pa...
-
In this Document Goal Ask Questions, Get Help, And Share Your Experiences With This Article Solution 12c TDE FAQ documentation Quick...
-
This document describes how to develop and deploy customizations in an Oracle E-Business Suite Release 12.2 environment. Follow thes...
-
This document also provides links to two presentations on the subject: Oracle OpenWorld presentation "Technical Upgrade Best Practice...
No comments:
Post a Comment