Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
University
Classroom
Training
Cloud
Learning
Technology
Subscription
Applications
Industries
Training On
Demand
education.oracle.
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
Session Surveys
Help us help you!!
We invite you to take a moment to give us your session
feedback. Your feedback will help us to improve your
conference.
Please be sure to add your feedback for your attended
sessions by using the Mobile Survey or in Schedule Builder.
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
Prerequisites
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
BI Mashup
What is BI Mashup?
Extends the data model to
include ad-hoc dimensions
and facts from Excel.
Dimensions extensions to add new
attributes
Fact extensions to add new
metrics
BI Mashup Example
10
11
12
13
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
14
# in seconds
# number of rows
OBIS_NQSCONFIG_QUERY_LIMITS_AS_GLOBAL_MAXIMUM =
1; #prevents rpd to overwrite global maxima
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
15
16
17
Compatibility flag
A single COMPATIBLE_RELEASE flag
can be set to restore all the
compatibility flags to the default
values as of a particular earlier
release
Earliest release that will be
recognized by the framework is
11.1.1.9
Set compatibility flags on a systemwide basis in the NQSConfig.INI
(needs OBIS restart) or for a
particular report as request
variables without changing the RPD
or bouncing server
Copyright 2015, Oracle and/or its affiliates. All rights reserved.Oracle
|
Confidential Internal
18
19
20
21
SQL Bypass
22
23
24
OBIS
Logs
Setup
Enterprise
Manager
(EM)
Log level of various BI components can be changed via
EM.
Ensure that parameter centralConfigurationEnabled is
set to true in
file:~user_projects/domains/bifoundation_domain/config
/fmwconfig/biee-domain.xml
Trace
Level in
logconfig.
xml
1
16
32
BI Server
Log Level
2
5
7
25
26
27
28
Tie physical sql from nqquery.log to ORDBMS using physical hash value
Physical hash value is propagated to ORDBMS during query execution (it gets stored in
action.v$sql)
select * from v$sql where action = 'c8dc78e8
29
31
33
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
34
Problem
Complex transformations
Unsupported DB function
Why Aggregates?
Pros
Faster query response time usually by several order of magnitude
Efficient resource utilization
Aggregates can be in the same database as the source
Aggregates can be on a different relational source or Essbase
Cons
Creating aggregates is a resource intense exercise
Cannot be used for real time data
Oracle BI EE Architecture
Semantic
Layer
Metadata
SQ
L
BI Server
Tables
RDBMS
Copyright 2015, Oracle and/or its affiliates. All rights reserved. |
Aggregates
Semantic
Layer
Metadata
BI Server
Detail
SQL
SQ
L
Metadata
describes
aggregate
mappings
Summary aggregates
ation
g
e
r
agg
e
m
ti
Load
RDBMS
Copyright 2015, Oracle and/or its affiliates. All rights reserved. |
Aggregates can
reside in a
different database
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
40
41
Result Cache
Logical query results are cached by the server
Parameters to control number of rows per cache as well as
number of cache entries allowed
[CACHE]
ENABLE = NO;
MAX_ROWS_PER_CACHE_ENTRY = 100000;
MAX_CACHE_ENTRY_SIZE = 20 MB;
MAX_CACHE_ENTRIES = 1000;
42
Result Cache
Table level control (i.e., dont cache real-time tables)
Use Cache Manager in Admin Tool (in online mode) to gather
cache hit and miss number
You need to define seeding and purge strategy
Cache is persistent during server restart
May not be compatible from release to release, needs to be
seeded after patching
43
OBISDiagnostics($Name_of_cache_from_above_step')
Result cache statistics parameter list:
QUERIES PER SEC
FAILED QUERIES PER SEC
NEW PREPARES
ROWS PER SEC
KB PER SEC
Plan cache statistics parameter list:
CAPACITY
TOTAL REQUESTS
AVG REQUESTS
AVG HITS
AVG MISS
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
44
Cache Hits
Caching is at the logical query layer, not physical layer
A query doesnt need to be identical to get a hit
Cache results can be aggregated to satisfy a request
A more restrictive WHERE clause can hit
A subset of columns will hit
Expressions can hit if they use only cached columns
Cache entry currently contains
Database tables
Database Schemas
Connection pool parameters
Connection scripts
Physical Plan
Session variables (name/value) included in the plan
Cache detector will not hit if the above variable values does not match for
incoming query
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
45
46
Seeding ensures good performance for the first users of the day
iBots can run standard dashboards to seed them
Run seed queries that are easy to hit (see Admin Guide)
Simple columns (no expressions)
No WHERE clause
47
48
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
49
50
51
Nested REPLACE
Nested replace statement results in padding large amount of data since
for each replace it would allocate maximum size (1500 characters in this
case)
Query returns 200+ MB for 3 rows
Projection column is VARCHAR(1500)
For each replace statement padded size grows exponentially
This would occur with other concatenated functions like concat
cast the nested replace :
52
Setting hints
Hints that you intend to pass to
the end datasource (ORDBMS) can
be set in RPD at connection or
query level:
Execute on connect /
disconnect
Execute before / after query
Upon disconnect if statement
errors, connection is damaged
and not returned to pool and
counter not decremented
Eventually connections will be
saturated and system will be
frozen since no connections are
53
Table / VO Pruning
Use correct cardinality, 1:N results in
more efficient SQL generation
compared to (0,1):N
Tables used in query with (0,1):N
cardinality
PER_LOCATION_DETAILS_F_TL
PER_LOCATION_DETAILS_F_VL
POR_REQUISITION_LINES_ALL
POR_REQUISITION_HEADERS_ALL
PO_LINE_LOCATIONS_ALL
PO_VERSIONS_INIT_SEQUENCE_V
FUN_ALL_BUSINESS_UNITS_V
GL_LEDGERS
FND_CURRENCIES_B
FND_CURRENCIES_TL
Copyright 2015, Oracle and/or its affiliates. All rights reserved. |
54
Table/ VO Pruning
Unnecessary VOs being used (VO join pruning not occurring)
55
Filter rewrite
Old style logical SQL
generation
SELECT
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."All Channels"),
IDOF("BIQA_AW_REL"."C1 Product"."Standard"."Total"),
"BIQA_AW_REL"."C1Channel"."All Channels",
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Sales",
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Units"
FROM "BIQA_AW_REL"
SELECT
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."All
Channels"),
UNION ALL
IDOF("BIQA_AW_REL"."C1 Product"."Standard"."Total"),
SELECT
"BIQA_AW_REL"."C1Channel"."All Channels",
CAST(NULL AS INTEGER),
IDOF("BIQA_AW_REL"."C1 Product"."Standard"."Total"),
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1
CAST(NULL AS INTEGER),
Sales",
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Sales",
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Units"
FROM "BIQA_AW_REL"
Units",
WHERE
FILTER("BIQA_AW_REL"."C1Cube Units Sales
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."Channel") IN (2, 4)
Measures"."C1 Sales" USING
UNION ALL
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."Channel")
SELECT
CAST(NULL AS INTEGER),
IN (2, 4)) as "SalesCG1",
IDOF("BIQA_AW_REL"."C1 Product"."Standard"."Total"),
FILTER("BIQA_AW_REL"."C1Cube Units Sales
CAST(NULL AS INTEGER),
Measures"."C1 Units" USING
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Sales",
"BIQA_AW_REL"."C1Cube Units Sales Measures"."C1 Units"
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."Channel")
FROM "BIQA_AW_REL"
IN (2, 4)) as "UnitsCG1",
WHERE
FILTER("BIQA_AW_REL"."C1Cube Units Sales
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."Channel") IN (3, 4)
ORDER BY 1
Measures"."C1 Sales" USING
IDOF("BIQA_AW_REL"."C1Channel"."Primary"."Channel")
Copyright 2015, Oracle
and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
IN (3, 4)) as "SalesCG2",
56
Filter rewrite
WITH
SAWITH0 AS (select sum(T7209.UNITS) as c1,
sum(T7209.SALES) as c2,
T6641.TOTAL_CHANNEL_ID as c3,
T6716.TOTAL_CUSTOMER_ID as c4,
T7121.TOTAL_PRODUCT_ID as c5
from
PRODUCT_DIM T7121,
CHANNEL_DIM T6641,
CUSTOMER_DIM T6716,
SALES_FACT T7209
where ( T6641.CHANNEL_ID = T7209.CHANNEL_ID and T6716.SHIP_TO_ID =
T7209.SHIP_TO_ID and T7121.ITEM_ID = T7209.ITEM_ID )
group by T6641.TOTAL_CHANNEL_ID, T6716.TOTAL_CUSTOMER_ID,
T7121.TOTAL_PRODUCT_ID),
SAWITH1 AS (select sum(T7209.UNITS) as c1,
sum(T7209.SALES) as c2,
T6716.TOTAL_CUSTOMER_ID as c3,
T7121.TOTAL_PRODUCT_ID as c4
from
PRODUCT_DIM T7121,
CHANNEL_DIM T6641,
CUSTOMER_DIM T6716,
SALES_FACT T7209
where ( T6641.CHANNEL_ID = T7209.CHANNEL_ID and T6716.SHIP_TO_ID =
T7209.SHIP_TO_ID and T7121.ITEM_ID = T7209.ITEM_ID and (T6641.CHANNEL_ID in (2,
4)) and (T7209.CHANNEL_ID in (2, 4)) )
group by T6716.TOTAL_CUSTOMER_ID, T7121.TOTAL_PRODUCT_ID),
SAWITH2 AS (select sum(T7209.UNITS) as c1,
sum(T7209.SALES) as c2,
T6716.TOTAL_CUSTOMER_ID as c3,
T7121.TOTAL_PRODUCT_ID as c4
from
PRODUCT_DIM T7121,
CHANNEL_DIM T6641,
CUSTOMER_DIM T6716,
SALES_FACT T7209
57
Filter rewrite
Convert a physical column CASE statement into a logical column definition
based on filter function
Logical Query:SELECT Time.Quarter saw_0, Time.Week saw_1, rsum("Fact - RMW
Opportunity"."Expected Revenue (000)") saw_3 FROM "Sales - Sales Revenue and
Pipeline" WHERE (Time.Quarter = VALUEOF(CURRENT_QUARTER)) ORDER BY saw_0,
saw_1
59
Performance flags
DISABLE_NO_MERGE_HINT_FOR_LOOKUP
BI Server adds a NO_MERGE hint to all lookup query blocks shipped
to Oracle data sources to prevent the optimizer from merging the
lookup query block with the main query.Set
DISABLE_NO_MERGE_HINT_FOR_LOOKUPvariable to 1 to disable
OBIS_VALUE_PROMPT_LOOKUP_DIRECT_ACCESS
In OTBI, some prompt queries perform better if server queries
lookup table instead of the base dimension table. This optimization
is restricted to very specific types of queriesonly prompt queries
issued by OBIPS where theQUERY_SRC_CDrequest variable is set to
eitherValuePromptorDisplayValueMapand the selected columns
can be traced back to a single lookup table.
PERF_PREFER_SUBQUERY_CACHE_SEED
By default, subquery cache seed is disabled. In some cases, for
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
60
Program Agenda
1
Best practices
Aggregate persistence
Caching
Case studies
Q&A
Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle
|
Confidential Internal
61
62