oracle 体系结构及内存管理 06_内存管理

1、oracle总体体系结构
一、oracle总体分为数据库软件(oracle_home)和数据库文件(oradata)两部分。
    ctl:记录数据库物理结构,当前运行的状态信息;
    dbf:数据文件,记录数据库对象;
    log:记录数据文件中每一个数据块的变化过程;
二、数据库实例包括(内存空间和数据库进程),经过实例链接访问数据库
    内存包括:
    SGA:shared pool:缓存sql语句及sql语句的执行计划
         buffer cache:缓存从dbf读取的数据块
         redo log buffer:存储server process修改数据块产生的日志
         java pool:用于JVM等Java选件
         lage pool:用于共享服务器模式(MTS)、 并行计算或RMAN的备份恢复等操做。
         stream pool:为Oracle的Streams功能所使用
    PGA: Server Process的私有内存空间
    进程包括:
    后台进程:smon:系统监控进程,维护数据库实例如内存碎片整理
              pmon:用户进程维护,清理死掉的进程回收进程空间
              dbwr:将buffer cache中的脏块写入dbf
              lgwr:将redo log buffer中的日志写入redo log
              ckpt:周期性运行,缩短checkpoint queue队列,更新控制文件和数据文件头部检查点信息
              arch:负责将写满的日志组转存归档              
    前台进程:server process:负责接收sql语句,带着sql语句在SGA中执行,读入dbf块到buffer cache,将修改日志写入
              redo log buffer,将数据库处理结果返回给客户端。
    相关查询命令:          
        ipcs #输出系统共享内存,信息队列,遮断器信息
        ps -ef | grep ora #查看含有ora字符的进程信息
        iostat  #输出CPU使用分配和磁盘IO状况
        vmstat  #输出进程,内存,IO,CPU状态信息
三、一条sql语句执行过程
    客户端发起一条sql语句,数据库实例启动一个server process接收sql语句,接收后带着sql语句先到shared pool中寻找对应sql语句
及执行计划,找到则执行,未找到对sql语句进行解析(语法,访问对象是否存在,是否具备权限,筛选最优的执行计划);肯定sql语句的
执行计划后到buffer cache中找sql语句访问的数据,若是buffer cache中存在直接调用处理,不存在,server process去dbf中找数据并读
入buffer cache,对buffer cache的块进行处理,处理日志写入redo log buffer,lgwr负责将redo log buffer中的日志写入redo log中。
处理完后server process将处理结果返给客户端;dbwr进程负责将buffer cache中的脏块写入dbf。
四、oracle数据的链接机制
    客户端链接应用服务,应用服务启动的时候会创建应用与数据库的许多链接(链接池),数据库实例对每个链接启动server process
进程,客户端选一个链接将sql语句传给数据库,数据库的server process就接收sql语句,带着sql语句执行。java

五、oracle10g自动共享内存管理(Automatic Shared Memory Management)
    Oracle10g自动共享内存管理(ASMM),使用新参数SGA_TARGET 指出SGA内存分配总大小便可,不须要定义SHAR_POOL_SIZE DB_CACHE_SIZE
等参数,数据库服务器会自动根据须要动态分配。 注意若是没有sga_target,则自动共享内存管理功能被禁止,仍然能够设置每一个参数。在设
置了SGA_TARGET 后,其余参数默认设置为0。也能够手动设置各个组件的最小值。
   手动内存管理转到自动内存管理,根据系统状况计算出SGA_TARGET和SGA_MAX_SIZE的值,要增长参数SGA_TARGET和SGA_MAX_SIZE的大
小设置,去掉参数文件中各个组件的大小定义。初始化参数statistics_level必须设置为typical或all才能启动ASMM,不然若是设置为
basic,则关闭ASMM。日志缓冲区,log buffer,keep buffer cache不受自动内存调整的影响,仍须要手动设置。oracle按期捕获系统状
态,将内存分给须要的对象,经过spfile,启动时恢复上次关闭时的分配状况。适合使用与系统资源比较充足的环境下在资源紧缺系统
会出现SGA抖动,可配合手动设置各池最小值,
查询SGA抖动状况:
select component,oper_type, oper_mode, start_time, end_time, trunc(target_size/1024/1024) target 
from v$sga_resize_ops;linux

参考资料:
http://www.linuxidc.com/Linux/2011-08/40041.htmios

相关文章
相关标签/搜索