刷新共享池对sequence的影响[转]

最近碰到一个例子,数据库系统由于运行大量文本化的sql语句,导致共享池出现大量的碎片,数据库系统性能严重下降,在这种情况下调整这些sql语句,使用更多的绑定变量,共享sql语句及执行计划,对系统提高系统的性能有很大的帮助,当然此时也要把已经出现大量碎片的共享池flush一下。

Alter system flush shared_pool;

需要注意的是,没有放在keep的对象将被全部清理出共享池,此时由于共享池中可以直接使用的对象较少,所以sql语句以及plsql语句执行效率比较低下,但是不久之后系统的性能将直接提高。

尤其需要注意的是那些没有被keep起来的sequence,如果该sequence使用了cache,则这些缓冲将被直接刷新,可能导致sequence的跳跃。

以下是我的测试案例:

 

SQL> create sequence test_a;

序列已创建。

SQL> select test_a.nextval from dual;

   NEXTVAL                                                                      

----------                                                                     

         1                                                                     

SQL> alter system flush shared_pool;

系统已更改。

SQL> select test_a.nextval from dual;

   NEXTVAL                                                                     

----------                                                                     

        21                                                                     

SQL> exec dbms_shared_pool.keep('TEST_A','Q');

BEGIN dbms_shared_pool.keep('TEST_A','Q'); END;

      *

ERROR 位于第 1 行:

ORA-06550: 第 1 行, 第 7 列:

PLS-00201: 必须说明标识符 'DBMS_SHARED_POOL.KEEP'

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

SQL> @?"rdbms"admin"dbmspool

程序包已创建。

授权成功。

视图已建立。

程序包主体已创建。

SQL> exec dbms_shared_pool.keep('TEST_A','q');

PL/SQL 过程已成功完成。

SQL> select test_a.nextval from dual;

   NEXTVAL                                                                     

----------                                                                     

        22                                                                      

SQL> alter system flush shared_pool;

系统已更改。

SQL> select test_a.nextval from dual;

   NEXTVAL                                                                     

----------                                                                      

        23    

转载于:https://www.cnblogs.com/rootq/archive/2008/11/06/1328262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值