oracle体系结构-内存篇
体系架构.

• Oracle 数据库结构是 Oracle 数据库系 统的主要部分,它是一些可以看得见 的软件,包括:Oracle 数据字典、表 空 间 与 数 据 文 件 、 Oracle 实 例 (Instance)。
Oracle 体系架构图(图1)
图2-1 Oracle 9i体系结构图
镜像日志文件
镜像日志文件图示 Group 1 Group 2 Log File 2
Log File 1 Disk 1 Member 1.1 Log File 3 Disk 2 Member 1.2
Member 2.1 Log File 4
Member 2.2
控制文件(Control File)
是一个较小的二进制文件,用于描述数据库结构。ORACLE的体系结构
共享SQL区包括
系统全局区
• SQL或PL/SQL语句的文本 • SQL或PL/SQL语句的语法分析形式 • SQL或PL/SQL语句的执行方案
共享池(Shared Pool)由共享SQL区和数据字典区组成。 参数SHARED_POOL_SIZE 确定共享池的大小。
数据字典区用于存放数据字典信息行。
描述信息如下: • 数据库建立的日期。 • 数据库名。 • 数据库中所有数据文 件和日志文件的文件名及 路径。 • 恢复数据库时所需的 同步信息。
要点注意: • 在打开和存取数据库 时都要访问该文件。 • 镜像控制文件。 • 记录控制文件名及路 径的参数为: CONTROL_FILES
参数文件(Parameter File)
Oracle 内存结构
Libaray Redo log buffer
Data Dictionary
Cache
第2章 Oracle数据库的体系结构

因此,Oracle实例是由内存空间和Oracle 进程两部分组成。
Oracle实例结构图
1.系统全局区SGA
数据缓存区(database buffer cache) :最近 使用过的数据 。 重做日志缓冲区(redo log buffer) :记录了 用户对数据库执行的操作,被循环使用 。 共享池(shared pool) :包含了库缓存区( library cache)、数据字典缓存区(dictionary cache)、并行执行消息缓冲区(buffers for parallel execution messages),以及用于系 统控制的各种内存结构。
数据文件又可以分为以下几种:
系统数据文件 回滚数据文件 临时数据文件 用户数据文件 系统辅助数据文件 示例数据文件
2.1.2 日志文件
日志文件记录了用户对数据库的修改信息( 如增加、删除、修改),名字通常为 REDO*.LOG格式。
日志文件也叫重做日志文件或重演日志文件 (Redo Log Files)。 日志组是日志文件的逻辑组织单元,每个日志 组中有一个或多个日志文件。 同一个日志组中的多个日志文件具有相同的信 息,它们是镜相关系
用户进程和服务进程之间的对应关系是由 Oracle数据库的工作模式决定的。数据库通 常有两种工作模式:
专用服务器模式 共享服务器模式
3.后台进程(background process)
Oracle实例启动时,为了保证该实例的正常使 用,系统将为该实例启动一些后台进程。 这些进程是操作数据库的基础,不管有没有用 户连接数据库,这些进程都会被启动。
oracle 数据库物理结构

数据文件和表空间有着密切的关系,Oracle 数据 库至少要包含一个数据文件,并且数据文件是表 空间的物理组成元素,一个表空间可以包含多个 数据文件,并且每个数据文件只能惟一地属于某 个表空间。 关于“表空间”在后面会给大家详细介绍。
但如果执行介质恢复(例如数据文件意外丢失) ,则必须要用到归档日志。归档日志是非活 动重做日志的备份,数据库只有处于 ARCHIVELOG 模式时才会生成归档日志,并且 每次日志切换都会生成归档日志。
如图所示:
假定数据库只包含两个日志组,并且处于 ARCHIVELOG 模式。初始阶段LGWR 会将事务 变化写入到日志组一,当日志组一写满之后 ,LGWR 会将事务变化写入到日志组二中, 并且会促使ARCn 进程将日志组一的内容保存 到归档日志中,依此类推。
2.6.1 连接和建立会话
当客户应用需要执行SQL 语句时,首先要建立用户进程 ,同时在服务器端会自动为该用户进程派生一个新的 服务进程。默认情况下,用户进程与服务器进程是一 一对应的关系。 当客户端运行SQL 语句时,用户进程会通过网络将该 SQL 语句发送到对应的服务进程,并且由服务进程执行 该SQL 语句,服务器进程在执行了SQL 语句之后,会将 SQL 语句的结果通过网络返回到用户进程。
2.5.3 区(Extents)
数据区间简称为区,区是为段分配空间的逻辑单位 ,Oracle 在分配空间时,并不是以块为单位进行的 ,而是将多个连续的块一次性的分配给数据库对象 。这些连续的块在回收存储
空间时,也一起回收。这些连续的数据块就是数据 区间。 当创建一个数据库对象时,Oracle为这些对象创建一 个段,并分配初始区。当段中的初始区的存储空间 使用完毕后,Oracle会为段自动分配新的区,每个区 的大小不要求相同
描述oracle数据库体系结构的组成及其关系。

描述oracle数据库体系结构的组成及其关系。
Oracle数据库体系结构由以下几个部分组成:1. 实例(Instance):实例是在计算机内存中运行的一个进程,负责管理数据库的操作。
每个实例都有自己的内存空间和进程,可以同时运行多个实例。
2. 数据库(Database):数据库是一个存储数据的容器,包含了表、视图、索引等对象。
一个实例可以管理多个数据库,每个数据库由一个或多个数据文件组成。
3. 数据文件(Data File):数据文件是用来存储数据库的实际数据的文件,包含了表、索引等对象的数据。
一个数据库可以有多个数据文件,每个数据文件具有独立的文件名和路径。
4. 控制文件(Control File):控制文件是用来记录数据库的结构和状态信息的文件,包括数据库名、数据文件的路径、表空间的信息等。
一个数据库通常有一个或多个控制文件。
5. 日志文件(Redo Log File):日志文件是用来记录数据库的变化操作的文件,包括数据更改、事务回滚等。
日志文件用于实现数据库的恢复和数据的一致性。
每个数据库通常有多个日志文件。
6. 表空间(Tablespace):表空间是数据库中逻辑数据存储的单位,用来管理和组织对象。
每个表空间由一个或多个数据文件组成,不同表空间可以包含不同的数据对象。
7. 段(Segment):段是逻辑存储结构的基本单位,是指数据库中的一个连续空间。
每个表、索引等对象都占用一个或多个段。
8. 区(Extent):区是段的扩展单位,是一组连续的数据块。
一个段由多个区组成。
9. 块(Data Block):块是数据库存储的最小单位,通常是8KB大小。
每个数据文件由多个块组成。
以上组成部分之间的关系如下:- 实例与数据库:一个实例可以管理多个数据库,每个数据库都有自己的实例。
- 数据库与数据文件:一个数据库可以由一个或多个数据文件组成,每个数据文件存储数据库的实际数据。
- 实例与控制文件:一个实例通常有一个或多个控制文件,控制文件记录了数据库的结构和状态信息。
oracle数据库体系架构详解

oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,⼀开始从宏观上掌握它的物理组成、⽂件组成和各种⽂件组成。
掌握的越深⼊越好。
在实际⼯作遇到疑难问题,其实都可以归结到体系结构中来解释。
体系结构是对⼀个系统的框架描述。
是设计⼀个系统的宏观⼯作。
这好⽐建⼀栋⼤楼。
你⾸先应该以图纸的⽅式把整个⼤楼的体系架构描述出来。
然后⼀点点的往⾥⾯填充东西。
下⾯我们先以⼀个图解的⽅式对oracle体系结构有⼀个基本了解根据⽰图,便于我们记忆,⽰图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上⾯的实例(Instance)和下⾯的数据库(Database)及参数⽂件(parameter file)、密码⽂件(password file)和归档⽇志⽂件(archived logfiles)组成Oracle Server,所以整个⽰图可以理解成⼀个C/S架构。
Oracle Server由两个实体组成:实例(instance)与数据库(database)。
这两个实体是独⽴的,不过连接在⼀起。
在数据库创建过程中,实例⾸先被创建,然后才创建数据库。
在典型的单实例环境中,实例与数据库的关系是⼀对⼀的,⼀个实例连接⼀个数据库,实例与数据库也可以是多对⼀的关系,即不同计算机上的多个实例打开共享磁盘系统上的⼀个公⽤数据库。
这种多对⼀关系被称为实际应⽤群集(Real Application Clusters,RAC)RAC极⼤提⾼了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle⽹格(grid)概念的必备部分。
下⾯我们来详细看⼀下oracle数据库的体系架构Oracle体系架构主要有两⼤部分组成:数据库实例(Instance)和数据库⽂件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的⼼脏。
与Oracle性能关系最⼤的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常⽤的数据;2、⽇志缓冲区,提升了数据增删改的速度,减少磁盘的读写⽽加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执⾏速度。
第二章Oracle体系结构

2.表空间的使用
在数据库中使用多个表空间具有如下优势: (1)能够将数据字典与用户数据分离开来,避免 由于字典对象和用户对象保存在同一个数据文件 中而产生的1/0冲突。 (2)能够将回退数据与用户数据分离开来,避免 由于硬盘损坏而导致永久性的数据丢失。 (3)能够将表空间的数据文件分散保存到不同硬 盘上,平均分布物理1/0操作。
(4)LGWR日志文件写进程 该进程是日志缓冲区的管理进程,负责把日志缓冲区中 的日志项写入磁盘上的日志文件中。 (5)ARCH归档进程(archiver process) 该进程把已经填满的在线日志文件拷贝到一个指定的存 储设备上。 (6)RECO恢复进程 该进程是在具有分布式选项时使用的一个进程,主要用 于解决引用分布式事务时所出现的故障。 (7)LCKN封锁进程
2.4.2 进程
进程又称任务,是操作系统中一个极为重要的 概念。一个进程执行一组操作,完成一个特定 的任务。对Oracle数据库管理系统来说,进程由 用户进程、服务器进程和后台进程所组成。 进程与程序的区别在于前者是一个动态概念, 后者是一个静态实体;程序仅仅是指令的有序 集合,而进程则强调执行过程。进程可以动态 地创建,完成任务后即会消亡。
2.2.4 数据库块
数据库块也称逻辑块或Oracle块,它对应 磁盘上一个或多个物理块,它的大小由初 始化参数db_block_size(在文件init.ora中) 决定,典型的大小是2k。
Pckfree和Pctused两个参数用来优化数据 块空间的使用。 PCTFREE : 块 中 保 留 用 于 UPDATE 操作的空间百分比,当数据占用的空间达 到此上限时,新的数据将不能再插入到此 块中; PCTUSED:指定块中数据使用空间 的最低百分比;
Oracle体系结构研究

1 Orce的存 储 结 构 al
O al的存储 结构 分 为物 理存 储结 构 和逻辑 存储 结构 。 rc e
1 1 物 理 存 储 结 构 .
I l 数据文件l l 控制文件『联机 日志文件l 叫 I 卜 -
图 1 Orce 据 库 的 物 理 结 构 与 逻 辑 结 构 al数
摘 要 : 阐述 了 Orce al 数据库的基本 架构和 Orc 数据库理论 中的主要概 念。O al 体 系结构 由存储 结构 、 al e rce 内存结
构 和 进 程 结 构组 成 , 中 , 储 结 构 由 物 理 存 储 结 构 及 逻 辑 存 储 结 构 组 成 ; 其 存 内存 结 构 由 S A 和 P A 组 成 ; 程 结 构 G G 进
( ) a scin l事 务 缓 存 ) 这 是 一 个 完 全 事 务 支 4 Trn at a ( o : 持 的 缓存 策 略 , 能 在 J 环 境 中使 用 。 只 TA 每个 缓存 组 件 的缓 存 策 略 是 不 同 的 , 2列 出 了 各 个 表
2 结 束 语
实践 表 明 , b rae Hien t 缓存 只 有 在 你 可 以 驾 驭 它 , 且 并 条 件 合 适 的情 况 下 才 可 以 提 高性 能 , 挥 真 正 的优 势 。 如 发 果 不 了解 Hie ae缓 存 机 制 , 随意 使 用 , 能 会 造 成 一 bn t 就 可 些 难 以解 决 的错 误 。
lt h aa aeu ig Hie n t rme r o betp o r mmaial. u ig Hien t ah , rjcswhc e u e aeted tb s sn b r aefa wo k fro jc rg a t l c y s b r aecc e P oet ih rd c n t eitr cinwi h aa a ea piain t o x e t i r v d t eef in y o rjc p rt n .Thst ei i h ea t t t ed tb s p l t ,o s mee tn , n o h c o mp o e h f ce c fpoeto eai s i o i h ss s
Oracle数据库体系结构

Oracle数据库体系结构⼀、oracle数据库体系结构基本组成:Oracle server:⼀般情况下是⼀个instance和⼀个database组成⼀般:1个instance只能对应⼀个数据库。
特殊:1个数据库可以有多个instance(RAC)⼀台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应⼀个instance,也可以理解成每个数据库只有⼀个SID 。
利⽤DBCA建出的每个库都是相对独⽴的,在同⼀服务器上如果创建多库必须将环境变量的参数⽂件做区分,并且在对实例切换时需如下操作:connect ⽤户名/密码@实例的服务名1.1 oracle服务器和实例1.1.1实例由内存区和后台进程组成①内存区:数据库⾼速缓存、重做⽇志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)③注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执⾏库数据的输⼊、输出以及监控其它Oracle进程。
在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT),否则实例⽆法创建。
1.1.2服务器Oracle服务器由数据库实例和数据⽂件组成,也就是我们常说的数据库管理系统。
数据库服务器除了维护实例和数据库⽂件之外,还在⽤户建⽴与服务器的连接时启动服务器进程并分配PGA1.2 oracle数据库逻辑结构表空间:据库的基本逻辑结构,是⼀系列数据⽂件的集合;段:不同类型数据在数据库中占⽤的空间,有许多区组合⽽成;区:由连续的块组成,⽬的是为数据⼀次性预留⼀个较⼤的空间,oracle为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
张三 李燕
王五 马六 ……
男 女
男 男 ……
1981.3 1991.2
1990.3 1995.6 ……
销售部 人事部
销售部 销售部 ……
销售经理 招聘专员
销售专员 实习生 ……
Oracle体系结构 -- 概要
Instance
PGA Server process
Memory Structures (System Global Area) Server
Process Structures
User process
Database (Storage Structures)
Client
Oracle体系结构 -- 概要
Oracle 数据库服务器由一个Oracle 数据库(静态) 以及 一个或多个oracle实例(动态)组成。
内存结构 -- SGA
数据库缓冲区高速缓存 (database buffer cache)
– 存放从数据文件读取的数据块的副本
并行连接到实例的所有用户共享对数据库缓冲区高速缓存的访问,Oracle DB 用户进程第一次需要特定数据片段时,将在数据库缓冲区高速缓存中 搜索数据。 如果该进程在高速缓存中找到数据(称为高速缓存命中),则直接从内 存中读取数据。 如果进程在高速缓存中找不到数据(称为高速缓存未命中),则在访问 数据之前,必须将磁盘上的数据文件中的数据块复制到高速缓存中的缓 冲区中。 高速缓存命中时访问数据要比高速缓存未命中时访问数据快。
内存结构 -- SGA
Java 池 (java pool)
– 用于存储在JVM中所有特定会话的Java代码和数据。
内存结构 -- SGA
流池 (streams pool)
– 流池是从10g开始才增加的一个新的SGA结构。 – 流池会用于缓存流进程在数据库间移动/复制数据时使用的 队列消息。
注:Oracle Stream功能是为提高数据库的高可用性而设计的 Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析 成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数 据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术, 对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数 据库对象级甚至整个数据库的同步。
内存结构 -- SGA
共享池 (shared pool)
– Oracle DB 使用共享SQL 区域(以及PGA 中保留的专用SQL 区域)来表示它所运行的每个SQL 语句。共享SQL 区域包 含给定SQL 语句的语法分析树和执行计划, Oracle DB 可识 别两个用户执行相同SQL 语句的情况,从而为这些用户重 用共享SQL 区域。Oracle DB 通过为多次运行的SQL 语句使 用一个共享SQL 区域来节省内存。当许多用户运行同一个 应用程序时,同一SQL 语句通常会多次运行。
内存结构 -- SGA
共享池 (shared pool)
– 在SQL 语句语法分析期间,Oracle DB 会频繁访问数据字典, 因此在内存中指定了两个特殊的位置来存放字典数据。 – 一个区域称为“数据字典高速缓存”,包含数据字典表中 各表、列和权限的定义 – 另一个用于存放字典数据的区域称为“库高速缓存”,包 含语句文本、已进行语法分析的代码和执行计划 所有Oracle DB 用户进程都共享这两个高速缓存以便访问数据 字典信息。
内存结构 -- PGA
游标区(Cursor State)
– 游标区是一个动态的区域。当用户执行游标语句时,系统 就会在这个游标区内创建一个区域。当关闭游标时,这个 区域就会被释放。
注:游标是一种临时的数据库对象 游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集 是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创 建一次游标而重复使用若干次,比重复查询数据库要快的多。
工号 20110502 20140102 20150502 20160601 …… 姓名 张三 李燕 王五 马六 …… 性别 男 女 男 男 …… 出生年月 1981.3 1991.2 1990.3 1995.6 …… 所属部门 销售部 人事部 销售部 销售部 …… 所属岗位 销售经理 招聘专员 销售专员 实习生 ……
Oracle 体系结构
No.1 内存结构
本章目标
了解数据库概念 了解oracle体系结构概念 理解什么是SGA 理解什么是PGA
Oracle体系结构 -- 概要
数据库是什么?
– 简单的说数据库就是电子数据的文件存储仓库 – 数据库是按照数据结构来组织、存储和管理数据的仓库 – 用户可以对数据库的数据进行新增、删除、更新、查询等 操作
内存结构 -- PGA
会话区(User Session Data)
– 当用户进程与数据库建立会话时,系统会将这个用户的相 关权限查询出来,然后保存在这个会话区内。当用户进程 在访问数据时,系统就会核对会话区内的用户权限信息, 看看其是否具有相关的访问权限。由于系统将这个用户的 权限信息存放在内存上,所以其核对用户权限的速度非常 的快。 – 通常情况下,会话区内保存了会话所具有的权限、角色、 性能统计等信息。这个会话区一般都是由数据库进行自我 维护的,不需要人工干预。
本章总结
数据库就是电子数据的文件存储仓库 Oracle database 是一款关系数据库管理系统 Oracle数据库体系结构: – 1、内存结构
– 2、进程结构 – 3、存储结构
本章总结
内存结构
– 系统全局区(System Global Area,SGA): – 程序全局区(Program Global Areas,PGA):
内存结构 -- PGA
PGA包括:
– SQL工作区(SQL Working Areas) – 会话区(User Session Data)
– 堆栈区(Stack Space)
– 游标区(Cursor State)
内存结构 -- PGA
SQL工作区(SQL Working Areas) 包括
– 排序区、多表hash连接区,位图连接区,创建位图区 – 排序区:当用户需要对数据进行排序时,数据库系统会将 需要排序的数据保存到PGA程序缓存区中的排序区内,然 后再在这个排序区内对这些数据进行排序。通常排序区的 大小可以采用系统默认值,但是在一些大型应用中,可以 手工调整这个排序区的大小,以提高排序的性能。
– 实例由内存结构和后台进程构成; – 数据库包括物理结构和逻辑结构。
Oracle数据库体系结构: – 1、内存结构
– 2、进程结构 – 3、存储结构
Oracle体系结构 -- 内存结构
Oracle DB 针对各种用途创建和使用内存结构。
例如,使用内存来存储正在运行的程序代码、在各用户之间 共享的数据以及所连接的每个用户的专用数据区域。
内存结构 -- SGA
重做日志缓冲区 (redo log buffer)
– 是SGA 中的循环缓冲区,存放有关对数据库所做更改的信 息
服务器进程更改缓冲区高速缓存时,系统会生成重做条目,并将生成的 重做条目写入SGA 中的重做日志缓冲区。重做条目占用缓冲区中连续的 顺序空间。
内存结构 -- SGA
共享池 (shared pool)
– 包含库高速缓存、数据字典高速缓存、并行执行消息的缓 冲区以及用于系统控制的各种内存结构。
注:数据字典
– 数据库是数据的集合,数据库维护和管理这用户的数据,那么这些用 户数据表都存在哪里,用户的信息是怎样的,存储这些用户的数据的 路径在哪里,这些信息不属于用户的信息,却是数据库维护和管理用 户数据的核心,这些信息就是数据库的数据字典来维护的,数据库的 数据字典就汇集了这些数据库运行所需要的基础信息
内存结构 -- SGA
大型池 (large pool)
为以下内容提供大型内存分配: – 共享服务器的会话内存和Oracle XA 接口 – I/O 服务管理器(数据库)与事物管理器的接口标 准。Oracle、Informix、DB2和Sybase等各大数据库厂家都提 供对XA的支持
课后思考:
– SGA和PGA的区别?
本章结束!谢谢!
内存结构 -- PGA
堆栈区(Stack Space)
– 保存变量信息 – 保存着会话变量、SQL语句运行时的内存结构等重要信息
注:为了提高SQL语句的重用性,会在SQL语句中使用绑定变量。 简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入 不同的变量值,就可以满足不同的查询需求。
Oracle体系结构 -- 概要
Oracle数据库
– Oracle database 是一款关系数据库管理系统 – 关系数据库把一些复杂的数据结构归结为简单的二元关系 (即二维表格形式)。例如某单位的职工关系就是一个二元 关系表。
工号 姓名 性别 出生年月 所属部门 所属岗位
20110502 20140102
内存结构 -- SGA
SGA包括
– – – – – – 数据库缓冲区高速缓存 (database buffer cache) 重做日志缓冲区 (redo log buffer) 共享池 (shared pool) 大型池 (large pool) Java 池 (java pool) 流池 (streams pool)
一个实例有两个关联的基本内存结构:
– 系统全局区(System Global Area,SGA):
这些组件包含一个Oracle DB实例的数据和控制信息。SGA 由所有服 务进程和后台进程共享。