Skip to main content

EBR Non-Compliance Issues and their fixes


Section – 8:

Cause: Object is INVALID
P1: Invalid objects are non-functional.
Fix: Check if the objects can be validated resolving the issues related to the objects.

Section – 14:

Cause: Table Synonym must point to the editioning view, not the table, if the editioning view exists.
P2: Code that references these synonyms may operate incorrectly once the table is patched with revised columns.
Fix: Execute the table upgrade procedure.
SQL> exec ad_zd_table.upgrade(table_owner, table_name)
Unused synonyms can be ignored or dropped.

Section – 15:

Cause: Synonym must point to an object.
P3: broken synonyms cause clutter and confusion.
Fix: Correct or drop these synonyms.

Section – 19:

Cause: Table must be owned by an EBS product schema, not APPS.
P2: Tables owned by APPS cannot be patched using online patching.
Fix: Move table to a product schema and then call the table upgrade procedure.
SQL> ad_zd_table.upgrade(new_owner, table_name)
Note: An unused table can be ignored or dropped.  Tables that are managed dynamically by application runtime can be ignored.

Section – 20:

Cause: Table must have an editioning view.
P2: These tables may not be patched using online patching.
Fix:  Execute the table upgrade procedure.
SQL> exec ad_zd_table.upgrade(table_owner, new_table_name)
Note: Tables that are dynamically created by application runtime can be ignored.
Note: Tables that end with "_A" are typically audit tables by the Audit Trail feature, and can be ignored.
Note: This check is only active after Online Patching Enablement.

Section – 21:

Cause: Base column name can only use '#' as the last character.
P2: These columns will not show correctly in the editioning view.
Fix: Rename the column
SQL> alter table table_owner.table_name rename column column_name to new_column_name;
Unused tables and columns can be ignored.
Note: This check only works prior to Online Patching Enablement.

Section – 22:

Cause: Base column name must be unique within 28 bytes.
P3: these columns cannot be revised using the same logical name during online patching.
Fix: violations by renaming the column to a shorter base name.
SQL> alter table table_owner.table_name rename column column_name to new_column_name;
SQL> ad_zd_table.patch(table_owner, table_name)
Fixes can be deferred until there is a reason to patch the column. Unused columns can be ignored.
Note: This check only works after Online Patching Enablement.

Section – 24:

Cause: Column Type must not be LONG or LONG RAW.
P2: These columns cannot be patched using Online Patching.
Fix: Alter the column datatype to CLOB or BLOB.
SQL> alter table owner.table_name modify column_name CLOB;
Note: The LONG-to-CLOB datatype change should be implemented before Online Patching Enablement.
Note: If you alter the column type via 'ALTER TABLE' DDL (instead of using using XDF/ODF) you will need to rebuild indexes on the affected table manually.
SQL> alter index owner.index_name rebuild;
Note: Changing a LONG to CLOB will cause any trigger that references the CLOB column in the "UPDATE OF" clause of a trigger to go invalid. Fix this by referencing the table in the "ON" clause of the trigger Unused LONG columns can be ignored, but should be dropped.

Section – 25:

Cause: Column Type should not be ROWID.
P2: Stored ROWID references may be broken when tables are patched.
Fix: Re-design table to reference the target table primary key. Unused columns or columns that only store the ROWID temporarily can be ignored.
Note: this check does not work prior to Online Patching Enablement.

Section – 26:

Cause: Query/DML statements must access tables via the APPS table synonym.
P2: These objects may operate incorrectly after the referenced table has been patched.
Fix:  Change the object to reference tables via the APPS table synonym.

Section – 33:

Cause: Index Name must contain an underscore ('_') character.
P2: These indexes cannot be revised during online patching.
Fix: Renaming index according to EBS naming standards:
Unique:     TABLE_NAME_U1, TABLE_NAME_U2, ...
Non-Unique: TABLE_NAME_N1, TABLE_NAME_N2, ...
Unused indexes should be dropped.
Note: This check only works after Online Patching Enablement.

Section – 34:

Cause: Index Must be usable.
P1: Unusable indexes block DML access to the table
Fix: Rebuild the index.
SQL> alter index owner.index_name rebuild;
Indexes on unused tables can be ignored
Note: Unusable indexes where ITYP_OWNER='CTXSYS' will not block DML and are not P1 issues.

Section – 37:

Cause: Index key size should be less than 3215.
P3: Possible runtime locking when patching this index.  Application users may see delayed response for transactions against these tables while the index is being patched.
Fix: Remove unnecessary columns from the index.
Unfixed violations can be ignored.

Section – 41:

Cause: Materialized View (MV) must have a corresponding Logical View (MV#).
P1: These MVs did not upgrade correctly and are non-functional. This can happen if the MV query is not a legal ordinary view query.
Fix: Recreate the MV using the AD_MV.CREATE_MV procedure. Unneeded MVs can be ignored but should be dropped.
Note: This check is only active after Online Patching Enablement.
For more details, please refer Materialized Views in 12.2

Section – 42:

Cause: Logical View (MV#) must have a corresponding Materialized View (MV).
P1: These MVs did not upgrade correctly and are non-functional. This is likely because the MV query references an editioned PL/SQL function.
Fix: create the MV according to development standards using the AD_MV.CREATE_MV procedure. Unneeded MVs can be ignored but should be dropped.

Section – 43:

Cause: Object name must not match any E-Business Suite schema name.
P1: These object names conflict with schema names and may cause errors during upgrade or online patching.
Fix: Drop or rename the object.

Section – 45:

Cause: E-Business Suite DB Technology Codelevel Checker must be run on all database nodes.
P1: Online Patching will not allow execution until the until this manual step is completed.  See My Oracle Support Knowledge Document 1594274.1 for further information.

Section – 90:

Cause: Revoke unnecessary grants granted on SYS.DUAL by SYS.
Fix: Please execute ADFIXUSER.sql if one or more records exist.

Comments

Popular posts from this blog

How to compile all INVALID objects in Oracle

There are five ways to recompile invalid objects in schema. DBMS_DDL DBMS_UTILITY UTL_RECOMP UTLRP.SQL Manually Recompile > Best Approach 1. DBMS_DDL This procedure is equivalent to the following SQL statement: ALTER PROCEDUREFUNCTIONPACKAGE [.] COMPILE [BODY] Syntax Exec dbms_ddl.alter_compile ( type , schema, name); Type : Must be either PROCEDURE, FUNCTION, PACKAGE, PACKAGE BODY or TRIGGER. Schema : Database Username Name : Objects name Example SQL> exec dbms_ddl.alter_compile ('PROCEDURE','SCOTT','TEST'); PL/SQL procedure successfully completed. 2. DBMS_UTILITY This procedure compiles all procedures, functions, packages, and triggers in the specified schema. Syntax Exec dbms_utility.compile_schema ( schema,compile all) Schema : Database Username Compile All : Object type ( procedure, function, packages,trigger) Example SQL> exec dbms_utility.compile_schema('SCOTT'); PL/SQL procedure successfully co

How to setup and use AME - Approval Management Engine

Approval Management Engine - AME For Purchase Requisition Approvals Purchase Requisitions can be routed for approval using the AME Approval Management Engine. This whitepaper describes how to setup AME for use with requisition approvals, and shows how a requisition approval list is built based on the AME setup. Approvers in the AME based approver list are assigned to the requisition based on the AME rules setup for the Purchase Requisition Approval transaction. Similar setup can be done for Requester Change Order Approval and for Internal Requisition Approval, although those are not specifically covered in this whitepaper. The screenshots provided are based on 11i.AME.B, and some of the navigation details are specific to 11i.AME.B. However, most of the details provided are applicable to 11i.AME.A and higher including R12. Assign AME Roles and Responsibilities AME responsibilities in 11i.AME.A are assigned directly to the users. However, In R12 or 11i.AME.B and higher, AME respons

Workflow Important Debug Queries

deq_time is not always populated in WF_DEFERRED. The best way to monitor is to check if there are any READY events select msg_state,count(*) from applsys.aq$wf_deferred  group by msg_state; For getting Item_Type and Display name for Runnable processes. SELECT WFA_ACT.ITEM_TYPE ITEM_TYPE ,   WFA_ACT.NAME PROCESS_NAME ,   WFA_ACT.DISPLAY_NAME DISPLAY_NAME FROM wf_activities_vl wfa_act WHERE wfa_act.runnable_flag = 'Y' AND wfa_act. type            = 'PROCESS' AND sysdate BETWEEN wfa_act.begin_date AND NVL(wfa_act.end_date, sysdate); Query to find records that are pending in each of the workflow agent listener queues SELECT 'select ''' || t.component_name || ' (queue_table: ' || p.queue_table ||        ')''||'' Count: ''||count(*) c from ' || p.owner || '.' || .queue_table ||        ' where deq_time is null and nvl(delay,enq_time)<sysdate-1/24  ||        nvl2(t.correlation_id,