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.
I would suggest ACD. It seems like literals in SQL statements are a frequent cause of performance, scalability, and security problems.
– https://docs.oracle.com/database/121/TGSQL/tgsql_cursor.htm#TGSQL849