Oracle 硬解析查詢


-- 硬解析的  parse count (hard)
select * from v$sysstat where name like '%parse%';  

select a.value,b.name from v$mystat a, v$statname b 
where a.STATISTIC#=b.STATISTIC# and b.name like '%parse%';

select * from v$sqlarea;
  
select sql_id,sql_text,executions,last_load_time from v$sqlarea   -->首次查詢后在v$sqlarea保存父游標且執行次數EXECUTIONS為1        
where sql_text like '%DDDDDD%'
and last_load_time > trunc(sysdate-1/24) order by last_load_time desc;


編碼硬解析的改進方法
    1.更改參數cursor_sharing
        參數cursor_sharing決定了何種類型的SQL能夠使用相同的SQL area
        CURSOR_SHARING = { SIMILAR | EXACT | FORCE }   
            EXACT      --只有當發布的SQL語句與緩存中的語句完全相同時才用已有的執行計划。
            FORCE      --如果SQL語句是字面量,則迫使Optimizer始終使用已有的執行計划,無論已有的執行計划是不是最佳的。
            SIMILAR    --如果SQL語句是字面量,則只有當已有的執行計划是最佳時才使用它,如果已有執行計划不是最佳則重新對這個SQL
                       --語句進行分析來制定最佳執行計划。
        可以基於不同的級別來設定該參數,如ALTER SESSION, ALTER SYSTEM

 alter system set CURSOR_SHARING=EXACT scope=both; 
 
alter system flush shared_pool; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM