广告
返回顶部
首页 > 资讯 > 数据库 >Oracle内存结构和进程结构
  • 442
分享到

Oracle内存结构和进程结构

2024-04-02 19:04:59 442人浏览 八月长安
摘要

一、内存结构 在oracle数据库系统中内存结构主要分为系统全局区(SGA)和程序全局区(PGA),SGA随着数据库实例的启动向操作系统申请分配一块内存结构,随着数据库实例的关闭释放,每一个Oracle数据

一、内存结构

oracle数据库系统中内存结构主要分为系统全局区(SGA)和程序全局区(PGA),SGA随着数据库实例的启动向操作系统申请分配一块内存结构,随着数据库实例的关闭释放,每一个Oracle数据库实例有且只有一个SGA。PGA随着Oracle服务进程启动的时候申请分配的一块内存结构。如果在共享服务结构中PGA存在SGA中。在后面我们将表述各个部件

1、系统全局区(SGA)

重要提示,提高SGA的大小可以在一定程度上提高Oracle数据库系统的性能,但你设置SGA的值如果不能定在内存物理页上,有些部分可能被交换到系统的交换文件中。这样你的Oracle数据库系统将变慢。系统全局区是一组包含数据和控制信息的共享内存结构,允许Oracle服务的众多后台进程同时访问或修改其中的数据,所以有些时候也被称为“全局共享区”,参数文件中的SGA_MAX_SIZE指定SGA动态大小。
系统全局区由以下主要几个部分组成:
※ 共享池SharedPool
※ 数据高速缓存DatabaseBufferCache
※ 重做日志缓存RedoLogBufferCache
※ Java池(可选)JavaPool
※ 大池(可选)LagerPool

共享池

共享池存储了最近多数使用的执行sql语句和最近使用的数据定义。它包含库高速缓存器和数据字典缓存器这两个与性能相关的内存结构。共享池的大小可以通过初始化参数文件(通常为init.ora)中的SHARED_POOL_SIZE决定。共享池是活动非常频繁的内存结构,会产生大量的内存碎片,所以你要确保它尽可能足够大。
库高速缓存器,他又包含共享SQL区和共享PL/SQL区两个组件区。为了提高SQL语句的性能,在提交SQL语句或PL/SQL程序块时Oracle服务器将先利用最近最少使用(LRU)算法检查库高速缓存中是否存在相同的SQL语句或PL/SQL程序块,若有则使用原有的分析树和执行路径。
数据字典缓存器,它收集最近使用的数据库中的数据定义信息。它包含数据文件、表、索引、列、用户、访问权限、其他数据库对象等信息。在分析阶段决定数据库对象的可访问信息。利用数据字典缓存器有效的改善了响应时间。它的大小由共享池的大小决定。

数据高速缓存

它存储数据文件中数据块的拷贝。利用这种结构使数据的更新操作性能大大的提高。数据高速缓存中的数据交换同样采用最近最少使用算法(LRU)。它的大小主要受到DB_BLOCK_SIZE决定。数据高速缓存它由DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE这些独立的子缓存器构成,同时它能动态的增长或收缩。

重做日志缓存

重做日志缓存器是个环状的缓存器,它记载所有数据的改变,主要目的用于恢复。改变后的记录内部称为重做条目,重做条目包含重构或重做信息。它的大小由初始化参数中的LOG_BUFFER决定。重做日志缓存尺寸若太小会导致进程竞争,并引起写日志进程之间的竞争。

Java池

Java池是在安装使用Java后,才在SGA中出现的一个组件,它的大小由JAVA_POOL_SIZE初始化参数决定。Java池为执行Java命令提供分析与执行内存空间。

大池

数据库管理员可以可选配置被称为大池的内存区,它主要用于存储为共享服务器保存会话信息、I/O服务进程、Oracle备份与恢复操作、并行的消息缓存等内容。值得一提的是大池不像其他内存组件中存在LRU列表。

2、程序全局区PGA

程序全局区用于保存每一个用户连接到数据库的信息。连接到数据库的信息主要有回话信息、排序信息和游标信息等三方面。

二、进程结构

Oracle的进程主要分为用户进程、服务进程和后台进程三类。用户进程运行在应用或Oracle工具中;服务进程在一个Oracle数据库实例启动后当一个用户建立连接后创建的;后台进程则完成不同特定任务的一些进程。
Oracle的后台进程如下:
※ 写数据DatabaseWriter(DBW0或DBWn);
※ 写日志LogWriter(LGWR);
※ 检查点Checkpoint(CKPT);
※ 系统监视SystemMonitor(SMON);
※ 进程监视ProcessesMonitor(PMON);
※ 归档ArcHive(ARCn);
※ 恢复Recover(RECO);
※ 锁管理服务LockManagerServer(LMS)–仅在RealApplicationClusters;
※ 队列监视QueueMonitor(OMNn);
※ 调度Dispatcher(Dnnn);
※ 服务Server(Snnn);

1、 写数据(DBWn)

数据写进程负责将重写块(dirtyblock)从数据高速缓存中写到磁盘上的数据文件里。为了使数据库的性能受I/O限制降到最低,DBWn不是每一个块修改时立即写到磁盘上,而是等到符合一定条件后读取高速缓存中的重写块列表,并将其指定的块成批地写到数据文件中。
数据写进程活动的条件如下:
※ 服务进程无法发现可用缓存
※ 检查点出现
※ 重写块到达极限
※ 超时
※ ARC发出需求
※ 表空间脱机
※ 表空间只读
※ 表丢弃或表截断
※ 表空间开始备份
虽然一个数据库写进程(DBW0)对大多数系统是足够的,但是如果你的系统修改数据量很大要提高些性能你可以配置更多的写进程(DBW1到DBW9和DBWa到DBWj)。这些增加的DBWn进程无法在单处理系统中使用。初始化参数DB_WRITER_PROCESSES指定了DBWn进程的序号,此参数最大允许值为20。

2、 写日志(LGWR)

写日志进程是负责管理重做日志缓存的——将重做日志从缓存区写到磁盘重做日至文件中。LGWR写从上次写后开始到最后复制到缓存中的所有重做条目。要记住Oracle数据库系统直到LGWR将重做信息从缓存器中写到在线重做日志才认为事务完成并发送成功代码。LGWR进程对数据库性能的影响不大。
写日志在下列条件中活动:
※ 在COMMIT;
※ 缓存器使用达到三分之一时
※ 缓存器使用达到1M时
※ 每隔3秒
※ 在DBWn活动之前

3、 检查点进程(CKPT)

检查点进程是负责向DBWn发送信号;用检查点的信息更新数据文件头;用检查点信息更新控制文件信息。检查点频繁出现、日志频繁切换或数据库有很多数据文件时,该进程可以减少LGWR的工作量。数据库管理员可以通过设置初始化参数CHECKPOINT_PROCESS为TRUE或FALSE来确定这个数据库实例是否使用检查点进程。在初始化参数中LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT来改变检查点出现的频率。设置这两个参数要小心,多检查点虽然能使LGWR进程工作量下降,但是过多的检查点会导致系统处理时间和I/O时间浪费在不必要的开启和关闭检查点的执行上。

4、 系统监视进程(SMON)

系统监视进程是有规律的周期性活动。
它负责的目的如下:
※ 在实例启动中如果需要执行恢复;
※ 重新分配临时段;
※ 每隔3秒合并表空间中相邻的自由区;
※ 根据需要将表空间或数据文件回复到联机状态;
※ 对于应用集群系统,它执行恢复一个失败的CPU或Oracle实例。
系统监视这进程在数据库系统实例启动时如果出现故障,那么数据库系统将无法开始工作。如果任何停止的事务因为文件只读或脱机错误导致实例恢复过程中跳过,SMON将使表空间或文件回复到联机状态。SMON进程对于一个实例能执行实例应用集群,一个SMON对于一个实例能执行实例恢复为一个失败CPU或实例。

5、 进程监视进程(PMON)

进程监视进程负责在下列过程失败后释放相关对象:
※ 事务回退
※ 释放相关锁
※ 释放相关资源
※ 重新分配发生错误的调度
PMON周期性的检查调度状态和服务进程,并重新使除Oracle有意终止以外的已停止的进程运行;PMON同样也注册关于实例和调度进程用于网络监听的信息。如果这个进程在数据库系统实例启动时出现故障,那么数据库系统也将无法开始工作。

6、 恢复进程(RECO)

恢复进程负责自动解决恢复分步式数据库系统中陷于失败的分布式事务。关于此进程的详细将在分布式数据库章节中介绍。

7、 归档进程(ARCn)

这是一个可选的后台进程。只有当Oracle数据库实例运行在归档模式时出现。归档进程负责在日志文件切换时将所有重做日志信息复制到指定的设备文件中。一个Oracle数据库实例最多可以拥有(ARC0到ARC9)10个归档进程。其他Oracle的后台进程,如锁管理服务、队列监视、调度等均不是一个Oracle数据库实例必须的。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle内存结构和进程结构

本文链接: https://www.lsjlt.com/news/43191.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle内存结构和进程结构
    一、内存结构 在Oracle数据库系统中内存结构主要分为系统全局区(SGA)和程序全局区(PGA),SGA随着数据库实例的启动向操作系统申请分配一块内存结构,随着数据库实例的关闭释放,每一个Oracle数据...
    99+
    2022-10-18
  • Oracle体系结构之内存结构(SGA、PGA)
    Oracle体系结构之内存结构(SGA、PGA)  一、内存结构 SGA(System Global Area):由所有服务进程和后台进程共享; PGA(Prog...
    99+
    2022-10-18
  • 数据库体系结构-进程和内存结构(Process and Memory Architecture)
    1数据库体系结构-进程和内存结构(Process and Memory Architecture) PostgreSQL是一个client/server架构rdbms,一个服务器上运行多个进程。 1、进程结构 Postgres Serve...
    99+
    2019-03-18
    数据库体系结构-进程和内存结构(Process and Memory Architecture)
  • Oracle之内存结构(SGA、PGA)
    一、内存结构SGA(System Global Area):由所有服务进程和后台进程共享;PGA(Program Global Area):由每个服务进程、后台进程专有;每个进程都有一个PGA。二、SGA包含实例的数据和控制信息,包含如下内...
    99+
    2023-06-06
  • Oracle 数据库 体系结构(一):存储结构
    目录 为什么要学习体系结构? 体系结构的定义 Oracle 物理结构 Oracle 逻辑结构 总结 为什么要学习体系结构? 之前的文章有讲解到 MySQL 、MongoDB 数据库,这些数据库我...
    99+
    2022-10-18
  • Oracle内存结构面试题有哪些
    这篇文章主要介绍“Oracle内存结构面试题有哪些”,在日常操作中,相信很多人在Oracle内存结构面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle内存...
    99+
    2022-10-18
  • Oracle的体系结构和物理、逻辑存储结构介绍
    本篇内容主要讲解“Oracle的体系结构和物理、逻辑存储结构介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的体系结构和物理、逻辑存储结构介绍”吧...
    99+
    2022-10-18
  • 浅析理解Oracle数据库体系结构和存储结构
    一、Oracle体系结构 个人比喻帮助理解:类似于图书馆,去图书馆的客户(用户进程和服务进程等)需要调取资料,求助于图书管理员(实例)进入图书分区(数据库)进行资料查找。【如果比喻不当,欢迎指正,尽请谅...
    99+
    2022-10-18
  • MySQL整体架构与内存结构
    一  mysql 整体框架: MySQL是由SQL接口,解析器,优化器,缓存,存储引擎等组成的。   1. Connectors指的是不同语言中与SQL的交...
    99+
    2022-10-18
  • oracle逻辑存储结构
    oracle数据库管理系统有三个重要的概念:实例、数据库、数据库服务器。oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构。逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理存储结构用于展示Oracle在操作系统中...
    99+
    2019-06-26
    oracle逻辑存储结构
  • Oracle 11g R2 存储结构
    数据文件相关知识 想查看系统中有多少个数据文件我们可以通过动态数据字典或静态数据字典来查看:通过静态数据字典查看数据文件通过动态数据字典来查看数据文件直接查看数据文件的内容是看不到的,必须通过一个逻辑的结构...
    99+
    2022-10-18
  • Oracle数据库的内存结构是什么
    这篇文章主要介绍“Oracle数据库的内存结构是什么”,在日常操作中,相信很多人在Oracle数据库的内存结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle...
    99+
    2022-10-18
  • Linux下的进程虚拟内存结构是什么
    这篇文章主要介绍“Linux下的进程虚拟内存结构是什么”,在日常操作中,相信很多人在Linux下的进程虚拟内存结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linu...
    99+
    2022-10-18
  • Oracle面试宝典-进程结构篇
    Oracle 面试宝典 - 进程结构篇 Oracle 数据库是以单进程还是多进程方式运行的? 在Windows 平台下, Oracle 数据库是以单进程 (oracle.exe) 多线程方...
    99+
    2022-10-18
  • 【赵强老师】Oracle数据库的内存结构
    首先,我们通过一张图片来了解一下Oracle数据库的内存结构,如下: 每个数据库实例有两个关联的内存结构—系统全局区(SGA),程序全局区(PGA)。 系统全局(SGA):一组共享的内存结构(称为SGA 组件),其中包含一个...
    99+
    2019-11-19
    【赵强老师】Oracle数据库的内存结构
  • Oracle内存结构SGA、PGA、UGA的示例分析
    这篇文章将为大家详细讲解有关Oracle内存结构SGA、PGA、UGA的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一、 系统全局区  (Syst...
    99+
    2022-10-19
  • Mysql InnoDB 的内存结构详情
    目录1 前言2 InnoDB 存储引擎结构2.1 InnoDB表存储引擎文件2.2 InnoDB 预读机制2.3 InnoDB 特性2.3.1 插入缓存2.3.2 二次写 ...
    99+
    2022-11-13
  • 怎么组成JVM内存结构
    今天就跟大家聊聊有关怎么组成JVM内存结构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。你对JVM内存结构是否了解,这里和大家分享一下,JVM内存结构主要包括两个子系统和两个组件,这...
    99+
    2023-06-17
  • oracle block internal(block 内部结构分解)
    Oracle block的详细物理结构图: 本文主要说明oracle block的物理结构,它是oracle的最小存储单元,由多个os数据块组成。主要由三个逻辑层组成(通过c语言描绘的结构,如下图一所示):the cache la...
    99+
    2023-06-06
  • java内存模型和java内存结构有什么区别
    本篇内容介绍了“java内存模型和java内存结构有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、java内存模型和...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作