dm sql 緩存區
SQL緩沖區提供在執行SQL語句過程中所需要的內存,包括計劃、SQL語句和結果集緩存。很多應用當中都存在反復執行相同SQL語句的情況,此時可以使用緩沖區保存這些語句和它們的執行計劃,這就是計劃重用。
查看現有設置
SQL> select SF_GET_PARA_VALUE(2,'CACHE_POOL_SIZE');
行號 SF_GET_PARA_VALUE(2,'CACHE_POOL_SIZE')
---------- --------------------------------------
1 100
--修改配置
SQL> sp_set_para_value(2,'CACHE_POOL_SIZE',200);
DMSQL 過程已成功完成
已用時間: 10.752(毫秒). 執行號:47434803.
SQL> select SF_GET_PARA_VALUE(2,'CACHE_POOL_SIZE');
行號 SF_GET_PARA_VALUE(2,'CACHE_POOL_SIZE')
---------- --------------------------------------
1 100
已用時間: 0.308(毫秒). 執行號:47434804.
SQL> select SF_GET_PARA_VALUE(1,'CACHE_POOL_SIZE');
行號 SF_GET_PARA_VALUE(1,'CACHE_POOL_SIZE')
---------- --------------------------------------
1 200
CACHE_POOL_SIZE默認值20M,一般在內存小于16G的情況下,建議設置為200M,內存大于16G,小于64G,建議設置為1024M,當內存大于64G時,建議設置為2048M。
通過 PLNDUMP 來看對應緩存中的 SQL 執行計劃
查找出活動會話中執行時間大于 1S 的 SQL
select * from (
select timestampdiff(second,s.last_recv_time,sysdate) t ,s.*
from v$sessions s where state='ACTIVE')
where t > 1
找到對應慢 SQL 對應的 cache_item 值。
select * from v$cachepln where upper(sqlstr) like '%SQL%'
在 trace 目錄中生成對應 trc 文件
alter session set events 'immediate trace name plndump ,level cache_item'
對比管理工具的執行計劃和 .trc 文件中的執行計劃。
清理內存中執行計劃緩存。
call sp_clear_plan_cache();
call sp_clear_plan_cache(pln號);---不加 pln 就是清理所有 sql 緩存。
| USE_PLN_POOL | 1 | 靜態 | 是否重用執行計劃。0:禁止執行計劃的重用;1:啟用執行計劃的重用功能 ;2:對不包含顯式參數的語句進行常量參數化優化; |

浙公網安備 33010602011771號