2013-10-04 1 views
0

sqlplus의 특정 sql_id에 대해 해당 최적화 프로그램에 대한 모든 계획의 목록이 현재 SQL 계획 내역 (승인 된 계획과 수락되지 않은 계획)에 있음을 어떻게 확인할 수 있습니까?sql_ID에 대한 sql 계획 기본 정보

답변

0

계획이 계획 기준선에있는 경우에만 허용됩니다. 명세서의 계획 내역에는 승인 된 계획과 수락되지 않은 계획 모두가 들어 있습니다. 옵티마이 저가 계획 기준선에서 첫 번째로 수락 된 계획을 생성 한 후 이후의 모든 수락되지 않은 계획은 검증을 기다리는 계획 내역에 추가되지만 SQL 계획 기준선에는 포함되지 않습니다.

Oracle Database 12c부터 SMB는 SQL 문장의 계획 내역에 추가 된 새로운 계획의 계획 행을 저장합니다. DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE 기능은 SMB의 계획을 가져 와서 표시합니다. Oracle Database 12c 이전에 작성된 계획의 경우, 함수는 SMB가 행을 저장하지 않기 때문에 SQL 문을 컴파일하고 계획을 생성해야합니다.

는 계획을 표시하려면

SELECT PLAN_TABLE_OUTPUT 
FROM V$SQL s, DBA_SQL_PLAN_BASELINES b, 
     TABLE(
     DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(b.sql_handle,b.plan_name,'basic') 
     ) t 
WHERE s.EXACT_MATCHING_SIGNATURE=b.SIGNATURE 
AND b.PLAN_NAME=s.SQL_PLAN_BASELINE 
AND s.SQL_ID='31d96zzzpcys9';