Oracle服务器结构详解(最新推荐)

 更新时间:2024年06月18日 09:57:03   作者:一左不吃辣堡  
这篇文章主要介绍了Oracle服务器结构的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

一、Oracle服务器主要组成

  • 实例(系统全局区SGA、后台进程)
  • 数据库
  • 程序全局区(PGA)
  • 前台进程

二、系统全局区SGA

1.高速数据缓冲区

用来存放Oracle系统最近访问过的数据块,经常或者最近被访问的数据块会被放置到高速数据缓冲区的前端,不经常被访问的会被放置到后端

2.共享池

存储最近执行过的SQL语句和最近使用过的数据定义

共享池的大小由SHARE_POOL_SIZE决定

共享池包含:

库高速缓冲区:包含SQL语句文本,分析代码和执行计划

字典高速缓冲区:包含表,列和其他对象定义和权限

3.Redo buffer(重做日志缓冲区)

跟踪服务器和后台进程对数据库所做的更改,它的字节大小由LOG_BUFFER 参数定义。记录被更改的块、更改位置以及重做条目中的新值;重做条目不区分被更改块的类型,它只记录块中哪些字节发生了更改。重做日志缓冲区连续使用,而且一个事务处理所做的更改可能会与其它事务处理的更改交叉存取;它是在已满后可以重新使用的循环缓冲区,但是只有在所有旧的重做条目都记录在重做日志文件之后才能使用。
COMMIT提交处理:

服务器进程随同系统更改号(SCN)一起在重做日志缓冲区中放置一个提交记录。
LGWR 向重做日志文件中连续写入直到提交记录含提交记录的所有重做日志缓冲区条目。这之后,Oracle 服务器就能够保证即使存在实例失败也不会丢失更改。
通知用户COMMIT 命令已完成。
服务器进程记录信息以指出事务处理已完成并且可以释放资源锁。

4.大共享区

存储不与SQL语句处理直接相关的大型内存结构,如在备份和还原操作中复制的数据块。

5.固定SGA

存储Java代码

三、用户进程全局区-PGA

又称程序全局区,可以把代码、全局变量和数据结构都存储在其中,每个Oracle服务器进程只拥有自己的那部分PGA资源

PGA包含:

私有SQL区

会话区

四、服务器进程

处理用户会话过程中的SQL语句和SQL Plus命令

五、后台进程

1.数据库写入程序(DBW0)

数据库写入程序将灰数据缓冲区从数据库缓冲区高速缓存写入数据文件。它确保有足够数量的空闲缓冲区(即当服务器进程需要读取数据文件中的块时可以覆盖的缓冲区) 在数据库缓冲区高速缓存中可用。由于服务器进程只在缓冲区高速缓存中进行更改,因此数据库性能得到改善,而且DBW0 延迟写入数据文件直到发生下列事件之一:

  • 灰数据缓冲区的数量达到阈值
  • 当进行扫描而无法找到任何空闲缓冲区时进程扫描了指定数量的块
  • 出现超时(每三秒)
  • 出现检查点(检查点是使数据库缓冲区高速缓存与数据文件同步的一种方法)

2.日志写入程序(LGWR)

将重做日志缓冲区中注册的更改写入重做日志文件。
LGWR 在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:

当提交事务处理时
当重做日志缓冲区的三分之一已满时
当重做日志缓冲区中记录了超过1 MB 的更改时
在 DBW0 将数据库缓冲区高速缓存中修改的块写入数据文件以前因为恢复操作需要重做,所以LGWR 只在重做写入磁盘后确认COMMIT 命令

3.系统监控程序(SMON)

检查数据库的一致性.果Oracle 实例失败,那么SGA 中尚未写入磁盘的所有信息都会丢失。实例丢失后,后台进程SMON 在数据库重新打开时自动执行实例恢复。恢复实例需要进行以下步骤:

前滚以恢复尚未记入数据文件但已经记入联机重做日志中的数据。由于实例失败过程中SGA 的丢失,这些数据尚未写入磁盘。在这个进程中,SMON 读取重做日志文件并将重做日志中记录的更改应用到数据块中。由于所有提交的事务处理都已被写入重做日志,因此该进程完全恢复这些事务处理。
打开数据库以允许用户登录。未被未恢复事务处理锁定的任何数据都立即可用。
回退未提交的事务处理。它们由SMON 回退,或在访问锁定的数据时由单个服务器进程回退。

SMON 也执行一些空间维护功能:

联合或合并数据文件中空闲空间的邻近区域。
回收临时段将它们作为数据文件中的空闲空间返回。临时段用于在SQL 语句处理过程中存储数据。

4.过程监视器(PMON)

负责在一个Oracle 进程失败时清理资源,进程失败后,后台进程PMON 通过下面的方法进行清理:

  • 回退用户的当前事务处理
  • 释放当前保留的所有表锁或行锁
  • 释放用户当前保留的其它资源

5.检查点进程(CKPT)

负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

到此这篇关于Oracle--服务器结构详解的文章就介绍到这了,更多相关Oracle服务器结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • windows下oracle 11g安装图文详解

    windows下oracle 11g安装图文详解

    在本教程中,您将学习如何在 Windows 上安装 Oracle 数据库 11g,需要的朋友可以参考下
    2023-11-11
  • Linux系统下启动/关闭Oracle数据库

    Linux系统下启动/关闭Oracle数据库

    在Linux系统上开启关闭Oracle数据库是一个常见的任务,可以通过多种方法来实现,这篇文章主要给大家介绍了关于Linux系统下启动/关闭Oracle数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Windows下Oracle JDK 17.0.18 安装+环境变量配置保姆级教程

    Windows下Oracle JDK 17.0.18 安装+环境变量配置保姆级教程

    本文基于Oracle官方JDK 17.0.18版本,整理了一套零基础也能看懂的安装+配置教程,适配Windows系统,亲测有效,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析

    Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析

    这篇文章主要介绍了Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析,小编觉得还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Oracle数据库查询之单表查询的关键子句及其用法

    Oracle数据库查询之单表查询的关键子句及其用法

    在Oracle数据库管理中了解如何查询表的最近更改数据对于跟踪和审计数据库的变化至关重要,这篇文章主要介绍了Oracle数据库查询之单表查询的关键子句及其用法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-06-06
  • Oracle锁表处理方式

    Oracle锁表处理方式

    文章主要介绍了如何解决Oracle数据库中的表被锁问题,包括查看被锁的表、查找锁表的进程、杀死进程等步骤,并提供了在Linux和Windows系统中杀死进程的方法
    2024-11-11
  • Oracle分页查询的实例详解

    Oracle分页查询的实例详解

    这篇文章主要介绍了Oracle分页查询的实例详解的相关资料,希望通过本文能帮助到大家实现理解这部分内容,需要的朋友可以参考下
    2017-10-10
  • Oracle统计每日发生次数多种实现方式

    Oracle统计每日发生次数多种实现方式

    这篇文章主要介绍了Oracle统计每日发生次数的多种实现方式,包括使用COUNT()和GROUPBY、COUNT()和PARTITIONBY、ROLLUP以及HISTOGRAM分析功能,需要的朋友可以参考下
    2026-01-01
  • Oracle 语句优化分析说明

    Oracle 语句优化分析说明

    Oracle 语句优化技巧,大家可以参考使用,使你的oracle运行效率更高更好。
    2009-09-09
  • oracle适配器连接不上的解决办法

    oracle适配器连接不上的解决办法

    racle 的Developer连接不上报错:listener does not currently know of SID given in connect descriptor,如何解决呢?下面小编给大家分享oracle适配器连接不上的解决办法,需要的朋友可以参考下
    2015-10-10

最新评论