下面3条语句,旨在刷新oracle的缓存。这里总结一下。

1)alter system flush global context

下图说明:

对于多层架构的,如上图:应用服务器和数据块服务器通过连接池进行通信,对于连接池的这些信息被保留在SGA中,这条语句便是把这些连接信息清空。

2)alter system flush shared_pool

将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷新共享池可以帮助合并碎片(small chunks),释放少数共享池资源,暂时解决shared_pool中的碎片问题。但是,这种做法通常是不被推荐的。原因如下:

·Flush Shared Pool会导致当前未使用的cursor被清除出共享池,如果这些SQL随后需要执行,那么数据库将经历大量的硬解析,系统将会经历严重的CPU争用,数据库将会产生激烈的Latch竞争。
                ·如果应用没有使用绑定变量,大量类似SQL不停执行,那么Flush Shared Pool可能只能带来短暂的改善,数据库很快就会回到原来的状态。
                ·如果Shared Pool很大,并且系统非常繁忙,刷新Shared Pool可能会导致系统挂起,对于类似系统尽量在系统空闲时进行。

下面测试一下,刷新对共享池碎片的影响:

[sql] view plaincopyprint?
  1. SQL> select count(*) from x$ksmsp;
  2. COUNT(*)
  3. ----------
  4. 41637
  5. SQL> alter system flush shared_pool;
  6. 系统已更改。
  7. SQL> select count(*) from x$ksmsp;
  8. COUNT(*)
  9. ----------
  10. 9276

3)alter system flush buffer_cache

为了最小化cache对测试实验的影响,需要手动刷新buffer cache,以促使oracle重新执行物理访问(统计信息里面的:physical reads)。

测试环境

[sql] view plaincopyprint?
  1. SQL> select count(*) from tt;
  2. COUNT(*)
  3. ----------
  4. 1614112
  5. SQL> show user;
  6. USER 为 "HR"
  7. SQL> exec dbms_stats.gather_table_stats('HR','TT');
  8. PL/SQL 过程已成功完成。
  9. SQL> select blocks,empty_blocks from dba_tables where table_name='TT' and owner='HR';
  10. BLOCKS EMPTY_BLOCKS
  11. ---------- ------------
  12. 22357            0
  13. 表TT共有22357个block

借助x$bh,观察state=0的情况

[sql] view plaincopyprint?
  1. SQL> select count(*) from x$bh where state=0;
  2. COUNT(*)
  3. ----------
  4. 0
  5. SQL> alter system flush buffer_cache;
  6. 系统已更改。
  7. SQL> select count(*) from x$bh where state=0;
  8. COUNT(*)
  9. ----------
  10. 40440

state=0表示buffer状态是free,flush cache后,所有的buffer都被标志为free

观察flush cache后,对查询的影响:

[sql] view plaincopyprint?
  1. SQL> set autot on statistics
  2. SQL> select count(*) from tt;
  3. COUNT(*)
  4. ----------
  5. 1614112
  6. 统计信息
  7. ----------------------------------------------------------
  8. 0  recursive calls
  9. 0  db block gets
  10. 22288  consistent gets
  11. 22277  physical reads
  12. 0  redo size
  13. 416  bytes sent via SQL*Net to client
  14. 385  bytes received via SQL*Net from client
  15. 2  SQL*Net roundtrips to/from client
  16. 0  sorts (memory)
  17. 0  sorts (disk)
  18. 1  rows processed
  19. SQL> /
  20. COUNT(*)
  21. ----------
  22. 1614112
  23. 统计信息
  24. ----------------------------------------------------------
  25. 0  recursive calls
  26. 0  db block gets
  27. 22288  consistent gets
  28. 0  physical reads
  29. 0  redo size
  30. 416  bytes sent via SQL*Net to client
  31. 385  bytes received via SQL*Net from client
  32. 2  SQL*Net roundtrips to/from client
  33. 0  sorts (memory)
  34. 0  sorts (disk)
  35. 1  rows processed
  36. SQL> alter system flush buffer_cache;
  37. 系统已更改。
  38. SQL> select count(*) from tt;
  39. COUNT(*)
  40. ----------
  41. 1614112
  42. 统计信息
  43. ----------------------------------------------------------
  44. 0  recursive calls
  45. 0  db block gets
  46. 22288  consistent gets
  47. 22277  physical reads
  48. 0  redo size
  49. 416  bytes sent via SQL*Net to client
  50. 385  bytes received via SQL*Net from client
  51. 2  SQL*Net roundtrips to/from client
  52. 0  sorts (memory)
  53. 0  sorts (disk)
  54. 1  rows processed

alter system flush oracle的缓存相关推荐

  1. oracle flush,alter system flush oracle的缓存

    下面3条语句,旨在刷新oracle的缓存.这里总结一下. 1)alter system flush global context 下图说明: 对于多层架构的,如上图:应用服务器和数据块服务器通过连接池 ...

  2. alter system flush shared_pool的作用 .

    alter system flush shared_pool的作用 The FLUSH SHARED POOL clause lets you clear all data from the shar ...

  3. oracle event   设置 alter system set events

    https://www.cnblogs.com/ss-33/p/10109383.html 格式:alter system|session set events '[eventnumber|immed ...

  4. oracle 10g alter system reset,《深入浅出Oracle》勘误表

    <深入浅出Oracle>勘误表 非常感谢很多朋友不断指出<深入浅出Oracle>一书中的错误之处,我把一些勘误整理在这里,给读者朋友们参考(以下勘误按照发现先后列出,并为按照页 ...

  5. oracle alter system set,alter system set control_files=..............

    改control_files这个参数的时候,需要注意格式,稍有不慎就会改错. 正确格式如下: SQL>alter system set control_files='E:\app\oracle\ ...

  6. [译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句

    原文地址:https://oracle-base.com/articles/18c/alter-system-cancel-sql-18c 原文作者:Tim Hall Oracle Database ...

  7. oracle 调整缓存大小,Oracle调整缓冲区高速缓存

    一.我们可以通过配置Shared Pool(保证用户在内存中查找到已经缓存的语句)改进性能:还有一个重要的方法就是:使用户可以在内存找到他们所请求的数据! 这就需要通过Database Buffer ...

  8. alter system|session set events转储

    格式: alter system|session set events '[eventnumber|immediate] trace name eventname [forever] [, level ...

  9. 使用ALTER SYSTEM运行OS命令

    这里举出一个攻击代码例子,你也许会觉得惊奇,抑或认为这是一个运行命令的好办法,是的它很"有用". 在Oracle 9i中允许采用Oracle本地编译PL/SQL应用程序的方式进行操 ...

最新文章

  1. 2022-2028年中国塑料制品行业投资分析及前景预测报告(全卷)
  2. chrome 获取硬件信息_在tinycolinux上安装chrome
  3. Delphi Qjson
  4. Cpp / __builtin_expect 说明
  5. 三招助你轻松搞定超Diao氛围
  6. JDK源码学习笔记——TreeMap及红黑树
  7. Tensorflow快餐教程(6) - 矩阵分解
  8. 售票系统的组件图和部署图_门禁安装大样图、管线图、系统图、电锁安装图
  9. mysql监控---慢语句查询
  10. c语言答辩ppt案例,c语言ppt例子课题答辩ppt成品中南民族大学.ppt
  11. window10官方工具在线升级失败,终极解决方案
  12. IT系统为什么复杂,肿么办
  13. 查看mysql是否区分大小写
  14. 千锋教育+计算机四级网络-计算机网络学习-03
  15. mysql中字符串转时间戳_MySQL日期 字符串 时间戳互转
  16. 企业获客的五种方式解读
  17. Python库下载安装教程
  18. 技术博客|第4期:个性化视频搜索引擎简介
  19. 艺术学毕业论文题目【最新】
  20. 第三方支付系统--用户开户、信息认证以及信息修改流程

热门文章

  1. php接入influxdb,[Linux]安装grafana并且添加influxdb监控
  2. PPO-强化学习算法
  3. Spring的异步方法
  4. docker ppt
  5. mysql 查询优化
  6. 【CentOS】安装部署jenkins从git获取代码[转]
  7. border-边框的形状
  8. AC日记——字符替换 openjudge 1.7 08
  9. iptables复习记忆
  10. android doze模式源码分析,Android Doze模式启用和恢复详解