253.You run the SQL Tuning Advisor (STA) to tune a SQL statement that is part of a fixed SQL plan
baseline. The STA generates a SQL profile for the SQL statement, which recommends that you accept the
profile.
Which statement is true when you accept the suggested SQL profile?
A. The tuned plan is not added to the SQL plan baseline.
B. The tuned plan is added to the fixed SQL plan baseline as a fixed plan.
C. The tuned plan is added to the fixed SQL plan baseline as a nonfixed plan.
D. The tuned plan is added to a new nonfixed SQL plan baseline as a nonfixed plan.
Answer: C
答案解析:
官方参考:http://docs.oracle.com/cd/E11882_01/server.112/e41573/optplanmgmt.htm#PFGRF95120
15.4 Using Fixed SQL Plan Baselines
A SQL plan baseline is fixed when it contains at least one enabled plan whose FIXED
attribute is set to YES
. You can use fixed SQL plan baselines to fix the set of possible plans (usually one plan) for a SQL statement, or migrate an existing stored outline by loading the "outlined" plan as a fixed plan.
If a fixed SQL plan baseline also contains non-fixed plans, then the optimizer gives preference to fixed plans over non-fixed ones. Thus, the optimizer picks the fixed plan with the least cost even though a non-fixed plan may have an even lower cost. If none of the fixed plans is reproducible, then the optimizer picks the best non-fixed plan.
The optimizer does not add new plans to a fixed SQL plan baseline. Because the optimizer does not automatically add new plans, the database does not evolve a fixed SQL plan baseline when you execute DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE
. However, you can evolve a fixed SQL plan baseline by manually loading new plans into it from the shared SQL area or a SQL tuning set.
When you tune a SQL statement with a fixed SQL plan baseline using SQL Tuning Advisor, a SQL profile recommendation has special meaning. When the SQL profile is accepted, the database adds the tuned plan to the fixed SQL plan baseline as a non-fixed plan. However, as described above, the optimizer does not use the tuned plan when a reproducible fixed plan is present. Therefore, the benefit of SQL tuning may not be realized. To enable the use of the tuned plan, manually alter the tuned plan to a fixed plan by setting its FIXED
attribute to YES
.