原 在Oracle中,如何清除Shared Pool中某条SQL语句?
Tags: Oracle原创Shared Pool清除游标
如果数据库版本为Oracle 10.2.0.4以前,那么只能清空整个Shared Pool,命令为:“ALTER SYSTEM FLUSH SHARED_POOL;
”。在生产库上,该句要慎用。
而从Oracle 10.2.0.4开始提供了一个包DBMS_SHARED_POOL,该包可以实现清除Shared Pool中某条SQL语句的功能。若该包没有安装,则可以通过$ORACLE_HOME/rdbms/admin/dbmspool.sql
进行安装。
使用这种方法可以精确的将一个SQL从共享池中删除,从而使得Oracle为这个SQL重新生成执行计划。这种方法只针对单个SQL语句,使得解决问题的同时不会造成任何的误伤。