Oracle数据库基本原理梳理

上传人:jin****ng 文档编号:110347920 上传时间:2022-06-18 格式:DOC 页数:21 大小:583KB
返回 下载 相关 举报
Oracle数据库基本原理梳理_第1页
第1页 / 共21页
Oracle数据库基本原理梳理_第2页
第2页 / 共21页
Oracle数据库基本原理梳理_第3页
第3页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库基本原理目录概述 41 逻辑结构 51.1 存储关系 61.1.1 存储结构 6如何存储表数据 71.2 表空间(tablespace) 81.2.1 常用表空间 81.2.2 表空间和数据文件的关系 91.3 段(Segment) 101.4 数据区(Extent) 111.5 数据块(Data Blocks) 112 物理结构 122.1 数据文件132.2 日志文件142.3 控制文件152.4参数文件153 实例(instance) 164 内存164.1SGA164.1.1 数据库高速缓冲区(DatabaseBuffer Cache) 174.1.2 重做日志缓冲区(Redo Log Buffer) 184.1.3 共享池(Shared Pool) 184.1.4 大池(Large Pool) 184.1.5 JAVA 池(Java Pool)194.1.6 流池(Streams Pool)194.2 PGA19、Private SQL Area (私有 SQL 区域)204.2.2 SQL Work Areas (工作区域)204.3 PGA 与 SGA 的区别:205 oracle 后台进程 215.1 DBWn(数据库写入进程)215.2 SMON (系统监控、实例监控进程)225.3 PMON (进程清理)225.4 CKPT (检查点进程)22概述什么是 oracle? 平常所说的 Oracle 或 Oracle 数据库指的 是Oracle数据库管理系统。Oracle数据库管理系统是管理数据 库访问的计算机软件,它由 Oracle 数据库和 Oracle 实例构成。 Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实 例。日志文件数据文件数据库oracle服务器是一个数据库管理系统,它包括一个oracle实用户进程服务器进程数据文件控制文件日志文件数据立件控制文件后台进程PHON SMON DBWR LGWR CKPT 其他归档日志文件卷数文件口令文件SGA共享迪数据缓冲区j日志缓冲区|实例内存结构例(动态)和一个 oracle 数据库(静态)。 oracle 实例是一个运行 的概念(如操作系统的进程),提供了一种访问oracle数据库的 方式,始终打开一个,并且只能打开一个oracle数据库,oracle 实例有 SGA 和一些后台服务进程组成,在后台服务进程当中,DBWn (数据库写入进程)、SMON (系统监控、实例监控进程)、PMON (进程清理)、CKPT (检查点进程)LGWR (日志写进 程)是必备的后台进程。1 逻辑结构Oracle 的逻辑结构是一种层次结构。主要由:表空间、 段、区和数据块等概念组成。逻辑结构是面向用户的,用户使 用 Oracle 开发应用程序使用的就是逻辑结构。数据库存储层次 结构及其构成关系,结构对象也从数据块到表空间形成了不同层 次的粒度关系。* Hi1 ;1门如:口:礎和汀上敌齬库啣2酚gOracle 诬”燃:忙门H热据啟闽wm临卜11庚数融黒1.1 存储关系Oracle 数据库逻辑上是由一个或多个表空间组成的,表空 间物理上是由一个或多个数据文件组成的;而在逻辑上表空间 又是由一个或多个段组成的。在 Oracle 数据库中,通过为每种 不同的数据对象分配不同的段,来保存数据。例如 EMP 表的所 有数据会存放在 EMP 段中。在 Oracle 数据库中,段是由一个 或多个区组成的,而区又是由连续存储的数据块所 组成的。块 则是数据库的 I/O 最小的单位。1.1.1 存储结构数据库可划分为被称为表空间的逻辑存储单元。每一个表 空间可以包含很多的Oracle逻辑数据块。DB_BLOCK_SIZE参数 指定了逻辑块的大小。逻辑块的大小范围为2 KB至32 KB,默 认大小为8 KB。特定数目的相邻逻辑块构成了一个区。为特定 逻辑结构分配 的一组区构成了一个段。 Oracle 数据块是逻辑 I/O 的最小单位。1.1.2 如何存储表数据创建表时,就会创建段来保存表数据。表空间包含一组 段。从逻辑上讲,表包含由列值组成的行。行最终将以行片段 的形式存储在数据库块中。之所以称为行片段,是因为某些情 况下,不可以在一个位置存储一整行。当插入行由于太长而不 适合单个块时,或者由于更 新而导致现有行大小超出了行的当 前空间时,就会发生这种情况。1.2 表空间(tablespace)Oracle数据库(tablespace)是由若干个表空间构成的。任 何数据库对象在存储时都必须存储在某个表空间中。表空间对 应于若干个磁盘文件,即表空间是由一个或多个磁盘文件 构成 的。表空间相当于操作系统中的文件夹,也是数据库逻辑结构 与物理文件之间的一个映 射。每个数据库至少有一个表空间, 表空间的大小等于所有从属于它的数据文件大小的总和。1.2.1 常用表空间(1)系统表空间:存放系统数据,系统表空间在数据库创建 时自动创建。表空间名称为SYSTEM。存放数据字典和视图以及 数据库结构等重要系统数据信息,在运行时如果 SYSTEM 空间 不足,对数据库影响会比较大,虽然在系统运行过程中可以通 过命令扩充空间,但还是会影响数据库的性能,因此有必要在 创建数据库时适当的把数据文件设置大一些。(2)TMEP 表空间:临时表空间,安装数据库时创建,可以 在运行时通过命令增大临时表空间。临时表空间的重要作用是 数据排序。比如当用户执行了诸如 Order by 等命令后,服务器 需要对所选取数据进行排序,如果数据很大,内存的排序区可 能装不下太大数据,就需要把一些中间的排序结果写在硬盘的 临时表空间中。(3)用户表自定义空间:用户可以通过 CREATE TABLESPACE 命令创建表空间。1.2.2 表空间和数据文件的关系Oracle 数据库由一个或多个称为表空间的逻辑存储单元组 成, 表空间作为一个整体存储数据库中的所有数据,并且一个 表空间只能属于一个数据库。数据库的大小是该数 据库中所表 空间 大小总和。从物理讲,Oracle数据库内的每个表空间由一个或多数据 文件 组成,并且一个数据文件只能属于一个表空间。表空间大 是所有数据文件大小的总和。这些数据文件与 Oracle 运行所在 的操作系统的文件有一样的物理结构。数据库的所有数据都存储在数据文件中,数据库的每个表 空间都由这些数据文件组 成。例如,最简单的 Oracle 数据库只 有一个表空间和一个数据文件。1.3 段(Segment)段是由多个数据区构成的,它是为特定的数据库对象(如表 段、索引段、回滚段、临时段)分配的一系列数据区。段内包含 的数据区可以不连续,并且可以跨越多个文件。使用段的目的 是用来保存特定对象。一个 Oracle 数据库有 4 种类型的段:数据段:数据段也称为表段,它包含数据并且与表和簇相 关。当创建一个表时,系统自动创建一个以该表的名字命名的 数据段。索引段:包含了用于提高系统性能的索引。一旦建立索 引,系统自动创建一个以该索引的名字命名的索引段。回滚段:包含了回滚信息,并在数据库恢复期间使用,以 便为数据库提供读入一致性和回滚未提交的事务,即用来回滚 事务的数据空间。当一个事务开始处理时,系统为之分配回滚 段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其 管理方式既可以是自动的,也可以是手工的。临时段:它是Oracle在运行过程中自行创建的段。当一个 SQL语句需要临时工作区时,由Oracle建立临时段。一旦语句执 行完毕,临时段的区间便退回给系统。1.4 数据区(Extent)数据区是一组连续的数据块。当一个表、回滚段或临时段 创建或需要附加空间时,系统总是为之分配一个新的数据区。 一个数据区不能跨越多个文件,因为它包含连续的数据块。使 用区的目的是用来保存特定数据类型的数据,也是表中数据增 长的基本单位。在 Oracle 数据库中,区是 Oracle 数据库中创建 对象时的最小分配单元,分配空间就是以数据区为单位的。一个 Oracle 对象包含至少一个数据区。设置一个表或索引的存储参 数包含设置它的数据区大小。1.5 数据块( Data Blocks)数据块是Oracle最小的存储单位,Oracle数据存放在“块”中。一个块占用一定的磁盘空间。特别注意的是,这里的“块”是 Oracle 的“数据块”,不是操作系统的“块”。Oracle 每次请求数据的时候,都是以块为单位。也就是说,Oracle每次请求的数据是块的整数倍。如果Oracle请求的数据量不到一块,Oracle也会读取整个块。所以说,“块”是Oracle 读写数据的最小单位或者最基本的单位。块的标准大小由初始化参数 DB_BLOCK_SIZE 指定。具有标 准大小的块称为标准块(Standard Block)。块的大小和标准块的 大小不同的块叫非标准块(Nonstandard Block)。一个数据块的结构如下图所示:其中, Header 表示数据块头,记录了一些控制信息,帮助Oracle 数据库定位这个块,同时该部分还记录着块与块之间的串联信息。Free Space指的是当前处于空闲状态的空间。Data则表示已经写入数据的空间,数据存放的方式是自底往上。2 物理结构Oracle 物理结构由多种物理文件组成。2.1数据文件每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库 结构(如表、索引)的数据物理地存储在数据库的数据文件中。数 据文件有下列特征:(1)一个数据文件仅与一个数据库联系。(2)一旦建立,数据文件不能改变大小.(3)一个表空间(数据库存储的逻辑单位)由一个或多个数据 文件组成。(4)数据文件中的数据在需要时可以读取并存储在ORACLE内 存储区中。2.2日志文件每一个数据库有两个或多个日志文件(redo log file)的组, 每一个日志文件组用于收集数据库日志。日志的主要功能是记 录对数据所作的修改,所以对数据库作的全部修改是记录在日 志中。在出现故障时,如果不能将修改数据永久地写入数据文 件,则可利用日志得到该修改,所以从不会丢失已有操作成 果。日志文件主要是保护数据库以防止故障。为了防止日志文 件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致 可在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障恢复数据库时 使用,这些故障阻止将数据库数据写入到数据库的数据文件。 然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应 用日志文件中的信息来恢复数据库数据文件。Oralce 两种日志文件类型:联机日志文件 这是Oracle用来循环记录数据库改变的操作 系统文件归档日志文件 这是指为避免联机日志文件重写时丢失重复 数据而对联机日志文件所做的备份2.3 控制文件每一 ORACLE数据库有一个控制文件(control file),它记录数 据库的物理结构,包含下列信息类型:(1)数据库名;(2)数据库数据文件和日志文件的名字和位置;(3)数据库建立日期。为了安全起见,允许控制文件被镜像。每一次ORACLE数据库的实例启动时,它的控制文件用于标 识数据库和日志文件,当着手数据库操作时它们必须被打开。 当数据库的物理组成更改时,ORACLE自动更改该数据库的控制 文件。数据恢复时,也要使用控制文件。2.4 参数文件除了构成Oracle数据库物理结构的三类主要文件外,Oracle 数据库还具有另外一种重要的文件:参数文件。参数文件记录 了 Oracle 数据库的基本参数信息,主要包括数据库名、控制文 件所在路径、进程等。3 实例( instance)数据库实例(也称为服务器Server )就是用来访问一个数据 库文件集的一个存储结构及后台进程的集合。它使一个单独的 数据库可以被多个实例访问(也就是ORACLE并行服务器- OPS)。数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),构成了 Oracle的内存结构,然后启动若干个常驻内存 的操作系统进程,即组成了 Oracle 的进程结构,内存区域和后 台进程合称为一个Oracle实例。4 内存4.1SGA系统全局区(system global area,SGA)是一组包含了 Oracle 数据库数据及实例控制信息的共享的内存结构。当多个用户并 发地连接到同一个实例后,这些用户将共享此实例 SGA 中的数 据。因此SGA也被称为共享全局区(shared global area)。SGA 越大系统的性能越好,但 SGA 过大也会起到反作 用。一般情况下, SGA 不应超过系统实际内存的 1/2。但从 Oracle 9i 开始支持动态 SGA 特性,即无需关闭实例就可以改 变数据高速缓冲区、共享池和大池的大小。数据高速缓冲区、 共享池的大小也可以根据工作负载自动调整,但 SGA 的总大小 不能超过初始化参数 SGA_MAX_SIZE 的设置。如下图所示,SGA包括三个子缓冲区:保留缓冲区、循环 缓冲区和非标准大小块缓冲区。SGA包括以下结构:数据高速 缓冲区(Data Buffer Cache)、重做日志缓冲区(Redo Log Buffer)、共享池(Shared Pool)、Java 池(Java Pool)、大池(Large Pool)、 流池(Stream Pool)犬池流迪Java 池闊2-1 SGA构示意图SGA重做日志=缓冲区共享池:数据库=高速缓冲区保留缓冲区循坏緩冲区驕萨小块服务进程1服勞逬程2丘台进程PGAPGA4.11数据库高速缓冲区(Database Buffer Cache)在 Oracle 中无论是读取还是修改数据,都是由服务器进程在数据库高速缓冲区中完成的。数据库高速缓冲区的作用就是 用来缓存最近从数据库中读出的数据块,并可供其他客户进程 共享。用户进程查看数据时,首先检查需要的信息是否在缓冲 区内,如果在缓冲区中,就可以直接访问。412重做日志缓冲区(Redo Log Buffer)重做日志缓冲区用来记录对数据缓冲区数据进行的修改, 可以循环使用。当用户运行DML(INSERT、UPDATE、DELETE)以 及DDL(CREATE、ALTER、DROP)语句时,会改变数据高速缓存 中的相应缓冲区。但是在修改这些缓冲区之前,Oracle会自动 生成重做项,首先要将这些缓冲区的变化记载到“重做日志缓 冲区”中。重做日志缓冲区由一条一条的重做项构成,每条重 做项记载了修改的时间、被修改的块、修改位置以及新数据。 缓冲区被循环使用,当重做日志缓冲区填满时,数据库系统将 重做日志缓冲区的内容写入日志文件。在系统发生故障时,可 以通过重做项重新执行对数据库的修改,实现对实例的恢复。413共享池(Shared Pool)SGA的共享池(Shared Pool)内包含了库缓存(Library Cache),数据字典缓冲区(Dictionary Cache),并行执行消息 缓冲区 (Buffers for parallel execution messages),以及用于系统 控制的各种内存结构。4.1.4 大池(Large Pool)数据库管理员可以配置一个称为大型池(Large Pool)的可 选内存区域,供一次性大量的内存分配使用4.1 5 JAVA 池(Java Pool)Java池,也是SGA中的一块可选内存区,它也属于SGA中 的可变区,用于存储所有会话特定的Java代码和和Java虚拟机 中的数据。该内存包括在结束调用时迁移到Java会话空间的 Java 对象。4.1 6 流池(Streams Pool)流池,也是可选内存区,属于SGA中的可变区。流池用于 存储缓冲队列消息,并为Oracle流捕获进程和应用程序提供内 存。流池仅供Oracle流使用。除非专门配置它,否则流池的大 小从0开始并根据 Oracle 流的需要动态增长。4.2 PGAPGA即进程全局区域,是一个内存区域,在一个服务器进 程或后台进程启动是创建,包含服务器进程和后台进程的相关 数据和控制信息;PGA是特定于进程的非共享的内存区域,一 个PGA只能被拥有它的那个进程所访问;PGA不在SGA中分 配。PGA被细分为不同的区域,每个区域都有不同的作用,包 括 Private SQL Area 和 SQL Work Areas 等。4.21、Private SQL Area (私有 SQL 区域)一个私有SQL区域包含关于一个已解析的SQL语句和其他特 定于会话的信息的处理信息。当服务器进程执行SQL或PL/SQL 代码时,进程使用专用SQL区域存储绑定变量值,查询执行状 态信息和查询执行工作区域。一个私有SQL区域又被划分为 run-time area 和 persistent area 两个子区域。The run-time area:即运行时区域,该区域包含查询执行状 态信息。The persistent area :即持久化区域,该区域包含绑定变量 值。在执行语句时向SQL语句提供绑定变量值。只有当游标关 闭时,持久区域才被释放。422 SQL Work Areas (工作区域)工作区域是用于内存密集型操作的PGA内存的私有分配。 当启用自动PGA内存管理时,数据库会自动调整工作区域的大 小,也可以手动控制和调整工作区域的大小。4.3 PGA与SGA的区别:PGA(程序缓存区)与SGA(系统全局区)类似,都是Oracle数据 库系统为会话在服务器内存中分配的区域。不过两者的作用不 同,共享程度也不同。SGA 系统全局区顾名思义,是对系统内的所有进程都是共 享的。当多个用户同时连接到一个例程时,所有的用户进程、 服务进程都可以共享使用这个SGA区。为此这个SGA的主要用 途就是为不同用户之间的进程与服务进程提供一个交流的平 台。除了这个作用,另外有一个重要的作用就是各种数据库的 操作主要就是在这个SGA区内完成。而PGA程序缓冲区则主要是为了某个用户进程所服务的。 这个内存区不是共享的,只有这个用户的服务进程本身才能够 访问它自己的PGA区。5 oracle 后台进程51 DBWn(数据库写入进程)负责把 buffer cache 内的脏数据写入数据文件。当 buffer cache 被修改了,就会标成脏数据。 DBWn 的主要 工作是把脏数据写入磁盘以保证buffer cache是干净的。用户进 程会产生脏数据,空余的缓冲区会减少。如果空闲的缓冲区太少, 用户进程从磁盘读block进缓冲区的时候就找不到空余的位置 了。DBWn管理buffer cache保证用户进程始终可以找到空闲的 位置。5.2 SMON (系统监控、实例监控进程)在实例关闭时,会清理临时段,整理空闲空间;实例非正常关闭 后,启动实例时,做实例恢复。5.3 PMON (进程清理)用户连接数据库,会产生一个会话分配一个服务器进程提供 服务,正常情况下,会话退出,释放资源。但是如果异常退出, 比如客户端死机,服务器进程不会正常退出,持有的资源还在不 断消耗,PMON进程会监控进程,一旦发现后,释放资源,回滚 事物:锁、内存等消耗释放。5.4 CKPT (检查点进程)ckpt 进程的作用,触发全局检查点,通过 DBWR 将高速缓存 中的所有脏块写入数据文件中;由于 DBWR 的机制,因此 lgwr (日志写进程)会先写,然后 dbwr 后写。当完全检查点被触发时,也就是ckpt被触发,经常触发会造成, 大量集中的 IO 操作,影响性能。数据一致性关库情况下,为了 保存数据,默认触发此进程;如果数据库突然掉电了,内存中的 大量脏块数据没了, Oracle 数据库启动后会检测,开启实例恢复, 实例恢复的起点,就是最近一次的检查点事件;因此Oracle引入 了增量检查点的概念,增量检查点,通知DBWR写脏块,将上次 检查点至今的脏块,放入高速缓存中的脏队列中,等到DBWR 进程自动触发条件写,然后每隔 3S,CKPT 进程检查脏队列,最 近一次的增量检查点记录 SCN 往前移动,减少实例恢复的前滚时 间。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!