You are on page 1of 25

No, wait, not that way!

Real-world lessons from an OBIA 11g implementation


About you
Hi!
ABOUT PYTHIAN
Pythian is a global IT services company that specializes
in designing, implementing, and managing systems that
directly contribute to revenue and business success. We
help companies adopt disruptive technologies to
advance innovation and increase agility. Our highly
skilled technical teams work as an integrated extension
of our clients organizations to deliver continuous
transformation and uninterrupted operational
excellence.

Top 5% talent worldwide 18 years in business


9 Oracle ACEs 400+ employees
4 Oracle ACE Directors 270+ customers worldwide
Why this talk?
What is OBIA?
Oh, you
know...
No, really, what is OBIA?
Oracle Business Intelligence Enterprise
Edition (OBIEE)
+ Oracle Data Integrator (ODI)
+ Weblogic Server
+ Oracle RDBMS (Warehouse, 2 repositories)
+ Templates and ETL maps for a variety of
popular data sources
Know your versions
"Whoa, that's a lot of .1's"
OBIA 11.1.1.8 11.1.1.9 11.1.1.10

OBIEE 11.1.1.7 11.1.1.7* 11.1.1.9*

ODI 11.1.1.7 11.1.1.7 11.1.1.9

WLS 10.3.6 10.3.6 10.3.6

*With option to upgrade to higher


version
Know your limitations

Certified/supported configurations
Patching/upgrade paths
Java version
ODI quirks
OBIEE quirks
Build/config advice
Expect to read a lot
Record admin console sessions
Script everything (Learn WLST!)
Iterate
Build/config advice

Use db services to segregate workload


Automate maintenance tasks
Know your ports if hosting multiple environments
"Easy install"
rcu -silent -createRepository -connectString db_host:db_host:db_service -dbUser sys -dbRole
sysdba -schemaPrefix DEV -component MDS -component BIPLATFORM -f < /tmp/OBIEErcu;
rcu -silent -createRepository -connectString db_host:db_host:db_service -dbUser sys -dbRole
sysdba -schemaPrefix DEV -useSamePasswordForAllSchemaUsers false -component ODI -component
BIACOMP -component DW -f < /tmp/OBIArcu
java -d64 -jar wls1036_generic.jar -mode=silent -silent_xml=resp_file_path/wls_silent.xml
runInstaller -silent -jreLoc $JAVA_HOME -responseFile resp_file_path/obiee_base_inst.rsp
runInstaller -silent -jreLoc $JAVA_HOME -responseFile resp_file_path/odi_base_inst.rsp
runInstaller -silent -jreLoc $JAVA_HOME -responseFile respfile_path/obia_base_inst.rsp
perl APPLY_PATCHES.pl apply_patches_import.txt
config.sh -silent -responseFile respfile_path/obiee_config.rsp -jreLoc $JAVA_HOME
configApps.sh -silent -responseFile respfile_path/obia_config.rsp -jreLoc $JAVA_HOME
config.sh -silent -responseFile respfile_path/bi_scaleout.rsp -jreLoc $JAVA_HOME
"Easy install"
cd('/Servers/AdminServer')
cmo.setKeyStores('CustomIdentityAndCustomTrust')
cmo.setCustomIdentityKeyStoreFileName('/u01/oracle/keys/Identity.jks')
cmo.setCustomIdentityKeyStoreType('jks')
set('CustomIdentityKeyStorePassPhrase',priv);
cmo.setCustomTrustKeyStoreFileName('/u01/oracle/keys/Identity.jks')
cmo.setCustomTrustKeyStoreType('JKS')
set('CustomTrustKeyStorePassPhrase',trust)
cd('/Servers/AdminServer/SSL/AdminServer')
cmo.setServerPrivateKeyAlias('not_the_real_key_alias_of_course')
set('ServerPrivateKeyPassPhrase',priv)
cd('/Servers/AdminServer/SSL/AdminServer')
cmo.setEnabled(true)
cmo.setListenPort(7002)
showChanges()
activate()
exit()
Watch the defaults!
ODI default sessions
Java settings for managed servers
OBIEE session-related settings
Relocate log and temp files

Ref: MOS Note 1963225.1


MOS Note 1333049.1
Example: OBIEE session/cache tweaking
instanceconfig.xml
<Query> <MaxEntries>5000</MaxEntries>
<AbsoluteMaxEntries>20000</AbsoluteMaxEntries>
<CruiseEntries>3000</CruiseEntries>
<ForceLRU>true</ForceLRU>
</Query>

opmn.xml
<process-type id="OracleBIJavaHostComponent" module-id="CUSTOM">
[...]
<data id="start-args" value="-server -Xms8g -Xmx8g -Xmn4g -XX:+UseCompressedOops -XX:
+UseParallelOldGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:MaxPermSize=512M -XX:
PermSize=512M -XX:+DisableExplicitGC -Xnoclassgc
[...]

NQSConfig.INI
SERVER_THREAD_RANGE = 100-2000;
DB_GATEWAY_THREAD_RANGE = 100-2000;

Ref: MOS Note 1333049.1


Example: Explicit GC in JVMs

Ref: MOS Note 1369755.1


Test early, test often
Don't wait until late phases! Load testing important
along a number of dimensions:
individual report performance
app server performance
database performance under mixed (ETL +
reporting) load
system longevity ("endurance test")
Know your wallets!
"I want you to go in that bag, and find my wallet."
"Which one is it?
--Pulp Fiction

Multiple wallets, various purposes


Some boundary systems may not support SHA2-
encrypted SSL keys
Some default entries there, too
User management
Should you use external directory for service
accounts?

ODI user integration requires extra work


Extra work,
you said?
Instrumentation
Usage Tracking is kinda important
Keep log level high in RPD to get useful mapping between
physical and logical queries.
Leverage connection pool and report-level settings in RPD
to get slightly better end-to-end tracking
Consider retention period and archiving of ODI run data
License Diagnostic and Tuning packs
The warm fuzzy stuff
No unicorns
Choose partners carefully (no sales pitches here)
Keep fences low; collaborate widely
Don't wait for documents to be "perfect"
Tech folks: over-communicate, don't assume
Be excellent to each other (and patient)
TL;DR
Prepare
Automate
Update the OOB settings
Be excellent to each other
This presentation will self-destruct
Thanks!
Questions?

You might also like