oracle体系结构-内存篇

合集下载

体系架构.

体系架构.
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数据库的体系结构

第2章 Oracle数据库的体系结构
数据库是存储数据的多个物理文件的集合 ,它 是静态的、永久的。 数据库实例是用户访问数据库的中间层,是使 用数据库的手段,它为用户访问数据库提供了 必要的内存空间和多个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 数据库物理结构
数据文件是用于存储数据库数据的物理文件,它 由若干个操作系统文件组成,在数据文件中存储 着用户数据(表、索引等)、数据字典以及回滚段 数据等。
数据文件和表空间有着密切的关系,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数据库体系结构的组成及其关系。

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中,体系结构是重中之重,⼀开始从宏观上掌握它的物理组成、⽂件组成和各种⽂件组成。

掌握的越深⼊越好。

在实际⼯作遇到疑难问题,其实都可以归结到体系结构中来解释。

体系结构是对⼀个系统的框架描述。

是设计⼀个系统的宏观⼯作。

这好⽐建⼀栋⼤楼。

你⾸先应该以图纸的⽅式把整个⼤楼的体系架构描述出来。

然后⼀点点的往⾥⾯填充东西。

下⾯我们先以⼀个图解的⽅式对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体系结构

第二章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体系结构研究

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数据库体系结构基本组成: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为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。

Oracle体系结构研究

Oracle体系结构研究

Oracle体系结构研究摘要:阐述了Oracle数据库的基本架构和Oracle数据库理论中的主要概念。

Oracle体系结构由存储结构、内存结构和进程结构组成,其中,存储结构由物理存储结构及逻辑存储结构组成;内存结构由SGA和PGA组成;进程结构由用户进程和Oracle进程组成。

关键词:ORACLE体系结构;存储结构;内存结构;进程结构1 Oracle的存储结构Oracle的存储结构分为物理存储结构和逻辑存储结构。

1.1 物理存储结构主要由数据文件、控制文件、联机日志文件及数据库实例构成。

Oracle数据库中有许多初始化参数,这些参数用于对整个数据库进行设置或调整,如设置数据库名、数据库块大小、控制文件的名称和位置、数据库实例数等信息。

Oracle 把这些参数存放在一个文件中,这个文件就叫初始化参数文件。

启动数据库时,Oracle会读取参数文件中的值,并根据这些值对数据库实例(instance)进行设置。

具体说是Oracle先从初始化参数文件中获得控制文件的名称及位置,打开控制文件,然后再从控制文件中读取数据文件和联机日志文件的名称和位置,打开它们,因为表、索引等对象的数据就存放在数据文件中,从而就打开了数据库。

1.1.1 控制文件Oracle启动数据库时会访问控制文件,控制文件是在创建数据库的时候创建的,它是一个很小的二进制文件,记录了数据库的名称、创建数据库的时间、数据文件的名称和位置、联机日志文件的名称和位置及表空间等信息。

所以说一个数据库的控制文件是相当重要的,一旦被损坏,数据库将不能正常启动和运行。

所以DBA应该镜像控制文件,把每个镜像的控制文件分布到不同的物理磁盘上,发生灾难时既使其中一个控制文件被损坏,也不会使整个数据库限于瘫痪。

1.1.2 数据文件当用户在Oracle中创建数据库的时候,就创建了一个或多个数据文件,表和索引等对象的数据就物理地存放在数据文件中。

一个表的数据可能会存储在多个数据文件中,但一个数据文件只能属于一个数据库。

第4章ORACLE服务器体系结构和组成

第4章ORACLE服务器体系结构和组成
FROM PFILE=‘D:\ORACLE\…\TEMPFILE\…’;
PFILE子句是必需的,SPFILE子句可以省略, 那么SPFILE存贮在缺省位置 <ORACLE_HOME>\DATABASE\下。
ORACLE的体系构造 物理构 造
• 查看效劳器端参数文件
• 在SQL PLUS中使用SHOW PARAMETERS命令
• 修改效劳器端参数文件
• 在9i中直接手工修改本地参数化文件是没 用的,不会改变数据库的设置。
• 利用ALTER SYSTEM SET parameter = value语句可以在数据库运行时修改初始化参 数的值。
• 在SET子句中可以使用SCOPE选项来设 置影响范围,所谓影响范围就是ALTER SYSTEM语句对参数的修改是仅对当前实例 有效〔记录在内存中〕,还是永久有效〔记 录在SPFILE中〕。
日志缓冲存储区〔Log Buffer〕 日志缓冲区
以记录项的形式备份数据库缓
冲区中被修改的缓冲块,这些
记录将被写到日志文件中。
LOG_BUFFER
日志文件
确定日志缓冲区的大小。
ORACLE的体系构造 图示
PMON LCKn RECO SMON
共享池
SGA
数据缓冲区 日志缓冲区
体系构造
Server UUUssseeerrr
当一个日志文件组被填满时
关闭数据库时
ORACLE的体系构造 物理构 造
日志文件写操作图示
Log File 2
ORACLE的体系构造 物理构 造
镜像日志文件是为防止日志文件的丧失,在 不同磁盘上同时维护两个或多个联机日志文件 的副本。 其特点如下: 每个日志文件组至少包含两个日志文件成员。 每组的成员数目一样。 同组的所有成员同时被修改。 同组的成员大小一样,不同组的成员大小可 不同。

oracle_sga内存详解

oracle_sga内存详解

四:有多少并发连接
五:应用是OLTP类型还是OLAP类型
根据这几个问题的答案,我们可以粗略地为系统估计一下内存设置。那我们现在来逐个问题地讨论,首先物理内存多大是最容易回答的一个问题,然后操作系统估计使用多少内存呢?从经验上看,不会太多,通常应该在200M以内(不包含大量进程PCB)。
sort_area_size integer 65536
SQL>
在这部分内存中我们最关注的通常是sort_area_size,这是当查询需要排序的时候,数据库会话将使用这部分内存进行排序,当内存大小不足的时候,使用临时表空间进行磁盘排序。由于磁盘排序效率和内存排序效率相差好几个数量级,所以这个参数的设置很重要。这四个参数都是针对会话进行设置的,是单个会话使用的内存的大小,而不是整个数据库使用的。偶尔会看见有人误解了这个参数以为是整个数据库使用的大小,这是极其严重的错误。假如设置了MTS,则UGA被分配在large_pool_size,也就是说放在了共享内存里面,不同进程(线程)之间可以共享这部分内存。在这个基础上,我们假设数据库存在并发执行server process为100个,根据上面我们4个参数在oracle8.1.7下的默认值,我们来计算独立模式下PGA的大致大小。由于会话并不会经常使用create_bitmap_area_size、bitmap_merge_area_size,所以我们通常不对四个参数求和。在考虑到除这四个参数外会话所保存的变量、堆栈等信息,我们估计为2M,则100个进程最大可能使用200M的PGA。
Large_pool_size
对于大缓冲池的设置,假如不使用MTS,建议在20—30M 足够了。这部分主要用来保存并行查询时候的一些信息,还有就是RMAN在备份的时候可能会使用到。如果设置了MTS,则由于UGA部分要移入这里,则需要具体根据server process数量和相关会话内存参数的设置来综合考虑这部分大小的设置。

体系架构

体系架构
重做日志是Oracle的日记帐, 重做日志是Oracle的日记帐,负责记录所有用 Oracle的日记帐 户对象或系统变更的信息; 户对象或系统变更的信息;记录所有对数据 库数据的修改,以备恢复数据时使用。 库数据的修改,以备恢复数据时使用。其特 点如下: 点如下:
• • •
每一个数据库至少包含两个日志文件组。 每一个数据库至少包含两个日志文件组。 日志文件组以循环方式进行写操作。 日志文件组以循环方式进行写操作。 每一个日志文件成员对应一个物理文件。 每一个日志文件成员对应一个物理文件。
数据文件
数据缓冲区
DB_BLOCK_BUFFERS 确定数据块的数目。 确定数据块的数目。
日志缓冲存储区(Log Buffer)
以记录项的形式备份数据库缓冲 区中被修改的缓冲块, 区中被修改的缓冲块,这些记录 将被写到日志文件中。 将被写到日志文件中。 LOG_BUFFER 确定日志缓冲区的大小。 确定日志缓冲区的大小。
镜像日志文件
镜像日志文件图示 Group 1 Group 2
Log File 1 Disk 1 Member 1.1 Log File 3 Disk 2 Member 1.2
Log File 2
Member 2.1 Log File 4
Member 2.2
控制文件(Control File)
是一个较小的二进制文件,用于描述数据库结构。 是一个较小的二进制文件,用于描述数据库结构。
日志文件
日志缓冲区
进 程
• 用户进程 • 服务器进程 • 后台进程
ORACLE的体系结构
进 程
ORACLE实例分为单进程实例和 多进程实例两种。 • SINGLE_PROCESS 单进程/多进程实例的转换。

oracle第一篇:oracle12c体系结构

oracle第一篇:oracle12c体系结构

oracle第⼀篇:oracle12c体系结构1、oracle12c的体系结构:内存(逻辑)结构:SGA可以分为数据缓冲区、⽇志缓冲区、共享池、⼤型池、JAVA池、流池。

数据缓冲区(data buffer cache):oracle读取数据的缓存区,执⾏数据的临时存储空间以及修改未提交时,未写⼊磁盘的脏数据。

主要作⽤是提⾼数据的查询速度和减少磁盘的I/O操作;⽇志缓冲区(redo log buffer cache):在执⾏sql语句之前,需要计算出sql执⾏语句的改变向量,并将该向量以⽇志的形式临时存储在该内存区域,然后再去数据缓冲区进⾏数据的更改。

共享池(share pool):共享池分为库缓存、数据字典缓存、sql查询和pl/sql函数结果查询缓存;共享池的⼤⼩9i版本之后就可以直接调整⼤⼩。

库缓存:⽤于临时存储近期已经分过的代码,再次使⽤时就不需要对该代码进⾏分析,直接调⽤。

提⾼语法的执⾏效率。

数据字典缓存:⽤于对近期调⽤的数据字典进⾏缓存,并且数据字典缓存的分配是在库缓存之后的,所以只要库缓存没问题,数据字典缓存也就没问题。

sql查询和pl/sql函数结果查询缓存:当同⼀会话或者多个不同的会话执⾏多次,就会将该查询的结果存储在内存中,当下⼀次查询时直接去调⽤该查询的结果。

在运⽤该执⾏结果之前缓存机制会⾃动的检查查询中的表等对象是否发⽣了变化。

如果变化就会重新查询,使⽤重新查询得到的结果。

⼤型池(large pool):可选择型的内存区域,主要⽤于共享服务器进程的使⽤。

如果未分配再⽤⼑该内存时会在共享池中进⾏分配。

JAVA池(java pool):在运⾏java过程时才使⽤到java池,它作⽤于java对象所需要的堆空间。

但是实际java的实际运⾏还是在数据缓存区。

流池(stream pool):⽤于在redo log中获取⽇志向量,并重新构造执⾏语句,在远程数据库执⾏。

⽽在redo log中提取更改的进程以及应⽤更改的进程将⽤到内存,该内存即是流池。

Oracle体系结构(共79张PPT)

Oracle体系结构(共79张PPT)

32
日期
第32页,共79页。
分析
在执行COMMIT操作时,后台进程LGWR要 开始工作,所以事务变化被记载到重做日志 中。因为只有在发出检查点时,才会将SCN 值写入控制文件和数据文件头部,所以控制 文件和数据文件的SCN值保持一致,并且存 放的是先前检查点的SCN值。
控制文件和数据文件的SCN值一致,与重做 日志不一致!
28
日期
第28页,共79页。
CKPT工作原理
当Oracle发出检查点时,系统会将检查点时刻的
SCN值写入到控制文件和数据文件头部,同时还会促
使DBWR进程将所有脏缓冲区写入到数据文件中。
29
日期
第29页,共79页。
检查点工作机制
在DBWR进程工作之前,LGWR进程首 先将重做日志缓冲区内容写入到重做日志文 件,即该时刻的SCN值会被写入重做日志。
Oracle使用的主要内存结构包括系统全局 区SGA和程序全局区PGA。
9
日期
第9页,共79页。
SGA区
日期
10 第10页,共79页。
数据高速缓存
保存最近从数据文件中读取的数据块。分为 脏缓存块、空闲缓存块和命中缓存块三类。
脏缓冲块:当执行INSERT、UPDATE以及 DELETE操作时,服务器进程修改数据高速 缓存的相应数据,此时缓冲区的内容与数据 文件中的内容不一致。
当CKPT进程工作的时候,会将当前时 刻的SCN值写入数据文件和控制文件。
在发出检查点时刻,数据文件、控制文 件和重做日志的SCN值完全一致。
30
日期
第30页,共79页。
系统恢复
当运行Oracle Server时,在访问数据 文件、控制文件和重做日志时,Oracle会定 期检查并比较每种文件的SCN值,确定文件 是否损坏、系统是否出现异常,最终确定系 统是否需要进行恢复。

Oracle体系结构详解

Oracle体系结构详解

Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。

如图:一、基本组成:Oracle server:一般情况下是一个instance和一个database组成1个instance只能对应一个数据库。

特殊:1个数据库可以有多个instance(rac)一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID 。

利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作:connect 用户名/密码@实例的服务名Oracle Instance:是由内存(SGA)和后台进程(backupground Process)组成通过instance来访问database一个实例只能打开一个数据库Oracle database:数据文件(Data files):数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等重做日志(Redo log):“先记后写”重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。

控制文件(Control file)控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。

归档日志(Archive log):是非活动(Inactive)重做日志的备份。

口令文件(Password file):用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)参数文件(Parameter file):用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)(二进制文件放入裸设备,引入spfile)User and Server process :在执行sql语句时产生的进程,每一个连接,oracle server创建一个session,产生一个server process,在client发起一个connection时就产生了一个user process。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20150502 20160601 ……
张三 李燕
王五 马六 ……
男 女
男 男 ……
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 由所有服 务进程和后台进程共享。
相关文档
最新文档