Rule #1: Do not set OPTIMIZER_INDEX_CACHING & OPTIMIZER_INDEX_COST_ADJ
Rule #2: If Rule #1 does not apply - Do not set OPTIMIZER_INDEX_CACHING &
Rule #3: Analyze the root cause why the indexes are not used
Rule #1 & #2 are the most important ones here. There are only a few cases when
to set these parameters like suggestions from 3rd party software
vendors (e.g. SAP or E-Business).
There are so many reasons (e.g. clustering factor, predicates, correlation,
etc.) why an index may not be used - so guessing would be not very
productive here. Get the query and a CBO trace and check the reason.
Independent Oracle performance consultant and researcher
Upcoming online seminar: http://tinyurl.com/17-06-13-Shared-Pool-Internals
Ram Raman <veeeraman@xxxxxxxxx> hat am 29. April 2017 um 21:23 geschrieben:
We have a 12c db that runs an ERP app. We face slowness with some processes
- Upon analysis we created some indexes and re ran the processes. A few
of the processes would not complete - the optimizer would not use the index.
We adjusted the OIC/OICA (idxCachg/idxCostAdj) - with new values
several of the reports completed. However some other processes do not
complete even after an hour. But they complete ok with the older values of
oic/oica. Many of the SQLs are generated dynamically, so using hints is not
It looks like we can work with adjusting the values of oic/oica for
different processes. However many of these users could run the processes at
same time. My limited research shows that oic/oica have an effect on the
access paths and eventually the cost of the query; read wolfgang's paper on
the subject. I am sure I am not the only person who faced this problem. Any
ideas on how to approach the issue? Thanks a lot.