sql共享池分为库缓冲区和字典缓冲区,对sql语句进行分析是在库缓冲区中,使库缓冲区够大能够保存更多的sql语句的执行计划从而使命中率增加,尽量避免了重复分析sql语句
但也不能盲目调整,这样会浪费内存,首先要看命中率的高低,可通过查询视图v$librarycach,其中pin表示高速缓存的命中率,reload 表示高速缓存的失败
select sun(pins)"pins",sum(reloads)"reloads",sun(reloads)/(sun(pins)+sun(reloads))*100"perecentage" from v$librarycache;
reloads的值应尽量接近于0,比率若高于1%,则表示成功率低,此时则要考虑增加共享池的大小来提高成功率.可通过增加init[sid].ora中的shared_pool_size的值,然后重启数据库
我想只要知道了原理,在delphi中实现不是难事可通过读取init[sid].ora,查找shared_pool_size,并修改但要注意数清楚字符然后通过delphi的Tquery控件向数据库发出shutdown immediate和startup命令即可