Oracle的体系结构总结(oracle体系结构包括)
sinye56 2024-10-01 19:57 9 浏览 0 评论
本章偏向Oracle理论 ,本章不熟练不影响我们Oracle应用开发的学习,这章也是Oracle资格开始OCP和OCM比较头痛的。
Oracle整个体系结构如下图所示:
1、oracle实例
Oracle实例也叫例程(instance),Oracle 例程是后台进程和内存结构的组合。只有启动例程后,才能访问数据库中的数据。每次启动例程时,会分配系统全局区(SGA) 并启动Oracle 后台进程
SGA 也称作共享全局区,用于存储数据库进程共享的数据库信息。它包含有关Oracle 服务器的数据和控制信息,在Oracle 服务器所在计算机的虚拟内存中分配
后台进程代表调用进程执行各种功能。它们把为每个用户运行的多个Oracle 程序所处理的功能统一起来。后台进程执行输入/输出(I/O),并监视其它Oracle 进程来提高并行性,从而使性能和可靠性更加优越
2、系统全局区SGA
系统全局区(System Global Aera,简称SGA)组成:
(1)Shared pool(共享池)
Shared pool(共享池)含library cache(库高速缓存:存最近的PLSql和Sql)以及data dictionary cache(数据字典高速缓存:存数据定义、表、索引、列等对象)
Shared pool(共享池)是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。Shared Pool的大小由参数SHARED_POOL_SIZE决定。在32位系统中,这个参数的默认值是8M,而64位系统中的默认值位64M。最大为4G
(2)database buffer cache(数据库缓冲区高速缓存):存储数据块(block)
数据库缓存Library Cache中包括共享SQL区(Shared SQL Areas)、PL/SQL存储过程、包和控制结构(如锁、库缓存句柄),用于sql语句以及PL/SQL程序单元(存储过程、函数、包、匿名PL/SQL 块和触发器)的解析、内存分配
数据字典高速缓存(Dictionary Cache):数据字典是关于数据库的参考信息、数据库的结构信息和数据库中的用户信息的一组表和视图的集合,如我们常用到的V$视图、DBA_视图都属于数据字典。在SQL语句解析的过程中,Oracle可以非常迅速的访问(如果需要的话)这些数据字典,在SQL Trace中,这种对数据字典的访问就被统计为回调(recursive calls)
(3)redo log buffer:记录block的全部更改
Redo Log Buffer是SGA中一段保存数据库修改信息的缓存。这些信息被存储在重做条目(Redo Entry)中.重做条目中包含了由于INSERT、UPDATE、DELETE、CREATE、ALTER或DROP所做的修改操作而需要对数据库重新组织或重做的必须信息。在必要时,重做条目还可以用于数据库恢复。重做条目是Oracle数据库进程从用户内存中拷贝到Redo Log Buffer中去的。重做条目在内存中是连续相连的。后台进程LGWR负责将Redo Log Buffer中的信息写入到磁盘上活动的重做日志文件(Redo Log File)或文件组中去的。
参数LOG_BUFFER决定了Redo Log Buffer的大小。它的默认值是512K(一般这个大小都是足够的),最大可以到4G。当系统中存在很多的大事务或者事务数量非常多时,可能会导致日志文件IO增加,降低性能。这时就可以考虑增加LOG_BUFFER
(4)large pool:分担shared pool部分工作以及用于RMAN和并行消息缓冲等
大池是SGA中的一块可选内存池,用于共享服务(Shared Server MTS方式中)的会话内存和Oracle分布式事务处理,并行查询,IO服务进程以及Oracle备份和恢复操作(启用了RMAN时),根据需要时配置。参数LARGE_POOL_SIZE设置大池的大小。大池是属于SGA的可变区(Variable Area)的,它不属于共享池
(5)java pool:存储java命令
Java池也是SGA中的一块可选内存区,它也属于SGA中的可变区。Java池的内存是用于存储所有会话中特定Java代码和JVM中数据。Java池的使用方式依赖于Oracle服务的运行模式。Java池的大小由参数JAVA_POOL_SIZE设置。Java Pool最大可到1G
3、后台进程
后台进程组成:
DBWR :负责把dirty buffer数据写入数据文件
LGWR :负责把redo log buffer内数据写入redo log file
SMON :负责例程恢复(前滚,回退未提交事务处理,开库)、合并空闲空间,回收临时段 PMON :负责回退事务处理,释放锁,释放资源、重启调度程序
CKPT :每隔三秒,CKPT 进程就会向控制文件存储数据,以标识重做日志文件中恢复操作的起始位置,该操作称作检查点。
DBWR:
该进程负责将缓冲区脏数据写入数据文件,是缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一个空闲缓冲区被修改,它被标志为"弄脏",DBWR的主要任务是将"弄脏"的缓冲区写入磁盘,使缓冲区保持"干净"。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)来释放近期未访问缓冲区,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘:
(1、正常检查点
(2、dirty buffer达到阀值,该临界长度为参数DB-BLOCK-WRITE-BATCH的值的一半
(3、出现超时(每次3秒)
(4、删除或截断表
SMON:
该进程实例启动时执行实例恢复,SMON对有故障的实例进行实例恢复:前滚以恢复尚未记入数据文件但已经记入联机重做日志中的数据,打开数据库以便用户可以登录,最后回滚尚未提交的事务。此外,SMON也执行诸如合并空闲空间,收回不再用的临时段空间等空间维护功能
PMON:
该进程在用户进程出现故障时执行进程恢复,负责清理内存和释放该进程所使用的资源。例如:它要重置活动事务表的状态,回退用户的当前事务处理,释放锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)
4、oracle数据库系统文件的组成
Oracle数据库组成文件包括:
数据文件( Data files )物理存储ORACLE数据库数据的文件,作为操作系统文件而存在。数据以ORACLE二进制方式存储在数据文件中
控制文件(Control Files):一个较小的二进制文件,不可读或手工编辑,用于描述数据库结构。它是数据库的心脏
重做日志文件( Redo log files ) :用于记录数据库的所有修改信息,在数据库恢复时被ORACLE使用
其他关键文件结构:
参数文件 :用来定义Oracle 例程的特性
口令文件 :用来验证哪些用户有权启动和关闭Oracle 例程
归档日志文件:是重做日志文件的脱机副本,当必须从介质失败中进行恢复时可能会需要这些副本
5、重做日志文件结构
数据库管理员可设置Oracle 数据库以维护联机重做日志文件副本,来避免由于单点故障丢失数据库信息
(1)联机重做日志文件组:
一组相同的联机重做日志文件副本称作联机重做日志组。LGWR 后台进程向组内所有联机重做日志文件并发写入相同信息。为保证数据库的正常操作,Oracle 服务器最少需要两个联机重做日志文件组
(2)联机重做日志文件成员:
组内的每个联机重做日志文件称为成员。组内的每个成员都有相同的日志序列号和同样的大小。Oracle 服务器每次写入日志组时,都分配一个日志序列号以唯一地识别每个重做日志文件。当前日志序列号存储在控制文件和所有数据文件的标头内
Oracle 服务器将对数据库所做的所有更改按顺序记录到重做日志缓冲区中。LGWR 进程把重做条目从重做日志缓冲区写入联机重做日志组的其中一个组,这个组叫做当前联机重做日志组。重做日志文件是以循环方式使用的。一旦某个重做日志文件被写满,LGWR 就会移动到下一个日志组。这称为日志切换,同时还将执行检查点操作,将信息写入控制文件
如果数据库配置为在NOARCHIVELOG 模式下,每次联机重做日志文件已满并发生日志切换时,都要覆盖联机重做日志文件。如果数据库配置为在ARCHIVELOG 模式运行下,那么必须将已满的联机重做日志文件的不活动组归档
对重作日志文件的操作分为以下几种:添加联机重作日志组、删除联机重作日志组、添加联机重作日志成员、删除联机重作日志成员、强制执行日志切换
相关推荐
- 一个不错的软件版本命名规范!
-
之前写了一篇如何自动生成版本号的文章,《让你的C程序,自动打印版本信息》初衷是让自己的程序在运行时自动打印与版本相关的信息,避免测试时因为版本信息不确定导致的一些功能对应不上去的问题,当时留了一个坑,...
- 国产操作系统迎来发展风口 公务领域更能培育起Linux生态
-
谷歌和微软在俄罗斯市场的一番套路猛如虎,就让我们深刻地意识到了,只有自己的东西才能靠得住。也由此,国内操作系统发展迎来了发展风口。我就看到有朋友就秀出了他们单位采购的纯国产的主机,一款华为的主机,纯国...
- 5个大有“前途”的Linux桌面发行版本
-
ZD至顶网CIO与应用频道08月27日专栏:Linux无处不在。你的服务器里,你的电话、汽车、手表、烤面包机、冰箱……和台式机里都有Linux的身影。虽然在桌面上见到Linux的用户比在自动调温...
- Linux 常用应用软件大全
-
编译自:https://www.fossmint.com/most-used-linux-applications/作者:MartinsD.Okoi译者:HankChow对于许多应用程序...
- Linux 4.1 系列的最大版本 4.1.18 LTS发布,带来大量修改
-
(LCTT译注:这是一则过期的消息,但是为了披露更新内容,还是发布出来给大家参考)著名的内核维护者GregKroah-Hartman貌似正在度假中,因为SashaLevin2016年2月16日的...
- Linux发行版需要杀软吗?卡巴斯基推出免费KVRT病毒扫描清理工具
-
IT之家6月4日消息,你认为使用Linux发行版,需要杀毒软件吗?或许很多用户认为Linux发行版偏小众,因此受到黑客攻击的风险也相对较小,不过卡巴斯基并不这么认为,近期推出了适用于...
- 适合开发人员的 5款 Linux 发行版
-
什么是Linux?Linux是基于Unix的操作系统。由LinusTorvalds开发于1991年首次发布其内核。因为Linux是开源软件,其发行版由不同组织发布,因此不同的发行版具有不同的风格...
- VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11
-
IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...
- 你是否需要一个容器专用的Linux发行版本?
-
单单使用容器是不够的,提供商们认为你需要一个容器专用的Linux发行版本。我们可以让容器在不同的操作系统上运行,不同的操作系统都有自己的虚拟化服务,如:SolarisZones、BSDJails、...
- Tizen 3.0版本发布 采用Linux 4.1内核
-
2015-09-2111:31:39作者:马荣【中关村在线软件资讯】9月21日消息:尽管三星靠着Android系统设备在移动市场赚钱,但是仍然没有忘记自家的Tizen开发。现在Tizen3.0版...
- 欧拉操作系统演进:应用累计超130万套 支持鲲鹏、英特尔、飞腾等芯片
-
21世纪经济报道记者倪雨晴深圳报道4月15日,在欧拉开发者大会(openEulerDeveloperDay2022)的主论坛上,欧拉首个数字基础设施全场景长周期版openEuler22.03...
- Papyros:以Material Design为灵感的Linux发行版本
-
项目团队并不希望只是采用传统的桌面主题,而是致敬谷歌Android系统的MaterialDesign设计语言想要打造出某些不同以往足够吸引用户的Linux发行版本,自然该版本还在不断的更新和改进中,...
- 比特网早报:全国空间计量技术委员会成立,银河麒麟操作系统上架微信Linux4.0.0版本
-
2024年11月6日消息,昨夜今晨,科技圈都发生了哪些大事?行业大咖抛出了哪些新的观点?比特网为您带来值得关注的科技资讯:全国空间计量技术委员会在北京成立近日,经市场监管总局批准,全国空间计量技术委员...
- 2024年最稳定的5个Linux发行版,赶紧收藏!
-
Linux是最流行的免费开源平台之一。Linux已被广泛使用,因为它安全、可扩展和灵活。Linux发行版收集开源代码,对其进行编译,并将其组合成一个可以轻松启动和安装的操作系统。它们还提供不同的...
- 彰显Linux生态繁华,Ubuntu、Fedora等四发行版同时发布新版本
-
上周对于开源社区来说是忙碌的一周。EndeavourOS和TrueNASScale于周二(4月16日)发布,Fedora于周三(4月17日)发布,Ubuntu于周四(4月18日)发布。四个新版本中都...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)