oracle笔记---SGA之高速缓存区

SGA(system global area)系统全局区域,在内存中分配一份共享内存区域为oracle的一些关联进程运行所共享。如DBWn,PMON。
SGA分为有以下几部分组成:
 1.高速缓存区
 2.重做日志缓存区
 3.共享池
 4.大池
 5.java池
 6.流池
 7.固定SGA

高速缓存区
高速缓存区的主要作用于缓存从数据文件中读取的数据块。当用户请求数据时,oracle会从高速缓存区中检索,如果检索到了对应的数据块即缓存命中,oracle便会直接从缓存区中读取数据。如果没有命中,oracle的读进程会从数据文件中读取对应的数据块,将对应的数据块加入到缓存区中。oracle中缓存区中对应块存在未使用,干净和脏块这三种状态。未使用是指对应的区域没有缓存任何数据,干净状态是指区域中缓存中数据和数据文件中的数据一致状态,脏状态指定是缓存区缓存的数据已被修改和数据文件中的数据不一致。oracle从数据文件中读取的数据块置换的是处于干净状态和未使用状态的缓存中区域。
oracle会在特定是时间点会将高速缓存区中的脏数据和冷端中数据同步到数据文件中。oracle利用的是LRU(最近最少)原则来区分是该数据块处于冷端还是热端中。触发DBWn同步数据文件的条件:
1.缓存区中处于干净状态或者未使用状态中的区域低于某一个阈值的时候。
2.需要推进一个检查点。如做切换日志以及ALTER SYSTEM CHECKPOINT命令
3.数据表空间处于readonly,offline
在缓存区中oracle利用LRU的原则来辨别数据块处于冷端还是热端。使用访问触摸器来记录这个区域数据的访问次数,来区别这个数据是出于冷端还是热端。缓存区中的值的数据块可以处于订住状态,以便用户的再次访问。订住状态的实现也是通过访问触发器来实现的,正常情况下每隔3秒会触发一次访问记录器。
        缓存池:
高速缓存区中可以存在多种类型的缓存池,默认情况下只有一个缓存池,对应的为配置参数文件中对应的默认的数据块的大小为db_block_size参数设置。如果在创建表空间时设置的块的大小有别于db_block_size设置的参数时,这时候就需要在参数文件中设置对应的缓存池。由参数DB_nk_CACHE_SIZE配置,n对应的是就是对应的块的大小单位是kb。除了以上几种缓存池外还存在有keep池和循环池。
keep池用长期保持缓存区中的数据使其不会被换出
循环池缓存不被频繁使用的数据块

时间: 2024-10-13 08:45:22

oracle笔记---SGA之高速缓存区的相关文章

oracle笔记--SGA总结(二)

重做日志缓存区 用户每一次对数据的修改均会在重做日志缓存区生成一条相关记录.重做日志缓存区是一个循环缓存区,依次记录用户修改操作的重做条目.LGWR将redolog buffer缓存区中的重做条目缓存到数据库中的redolog file中.redolog文件对于维护数据库的数据的完整性十分重要,在数据库实例每次启动时都会去检查是否需要通过redolog文件中记录的数据,对数据文件进行恢复和回滚操作.由于redolog文件中数据的分布式顺序不想数据文件中的数据分布是离散的,所以LGWR数据的同步速

oracle笔记--DML语句优化

当oracle的DML操作性能受到影响可以从以下因素方面来考虑改善新能. 1)where子句的效率 where子句是否的条件关联是否利用到了索引,统计信息的维护例直方图等来帮助提升效率的手段 2)索引带来的成本 索引虽然为查询提升了效率但是对于增删改操作确定带来了成本.向表中插入一条数据时会在索引空间中生成一条记录,oracle的索引时以b树的方式来维护的.当插入的数据量过多是需要对节点进行调整来恢复索引树的高度 3)触发器的成本 4)完成性约束的成本 当触发大批量的操作的时候触发器和完整性的约

调优5(SGA其他缓存区调整)

第五章 SGA其他缓存区调整 一.redo log buffer 1.redo log 的功能1)Sever 进程在buffer cache修改数据块后,Oracle提倡'先记后写',对修改的数据块的改变生成log entries(日志条目),将日志条目按顺序写入log buffer:而对于脏块 先链接到检查点队列,等待dbwr 进程写入到datafile2) 进程会及时的将其按顺序写入到redo log files.(日志条目的数据块大小一般和操作系统数据块大小一致,在Unix 和linux

转:oracle笔记

oracle笔记1 卸载oracle developer server的方法: 1-1 oracle卸载工具中卸载对应的oracleds项目:在注册表中搜索ORACLEDS HOME对应的别名,删除对应的项:重新启动计算机:删除对应的ORACLEDS的安装目录: 2jinitiator的相关问题: 2-1 jinitiator是oracle自己的applet viewer工具: 2-2 在第一次打开web应用程序时会自动提示安装该程序,如果不安装则无法打开程序: 2-3 jinitiator是在

Oracle 笔记:PLSQL无法连接64位Oracle 解决方法

Plsql打开后提示错误,登录界面无连接目标选择. 原因:PLSQL本身好像就不支持64位的Oracle. 解决方法: 到Oracle 官网下载32位的 Oracle 客户端,地址为 http://www.oracle.com/technetwork/topics/winsoft-085727.html 解压下载的32位客户端即可. PLSQL登录界面暂时取消登录,先进入PLSQL界面,点击首选项,设置OCI库为刚才下载的32位客户端的OCI路径,路径中一定要包含 oci.dll . 添加环境变

Oracle笔记 目录索引

Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Oracle笔记 五.创建表.约束.视图.索引.序列.同义词.表空间 Oracle笔记 六.PL/SQL简单语句块.变量定义 Oracle笔记 七.PL/SQL 异常处理 Oracle笔记 八.PL/SQL跳转/判断/循环语句块 Oracle笔记 九.PL/SQL 游标的使用 Oracle笔记 十.PL

Oracle笔记之权限管理

权限管理 1,默认的三个用户 2,创建用户 3,授权,撤销权限 4,系统权限与对象权限 5,角色 6,通过角色对权限进行管理 7,权限的传递,丢失管理员密码怎么办 3个默认的用户 用户名        密码 sys            change_on_install system      manager scott          tiger cmd 进入命令行 sqlplus / as sysdba; 或者 sqlplus sys/change_on_install as sysdb

oracle 笔记

向表里添加数据: INSERT INTO BOOK(bookid,name,price)  VALUES('100123','oracle sql',54.70); INSERT INTO BOOK                               VALUES('100123','oracle sql',54.70); INSERT INTO BOOK(bookid)                   VALUES('100123'); 现在有一个空表a和一个有数据的表格b,他们的

Oracle笔记之对象权限与系统权限总结

对象权限与系统权限 创建表和创建session是系统权限: 系统管理员是有权限去訪问其它表的 以sys登录 sqlplus sys/on_change_install as sysdba; 创建用户wangwu create user wangwu identified by wangwu; 系统权限 grant create session to wangwu; grant create table to wangwu; grant unlimited tablespace to wangwu