Which three features work together, to allow a SQL statement to have different cursors for the
same statement based on different selectivity ranges?
A.
Bind Variable Peeking
B.
SQL Plan Baselines
C.
Adaptive Cursor Sharing
D.
Bind variable used in a SQL statement
E.
Literals in a SQL statement
Explanation:
* In bind variable peeking (also known as bind peeking), the optimizer looks at the
value in a bind variable when the database performs a hard parse of a statement.
When a query uses literals, the optimizer can use the literal values to find the best plan. However,
when a query uses bind variables, the optimizer must select the best plan without the presence of
literals in the SQL text. This task can be extremely difficult. By peeking at bind values the optimizer
can determine the selectivity of a WHERE clause condition as if literals had been used, thereby
improving the plan.
C: Oracle 11g/12g uses Adaptive Cursor Sharing to solve this problem by allowing the server to
compare the effectiveness of execution plans between executions with different bind variable
values. If it notices suboptimal plans, it allows certain bind variable values, or ranges of values, to
use alternate execution plans for the same statement. This functionality requires no additional
configuration.
ACE
A C E
ACS allows there to be different plans for the same cursor with bind variables, but limits this based upon the selectivity of those bind variables rather than having a different plan for every bind (as you would with literals).
what about B
SQL Plan Baselines are designed to work with Adaptive Cursor Sharing. Any valid enabled SQL Plan Baselines Plans can be used by Adaptive Cursor Sharing. This means if you have more than one enabled baseline for a given SQL statement ACS can use one or more of those baselines at the same time
ACE