最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

Oracle内存、 进程、应用体系

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-13 17:47:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
共享池(shared pool)(为 SQL 及 PL/SQL 的执行分配内存),Java 池(java pool)(为 Java 对象及Java 程序的执行分配内存),及数据缓存区(buffer cache)(用于缓存磁盘上的数据块)等。所有 SGA 组件都是以预设的粒度(granule)为单位进行内存的分配与回收的。Oracle 数据库通过记录每个 SGA 组件使用的粒度单位的数量来掌握整个 SGA 的内存使用情况。
SGA_TARGET 参数极大地简化了 DBA 的工作。管理员只需设定可供实例 SGA 使用的总内存量,而无需考虑内存如何在 SGA 各组件间分配。除非整个系统内存不足,管理员不必再担心内存不足问题。
在 SGA 自动管理模式下,无需向系统中添加额外的资源,也无需增加手工维护的工作量,就能提高系统的负载能力。在 SGA 手工管理模式下,一个已编译的 SQL 语句可能会因为共享池空间不足而被频繁的移出共享池,导致系统性能降低。而使用了 SGA 自动管理后,Oracle 内部的调优算法将监控系统的负载情况,如果发现增大共享池有利于减少重复的 SQL 解析(parse)操作,就会对相关的 SGA 组件进行调整,为共享池分配更多的内存。
数据缓存区的管理方式
数据缓存区(database buffer cache)中的缓冲区(buffer)通过两个列表管理:待写列表(write list)和最近最少使用列表(least recently used(LRU)list)。待写列表中记录的是脏缓冲区(dirty buffer),即其中数据已被修改且尚未写入磁盘的缓冲区。最近最少使用列表中记录的是可用缓冲区(free buffer),锁定缓冲区(pinned buffer),及还没被移入待写列表的脏缓冲区。可用缓冲区内的数据无需继续保留,可以用于存储新数据。而锁定缓冲区是正在被访问的缓冲区。
当 Oracle 的用户进程(user process)首次查询某块数据时,她将首先在数据缓存区内进行搜索。如果用户进程在数据缓存区内找到了所需的数据(称为缓存命中(cache hit)),就可以直接从内存中访问数据。如果用户进程不能在数据缓存区中找到所需的数据(称为缓存失效(cache miss)),则需要从磁盘中的数据文件里将相应的数据块复制到缓存中才能进行访问。缓存命中时的数据访问速度远远大于缓存失效时的速度。
①   用户进程将数据块读入数据缓存区之前首先要准备好可用缓冲区。用户进程从 LRU 列表的 LRU 端开始对其进行搜索。这个搜索过程将一直持续,直到找到可用缓冲区或达到缓存搜索操作的预设限定值为止。
②   当用户进程在对 LRU 列表的搜索过程中遇到脏缓冲区时,她会先将此类缓冲区移入待写列表,之后再继续搜索。当用户进程找到了可用缓冲区时,就会将数据块从磁盘写入缓冲区,并将此缓冲区移到 LRU列表的 MRU 端。
③   如果 Oracle 用户进程对 LRU 列表的搜索操作达到了预设的限定值而仍旧没有找到可用缓冲区,那么进程将停止搜索并通知 DBW0 后台进程将部分脏缓冲区写入磁盘
重做日志缓冲区
       重做日志缓冲区(redo log buffer)是 SGA 内一块被循环使用的缓冲区,用于记录数据库内的数据变化信息。这些信息以重做条目(redo entry)的形式进行存储。Oracle 利用重做条目内的信息就可以重做由INSERT,UPDATE,DELETE,CREATE,ALTER,及 DROP 等操作对数据库进行的修改。重做条目可以被用于进行数据库恢复(database recovery)。
         初始化参数 LOG_BUFFER 用于设定重做日志缓冲区的大小(以字节为单位)。一般来说,此参数值越大则重做日志文件的 I/O 性能越高,在事务执行时间将长或事务数量较大的系统中尤为明显。此参数的默认值为 512KB 或 128KB 与 CPU_COUNT 参数乘积这两者间的较大值。
初始化参数 SHARED_POOL_SIZE 用于设定共享池的容量。此参数的默认值在 32 位系统上为 8MB,在 64 位系统上为 64MB。增大此参数值将增大 SGA 内为共享池预留的内存数量。
程序全局区概述
程序全局区(program global area,PGA)是供服务进程(server process)存储数据及控制信息的内存区域。这是一种在服务进程启动时由 Oracle 创建的非共享的内存区。只有服务进程才能访问属于她的 PGA,而对 PGA 的读写操作是由 Oracle 代码实现的。一个 Oracle 实例中为所有服务进程分配的全部 PGA 内存也被称为此实例的合计 PGA(aggregated PGA)
PGA的内容:①私有 SQL 区②游标及 SQL 区③会话内存
专用服务模式下的 PGA 内存管理
SQL 工作区(work area)所占的容量可以被统一地且自动地管理。DBA 只需要设定 PGA_AGGREGATE_TARGET初始化参就能设定一个 Oracle 实例使用的全部 PGA 容量。此参数的值(例如,2GB)针对整个实例,Oracle将保证所有数据库服务进程(server process)使用的全部 PGA 内存不超过此参数的限制。
初始化参数 WORKAREA_SIZE_POLICY 是一个作用于会话级和系统级的参数,此参数只接受两个值:MANUAL或 AUTO。DBA 可以先设定好 PGA_AGGREGATE_TARGET 参数,然后通过设定此参数以决定 PGA 的内存管理模式是手动还是自动。
设定了 PGA_AGGREGATE_TARGET 参数后,专用服务模式下创建的全部会话所使用的工作区的容量将被自动地调整,前述的 *_AREA_SIZE 参数对这些会话无效。在任何时刻,Oracle 实例中可供活动工作区(active work area)使用的 PGA 总容量都是由 PGA_AGGREGATE_TARGET 参数决定的。这个容量等于 PGA_AGGREGATE_TARGET减去系统内其他组件占用的 PGA 内存(例如,被会话占用的 PGA 内存)。剩余的 PGA 内存可以根据各个活动工作区的内存需要进行分配。
  • V$PROCESS 视图中的以下三列记录了分配给 Oracle 进程使用的 PGA 内存的情况:PGA_USED_MEM 、PGA_ALLOCATED_MEM 、PGA_MAX_MEM
服务进程
Oracle 需要创建服务进程(server process)来处理连接到实例的用户进程(user process)提交的请求。为用户应用程序创建的服务进程(或用户/服务进程合并后的服务进程部分)可以完成以下工作:
  • 解析、运行应用程序提交的 SQL 语句
  • 如果数据在 SGA 中不存在,则将所需的数据块从磁盘上的数据文件读入 SGA 的数据缓存区(shared database buffer)
  • 以应用程序能理解的形式返回 SQL 语句的执行结果
进程监控进程(PMON)
当一个用户进程(user process)失败后,进程监控进程(process monitor,PMON)将对其进行恢复。PMON 进程将清除相关的数据缓存区(database buffer cache)并释放被此用户进程使用的资源。例如,PMON 进程将重置活动事务表(active transaction table),释放锁,并从活动进程列表(list of active process)中删除出错进程的 ID。
跟踪文件与告警日志
每个服务进程(server process)和后台进程(background process)都可以向自己的跟踪文件(trace file)写入信息。当一个进程检查到内部错误时,能够将错误信息写入跟踪文件,DBA 可以向 Oracle 支持服务(Oracle Support Services)提交此信息。
每个服务进程(server process)和后台进程(background process)都可以向自己的跟踪文件(trace file)写入信息。当一个进程检查到内部错误时,能够将错误信息写入跟踪文件。
每个数据库中还有一个告警日志(alert log)文件 alert.log。告警日志按时间顺序记录数据库中的消息和错误,主要包括以下内容:
  • 系统中发生的所有内部错误(internal error,ORA-600),数据块损坏错误(block corruption error,ORA-1578)和数据块死锁错误(deadlock error,ORA-60)
  • 管理性操作,例如 CREATE/ALTER/DROP DATABASE/TABLESPACE 等 SQL 语句,及STARTUP,SHUTDOWN,ARCHIVE LOG,和 RECOVER 等企业管理器(Enterprise Manager)或SQL*Plus 命令
  • 共享服务进程(shared server process)及调度进程(dispatcher process)运行时产生的消息及错误
  • 自动刷新物化视图(materialized view)时产生的错误

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-6-29 11:20

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表