通常情况下,将SQL的执行计划从SGA中清除有一下三种方法:
1.清空共享池
这种方法风险比较大,因为这样的话会将整个共享池都清空了.
alter system flush shared_pool;
2.在对表进行DDL(授权)
任何对表做了DDL,相应的执行计划马上失效,最简单有效的办法就是对表进行授权.
3.使用DBMS_SHARED_POOL.PURGE清空具体某个SQL_ID,这个功能是在10g以上的版本才有的.
SQL> select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';
ADDRESS HASH_VALUE
--------------------------------------------------------------------------
000000085FD77CF0 808321886
SQL> exec DBMS_SHARED_POOL.PURGE ('000000085FD77CF0, 808321886', 'C');
PL/SQL procedure successfully completed.
SQL> select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';
no rows selected
--The End--
阅读(3830) | 评论(0) | 转发(0) |