深入浅出Oracle学习笔记:Buffer Cache 和Shared pool
Buffer cache 和 share pool 是sga中最重要最复杂的部分。
一.Buffer Cache
通常数据的读取、修改都是通过buffer cache 来完成的。buffer cache 中的数据 ,oracle是通过LRU 和dirty list 这样的链表来管理的。
除了这2个,还有 hash bucket 和 cache buffer chain
hash bucket:查找方法类似老式图书馆查书
二.Shared Pool
1.shared pool 是oracle sga中重要的一部分,它主要作用是 sql共享、减少代码硬解析等
shared_pool_size设置:oracle9以后,设置成200-300M是比较合适的
2.ora-04031问题
当尝试在共享内存分配大的连续内存失败后,oracle会清空没用的对象,尝试合并内存;如果仍然没有足够大的内存空间,就提供ora-04031.
如果shared_pool_size 设置的够大,也不存在系统bug;那么大部分引起该问题的原因:共享池中大量的sql引起过多的内存碎片导致
1)sql没有足够的共享空间
2)大量不必要的解析
3)sql没有使用绑定变量
另外,虽然可以通过强制刷新系统共享内存以达到共享内存碎片合并目的,但该操作是不推荐的。
alter system flush shared_pool。
实际上,share pool的调整根本是从应用入手,应用代码的编写、调整才是根本。
3.Version_count 过高的现象:
应用系统一段时间运行缓慢,一时正常。查看了$session_wait 发现 latch free 比较多。
通过 v$latch 表查看到 shared pool 和 liberary cache 比较大。
通过v$sqlarea 查看到 version_count>1000 的有几个。
问题解决:1)调整timed_statistics=true 为false
-----该参数是系统对 比如sql解析、执行、等待等等分别消耗了多少时间进行统计
2)调整cursor_sharing=similar 为 force--强制匹配 或者 exact--精确匹配(缺省值)
-----该参数是sql强制变量绑定
另外:说明一下cursor_sharing
根据oracle官方建议在11g中不推荐使用cursor_sharing=SIMILAR,其实在所有版本中都不推荐,设置为该值很容易导致高版本问题.
而且该值会出现莫名其妙的,无法解释的高版本问题.而且根据oracle相关文档,在即将发布的12c版本中,将除掉SIMILAR值.
对于客户库的该问题,因为很多sql未绑定参数,为了减少硬解析,建议在业务低谷时设置cursor_sharing=FORCE,并刷新shared pool.
深入浅出Oracle学习笔记:Buffer Cache 和Shared pool的更多相关文章
- BUFFER CACHE和SHARED POOL原理
http://blog.csdn.net/wanghai__/article/details/4881492 Buffer Cache LRU与Dirty List 在Buffer Cache中,Or ...
- 深入浅出Oracle学习笔记:Undo
undo的作用是:解决oracle多用户读写一致性,以及操作可撤销或者回滚. 1.undo表空间是从10g开始进行自动管理的,几个参数如下: undo_management:回滚段手动管理还是自动管理 ...
- ORACLE性能优化- Buffer cache 的调整与优化
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
随机推荐
- POJ 3104 Drying [二分 有坑点 好题]
传送门 表示又是神题一道 Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9327 Accepted: 23 ...
- Linux下重启就需要重新激活eth0的解决办法(ifup eth0)
新安装linux系统,网卡不能自动激活去获取ip,每次都需要手工执行以下命令 ifup eth0 后续通过将ONBOOT=yes这句就能开机启动自动激活,就可以解决问题 vim /etc/syscon ...
- Mysql 使用存储过程添加新字段
-- 1, 注意SQL 语句开始处不要空格 -- 2, 在使用 [--] 进行注释时,后面请加空格 USE `test`; -- lastUpdateTime drop procedure if ex ...
- 【转】3年PHPer的面试总结
[转]3年PHPer的面试总结 算法# 1.反转函数的实现# /** * 反转数组 * @param array $arr * @return array */ function reverse($a ...
- raspi集成库及安装
原文:http://blog.csdn.net/xukai871105/article/details/12684617 树莓派来自国外,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层 ...
- Info.plist 的字段解释
bundle字段 这些字段名都是XML中的名称,在xcode的属性编辑器中,名字并不相同 bundle目录中的属性列表详细描述了有关该bundle的信息.Finder和一些系统API在一些情况下会使用 ...
- Answer's Question about pointer
When you create a new pointer, this will be in heap until you delete it. So what you said is sort o ...
- react 创建组件 (三)PureComponet
我们知道,当组件的props或者state发生变化的时候:React会对组件当前的Props和State分别与nextProps和nextState进行比较,当发现变化时,就会对当前组件以及子组件进行 ...
- 手动编译一个c文件(Win7下如何使用GCC编译器)
主要参考这篇http://jingyan.baidu.com/article/c275f6bacc0126e33c756771.html 我没找到minGW的下载地址,而是直接用codeblocks自 ...
- Testng 运行报错:"Total tests run: 0, Failures: 0, Skips: 0"以及找不到class文件的问题
"Total tests run: 0, Failures: 0, Skips: 0" This means that there were no tests executed a ...