scan a small random sample of the table's blocks, and to apply the relevant single table predicates to estimate

selectivity for each predicate. In some cases sample cardinality can also be used to estimate table cardinality. The internal tests, performed on large staging tables, show that optimizer can produce efficient execution plans by utilizing dynamic sampling feature at much shorter time compared to gathering table stats using conventional methods. Below are the details of one of the internal benchmark tests: Hardware configuration: 8 CPU cores x 16Gb RAM x 2Tb NAS server with Linux 64bit OS Target Database: Oracle 10.2.0.3 64bit Test configuration: query involves a large staging table with over 100 Million rows, joined with two smaller dimension tables

Test Scenarios No statistics were collected on the staging table. Computed statistics on the staging table using DBMS_STATS package.

Statistics / Sampling Execution Time Dynamic sampling: 10.6 sec Statistics computing: 53 min 26 sec

Query Execution Time 2 hours 27 min 45 sec 2 hours 20 min 43 sec

The overall run time for the second case was approximately 45 minutes longer compared to the dynamic sampling scenario. The optimizer estimated the identical run time for both cases execution plans. Enabling Dynamic Sampling at the system level may cause additional performance overhead, so it should be selectively applied only to the mappings, which run the queries against the large staging table by inserting Dynamic Sampling hints into the appropriate mapping SQLs. Refer to the publication Oracle Database Performance Tuning Guide (10g Release 2) for more details. Note that the DAC version released with Oracle Business Intelligence Applications Version 7.9.6 does not disable computing statistics at a table level. To workaround this limitation, you can abort the execution plan in DAC, mark the task Analyze Table for your staging table as Completed and restart the Execution Plan.

CUSTOM INDEXES IN ORACLE EBS FOR INCREMENTAL LOADS PERFORMANCE Introduction
Oracle EBS source database tables contain mandatory LAST_UPDATE_DATE columns, which are used by Oracle BI Applications for capturing incremental data changes. Some source tables used by Oracle BI Applications do not have an index on LAST_UPDATE_DATE column, which hampers performance of incremental loads. There are three categories of such source EBS tables: Tables that do not have indexes on LAST_UPDATE_DATE in the latest EBS releases, but there are no performance implications reported with indexes on LAST_UPDATE_DATE column. Tables that have indexes on LAST_UPDATE_DATE columns, introduced in Oracle EBS Release 12. Tables that cannot have indexes on LAST_UPDATE_DATE because of serious performance degradations in the source EBS environments.

-

Custom OBIEE indexes in EBS 11i and R12 systems
The first category covers tables, which do not have indexes on LAST_UPDATE_DATE in any EBS releases. The creation of custom indexes on LAST_UPDATE_DATE columns for tables in this category has been reviewed and

45

HZ_CONTACT_POINTS(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .HZ_ORGANIZATION_PROFILES(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index AR.AP_INVOICES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .AP_AE_HEADERS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index AP.OBIEE_AP_EXP_REP_HEADERS_ALL ON AP. DDL script for custom index creation: CREATE index AP. CREATE index AR.OBIEE_HZ_CONTACT_POINTS ON AR. replace <IDX_TABLESPACE> with <PROD>X. HZ_CUST_ACCT_SITES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index AR. If your source system is on of the following: EBS R12 EBS 11i release 11. tablespace <IDX_TABLESPACE> .OBIEE_HZ_CUST_SITE_USES_ALL ON AR.AP_PAYMENT_SCHEDULES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .HZ_PARTY_SITES(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index AR. CREATE index AP.HZ_RELATIONSHIPS(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .GL_JE_HEADERS(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .HZ_LOCATIONS(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index AR.9 or lower and it has not been migrated to OATM*. CREATE index AR.OBIEE_AP_PAYMENT_SCHEDULES_ALL ON AP.HZ_PERSON_PROFILES(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .OBIEE_HZ_PARTY_SITES ON AR.OBIEE_AP_INVOICE_PAYMENTS_ALL ON tablespace <IDX_TABLESPACE> .HZ_CUST_ACCOUNT_ROLES(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .OBIEE_GL_JE_HEADERS ON GL.OBIEE_CST_COST_TYPES ON CST. AP.OBIEE_AP_INVOICES_ALL ON AP. where <PROD> is an owner of the table which will be indexed on LAST_UPDATE_DATE column.9 or lower and it has been migrated to OATM* then replace <IDX_TABLESPACE> with APPS_TS_TX_IDX prior to running the DDL. CREATE index AP.OBIEE_HZ_ORGANIZATION_PROFILES ON AR. CREATE index AR.OBIEE_HZ_RELATIONSHIPS ON AR. CREATE index CST.5. If your source system is EBS 11i release 11.HOLDS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .OBIEE_HZ_CUST_ACCT_SITES_ALL ON AR.10 EBS 11i release 11.HZ_CUST_SITE_USES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . 46 . CREATE index AR.AP_INVOICE_PAYMENTS_ALL(LAST_UPDATE_DATE) CREATE index AP. CREATE index GL.AP_EXPENSE_REPORT_HEADERS_ALL(LAST_UPDATE_DATE) CREATE index AP.approved by Oracle’s EBS Performance Group.OBIEE_HZ_CUST_ACCOUNT_ROLES ON AR. CREATE index AR.OBIEE_HZ_PERSON_PROFILES ON AR.OBIEE_AP_HOLDS_ALL ON AP. All Oracle EBS 11i and R12 customers should create the custom indexes using the DDL script provided below.5.OBIEE_AP_AE_HEADERS_ALL ON AP.CST_COST_TYPES(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .5.OBIEE_HZ_LOCATIONS ON AR.

PAY_INPUT_VALUES_F (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . Make sure you don't change the index name to avoid any future patch or upgrade failures on the source EBS side.OBIEE_WSH_NEW_DELIVERIES ON WSH. which have indexes on LAST_UPDATE_DATE.RCV_TRANSACTIONS_N23 ON PO. CREATE index PER. CREATE index WSH.PO_DISTRIBUTIONS_N13 ON PO. CREATE index AR.OBIEE_PAY_INPUT_VALUES_F ON PER.5. CREATE index WSH.OBIEE_OE_ORDER_HEADERS_ALL ON ONT.PAY_ELEMENT_TYPES_F (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .OBIEE_AR_CASH_RECEIPTS_ALL ON AR.AR_CASH_RECEIPTS_ALL (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . CREATE index ONT. Important: Make sure you use FND_STATS to compute statistics on the newly created indexes and update statistics on newly indexed table columns in the EBS database.OBIEE_RCV_SHIPMENT_LINES ON PO. All Oracle EBS 11i and R12 customers should create the custom indexes using the DDL script provided below. Custom EBS indexes in EBS 11i source systems The second category covers tables.CREATE index ONT.9 or lower and it has been migrated to OATM* then replace <IDX_TABLESPACE> with APPS_TS_TX_IDX prior to running the DDL.WSH_NEW_DELIVERIES (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . In such cases conflicting OBIEE_ indexes should be dropped and Autopatch restarted.OE_ORDER_HOLDS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .OBIEE_OE_ORDER_HOLDS_ALL ON ONT.OE_ORDER_HEADERS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . If your source system is one of the following: EBS R12 EBS 11i release 11. CREATE index PO.9 or lower and it has not been migrated to OATM*. CREATE index PO. CREATE index PO.10 EBS 11i release 11.5. If you source system is EBS 11i release 11. 47 . officially introduced Oracle EBS Release 12.5. CREATE index PER.WSH_DELIVERY_DETAILS (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . replace <IDX_TABLESPACE> with <PROD>X.OBIEE_RCV_SHIPMENT_HEADERS ON PO. Autopatch might fail during future upgrades if Oracle EBS introduces indexes on LAST_UPDATE_DATE columns for these tables.RCV_SHIPMENT_HEADERS (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> .RCV_SHIPMENT_LINES (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . Important: Since all indexes in this section have the prefix OBIEE_ and do not follow standard Oracle EBS Index naming conventions. where <PROD> is an owner of the table which will be indexed on LAST_UPDATE_DATE column.RCV_TRANSACTIONS (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> .OBIEE_PAY_ELEMENT_TYPES_F ON PER.OBIEE_WSH_DELIVERY_DETAILS ON WSH. DDL script for custom index creation: CREATE index PO.PO_DISTRIBUTIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> .

RA_CUSTOMER_TRX_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 4M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> . CREATE index PO. Refer to Oracle Metalink Note 248857. producing heavy inserts / updates into the tables below.5. and review 48 .1 for more details.PO_REQ_DISTRIBUTIONS_N6 ON PO. The old tablespace model standard naming convention for tablespaces is a product's Oracle schema name with the suffixes D for Data tablespaces and X for Index tablespaces. CREATE index AR.PO_HEADERS_N9 ON PO.PO_HEADERS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 1M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> . so introduction of indexes on LAST_UPDATE_DATE may cause additional overhead for some OLTP operations. one for the tables and one for the indexes.PO_REQ_DISTRIBUTIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> . OATM uses 12 locally managed tablespaces across all products. To analyze the impact on EBS source database.RA_CUSTOMER_TRX_N14 ON AR. designated for transaction table indexes. Customers running pre-11.PO_LINE_LOCATIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> . The majority of the customers will not have any significant impact on OLTP Applications performance. Oracle EBS tables with high transactional load The following Oracle EBS tables are used for high volume transactional data processing. CREATE index PO.CREATE index PO.5. Oracle EBS 11.PO_REQUISITION_LINES_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> . you can generate an Automatic Workload Repository (AWR) report during the execution of OLTP batch programs. For example.PO_LINES_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 4K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> .5. CREATE index PO. Since all custom indexes above follow Oracle EBS index standard naming conventions.PO_REQUISITION_LINES_N17 ON PO.10 releases can migrate to OATM using OATM Migration utility.PO_REQUISITION_HEADERS_N6 ON PO. any future upgrades would not be affected.9 and lower uses two tablespaces for each Oracle Applications product.PO_LINES_N10 ON PO. CREATE index PO. Indexes on transaction tables are held in a separate tablespace APPS_TS_TX_IDX. *) Oracle Applications Tablespace Model (OATM): Oracle EBS release 11. respectively. Important: Make sure you use FND_STATS to compute statistics on the newly created indexes and update statistics on newly indexed table columns in the EBS database.PO_LINE_LOCATIONS_N11 ON PO.PO_REQUISITION_HEADERS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE> .10 and R12 use the new Oracle Applications Tablespace Model. Oracle BI Applications customers may consider creating custom indexes on LAST_UPDATE_DATE for these tables only after benchmarking incremental ETL performance and analyzing OLTP applications impact. the default tablespaces for Oracle Payables tables and indexes are APD and APX. CREATE index PO.

You can use the same guidelines for creating 49 .OBIEE_<Table_Name> ON <Prod>. Refer to Oracle RDBMS documentation for more details on AWR usage. You may consider creating custom indexes on CREATION_DATE if your initial ETL extracts a subset of historic data.<Table_Name> (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE> . which can be used by Oracle BI Applications for capturing initial data subsets. Prod AP AP AP AP AR AR AR AR BOM BOM CST GL GL GL INV INV ONT PER PO Table Name AP_EXPENSE_REPORT_LINES_ALL AP_INVOICE_DISTRIBUTIONS_ALL AP_AE_LINES_ALL AP_PAYMENT_HIST_DISTS AR_PAYMENT_SCHEDULES_ALL AR_RECEIVABLE_APPLICATIONS_ALL RA_CUST_TRX_LINE_GL_DIST_ALL RA_CUSTOMER_TRX_LINES_ALL BOM_COMPONENTS_B BOM_STRUCTURES_B CST_ITEM_COSTS GL_BALANCES GL_DAILY_RATES GL_JE_LINES MTL_MATERIAL_TRANSACTIONS MTL_SYSTEM_ITEMS_B OE_ORDER_LINES_ALL PAY_PAYROLL_ACTIONS RCV_SHIPMENT_LINES WSH WSH_DELIVERY_ASSIGNMENTS WSH WSH_DELIVERY_DETAILS Custom EBS indexes on CREATION_DATE in EBS 11i source systems Oracle EBS source database tables contain another mandatory column CREATION_DATE.Segment Statistics section for resource contentions caused by custom LAST_UPDATE_DATE indexes. Make sure you use the following pattern for creating custom indexes on the listed tables below: CREATE index <Ppod>.

Sign up to vote on this title
UsefulNot useful