Oracle数据库基本原理梳理_第1页
Oracle数据库基本原理梳理_第2页
Oracle数据库基本原理梳理_第3页
Oracle数据库基本原理梳理_第4页
Oracle数据库基本原理梳理_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库基本原理目录概述41 逻辑结构 51.1 存储关系 61.1.1 存储结构 61.1.2 如何存储表数据 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.1SGA 164.1.1数据库高速缓冲区( Database Buffer Cache) 174.1.2重做日

2、志缓冲区( Redo Log Buffer) 184.1.3共享池( Shared Poo)l 184.1.4大池( Large Poo)l 184.1.5 JAVA 池( Java Poo)l 194.1.6流池( Streams Poo)l 194.2 PGA 194.2.1、Private SQL Area(私有 SQL区域) 204.2.2 SQL Work Area(s 工作区域) 204.3 PGA与 SGA的区别: 205 oracle 后台进程 215.1 DBWn(数据库写入进程 ) 215.2 SMON(系统监控、实例监控进程) 225.3 PMON(进程清理) 225.4

3、 CKPT(检查点进程) 22概述什么是 oracle? 平常所说的 Oracle 或 Oracle 数据库指的 是 Oracle 数据库管理系统 . 。Oracle 数据库管理系统是管理数据 库访问的计算机软件, 它由 Oracle 数据库和 Oracle 实例构成。 Oracle 系统体系结构由三部分组成:逻辑结构、物理结构和实 例。oracle 服务器是一个数据库管理系统,它包括一个oracle 实例(动态)和一个 oracle数据库(静态)。 oracle 实例是一个运行 的概念(如操作系统的进程),提供了一种访问 oracle 数据库的 方式,始终打开一个,并且只能打开一个 orac

4、le 数据库, oracle 实例有 SGA和一些后台服务进程组成,在后台服务进程当中, DBWn(数据库写入进程) 、 SMON(系统监控、 实例监控进程) 、PMON(进程清理)、 CKPT (检查点进程) LGWR (日志写进 程)是必备的后台进程。1 逻辑结构Oracle 的逻辑结构是一种层次结构。主要由:表空间、 段、区和数据块等概念组成。逻辑结构是面向用户的,用户使 用 Oracle 开发应用程序使用的就是逻辑结构。数据库存储层次 结构及其构成关系 ,结构对象也从数据块到表空间形成了不同层 次的粒度关系。1.1 存储关系Oracle 数据库逻辑上是由一个或多个表空间组成的,表空 间

5、物理上是由一个或多个数据文件组成的;而在逻辑上表空间 又是由一个或多个段组成的。在 Oracle 数据库中,通过为每种 不同的数据对象分配不同的段,来保存数据。例如 EMP 表的所 有数据会存放在 EMP 段中。在 Oracle 数据库中,段是由一个 或多个区组成的,而区又是由连续存储的数据块所 组成的。块 则是数据库的 I/O 最小的单位。1.1.1 存储结构数据库可划分为被称为表空间的逻辑存储单元。每一个表 空间可以包含很多的 Oracle 逻辑数据块。 DB_BLOCK_SIZE参 数 指定了逻辑块的大小。逻辑块的大小范围为2 KB 至 32 KB,默认大小为 8 KB。特定数目的相邻逻

6、辑块构成了一个区。为特定 逻辑结构分配 的一组区构成了一个段。 Oracle 数据块是逻辑 I/O 的最小单位。1.1.2 如何存储表数据创建表时,就会创建段来保存表数据。表空间包含一组 段。从逻辑上讲,表包含由列值组成的行。行最终将以行片段 的形式存储在数据库块中。之所以称为行片段,是因为某些情 况下,不可以在一个位置存储一整行。当插入行由于太长而不 适合单个块时,或者由于更 新而导致现有行大小超出了行的当 前空间时,就会发生这种情况。1.2 表空间( tablespace )Oracle 数据库( tablespace)是由若干个表空间构成的。任 何数据库对象在存储时都必须存储在某个表空间

7、中。表空间对 应于若干个磁盘文件,即表空间是由一个或多个磁盘文件 构成 的。表空间相当于操作系统中的文件夹,也是数据库逻辑结构 与物理文件之间的一个映 射。每个数据库至少有一个表空间, 表空间的大小等于所有从属于它的数据文件大小的总和。1.2.1 常用表空间( 1)系统表空间:存放系统数据,系统表空间在数据库创建 时自动创建。表空间名称为 SYSTEM。存放数据字典和视图以及 数据库结构等重要系统数据信息,在运行时如果SYSTEM 空间不足,对数据库影响会比较大,虽然在系统运行过程中可以通 过命令扩充空间,但还是会影响数据库的性能,因此有必要在 创建数据库时适当的把数据文件设置大一些。( 2)

8、TMEP 表空间:临时表空间,安装数据库时创建,可以 在运行时通过命令增大临时表空间。临时表空间的重要作用是 数据排序。比如当用户执行了诸如 Order by 等命令后,服务器 需要对所选取数据进行排序,如果数据很大,内存的排序区可能装不下太大数据,就需要把一些中间的排序结果写在硬盘的 临时表空间中。(3)用户表自定义空间:用户可以通过CREATE TABLESPACE命令创建表空间。1.2.2 表空间和数据文件的关系Oracle 数据库由一个或多个称为表空间的逻辑存储单元组 成, 表空间作为一个整体存储数据库中的所有数据,并且一个 表空间只能属于一个数据库。数据库的大小是该数 据库中所表 空

9、间 大小总和。从物理讲, Oracle 数据库内的每个表空间由一个或多数据 文件 组成,并且一个数据文件只能属于一个表空间。表空间大 是所有数据文件大小的总和。这些数据文件与 Oracle 运行所在 的操作系统的文件有一样的物理结构。数据库的所有数据都存储在数据文件中,数据库的每个表 空间都由这些数据文件组 成。例如,最简单的 Oracle 数据库只 有一个表空间和一个数据文件。1.3 段( Segment )段是由多个数据区构成的,它是为特定的数据库对象 (如表 段、索引段、回滚段、临时段) 分配的一系列数据区。段内包含 的数据区可以不连续,并且可以跨越多个文件。使用段的目的 是用来保存特定

10、对象。一个 Oracle 数据库有 4 种类型的段: 数据段:数据段也称为表段,它包含数据并且与表和簇相 关。当创建一个表时,系统自动创建一个以该表的名字命名的 数据段。索引段:包含了用于提高系统性能的索引。一旦建立索 引,系统自动创建一个以该索引的名字命名的索引段。回滚段:包含了回滚信息,并在数据库恢复期间使用,以 便为数据库提供读入一致性和回滚未提交的事务,即用来回滚 事务的数据空间。当一个事务开始处理时,系统为之分配回滚 段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其 管理方式既可以是自动的,也可以是手工的。临时段:它是 Oracle 在运行过程中自行创建的段。当一个 SQL语句

11、需要临时工作区时,由 Oracle 建立临时段。一旦语句执 行完毕,临时段的区间便退回给系统。1.4 数据区( Extent )数据区是一组连续的数据块。当一个表、回滚段或临时段 创建或需要附加空间时,系统总是为之分配一个新的数据区。 一个数据区不能跨越多个文件,因为它包含连续的数据块。使 用区的目的是用来保存特定数据类型的数据,也是表中数据增 长的基本单位。在 Oracle 数据库中,区是 Oracle 数据库中创建 对象时的最小分配单元, 分配空间就是以数据区为单位的。一个 Oracle 对象包含至少一个数据区。设置一个表或索引的存储参 数包含设置它的数据区大小。1.5 数据块( Data

12、 Blocks )数据块是 Oracle最小的存储单位, Oracle 数据存放在“块” 中。一个块占用一定的磁盘空间。特别注意的是,这里的 “块”是 Oracle 的“数据块”,不是操作系统的“块”。Oracle 每次请求数据的时候,都是以块为单位。也就是 说, Oracle每次请求的数据是块的整数倍。如果 Oracle 请求的数 据量不到一块, Oracle 也会读取整个块。所以说,“块”是 Oracle 读写数据的最小单位或者最基本的单位。块的标准大小由初始化参数 DB_BLOCK_SIZ指E 定。具有标 准大小的块称为标准块 (Standard Block)。块的大小和标准块的 大小不

13、同的块叫非标准块 (Nonstandard Block)。一个数据块的结构如下图所示:其中, Header 表示数据块头,记录了一些控制信息,帮助Oracle 数据库定位这个块,同时该部分还记录着块与块之间的 串联信息。 Free Space指的是当前处于空闲状态的空间。 Data 则 表示已经写入数据的空间,数据存放的方式是自底往上。2 物理结构Oracle 物理结构由多种物理文件组成。2.1 数据文件每一个 ORACLE数据库有一个或多个物理的数据文件 (data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库 结构 (如表、索引 )的数据物理地存储在数据库的数据文件中。数

14、 据文件有下列特征:(1)一个数据文件仅与一个数据库联系。(2)一旦建立,数据文件不能改变大小 .(3)一个表空间(数据库存储的逻辑单位)由一个或多个数据 文件组成。(4)数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。2.2 日志文件每一个数据库有两个或多个日志文件( redo log file )的组, 每一个日志文件组用于收集数据库日志。日志的主要功能是记 录对数据所作的修改,所以对数据库作的全部修改是记录在日 志中。在出现故障时,如果不能将修改数据永久地写入数据文 件,则可利用日志得到该修改,所以从不会丢失已有操作成 果。日志文件主要是保护数据库以防止故障。为了防止日志

15、文 件本身的故障, ORACLE允许镜象日志 (mirrored redo log) ,以致 可在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障恢复数据库时 使用,这些故障阻止将数据库数据写入到数据库的数据文件。 然而任何丢失的数据在下一次数据库打开时, ORACLE自动地应 用日志文件中的信息来恢复数据库数据文件。Oralce两种日志文件类型:联机日志文件 这是 Oracle 用来循环记录数据库改变的操作 系统文件归档日志文件 这是指为避免联机日志文件重写时丢失重复 数据而对联机日志文件所做的备份2.3 控制文件每一 ORACLE数据库有一个控制文件 (contro

16、l file) ,它记录数 据库的物理结构,包含下列信息类型:(1)数据库名;(2)数据库数据文件和日志文件的名字和位置;(3)数据库建立日期。为了安全起见,允许控制文件被镜像。每一次 ORACLE数据库的实例启动时,它的控制文件用于标 识数据库和日志文件,当着手数据库操作时它们必须被打开。 当数据库的物理组成更改时, ORACLE自动更改该数据库的控制 文件。数据恢复时,也要使用控制文件。2.4 参数文件除了构成 Oracle 数据库物理结构的三类主要文件外, Oracle 数据库还具有另外一种重要的文件:参数文件。参数文件记录 了 Oracle 数据库的基本参数信息,主要包括数据库名、控制

17、文 件所在路径、进程等。3 实例( instance )数据库实例(也称为服务器 Server)就是用来访问一个数据 库文件集的一个存储结构及后台进程的集合。它使一个单独的 数据库可以被多个实例访问(也就是 ORACLE并行服务器 OPS)。数据库启动时,系统首先在服务器内存中分配系统全局区( SGA),构成了 Oracle 的内存结构,然后启动若干个常驻内存 的操作系统进程,即组成了 Oracle 的进程结构,内存区域和后 台进程合称为一个 Oracle 实例。4 内存4.1SGA系统全局区( system global area,SGA)是一组包含了 Oracle 数据库数据及实例控制信息

18、的共享的内存结构。当多个用户并 发地连接到同一个实例后,这些用户将共享此实例SGA 中的数据。因此 SGA 也被称为共享全局区( shared global area)。SGA 越大系统的性能越好,但 SGA 过大也会起到反作 用。一般情况下, SGA 不应超过系统实际内存的 1/2 。但从 Oracle 9i 开始支持动态 SGA 特性,即无需关闭实例就可以改 变数据高速缓冲区、共享池和大池的大小。数据高速缓冲区、 共享池的大小也可以根据工作负载自动调整,但 SGA 的总大小 不能超过初始化参数 SGA_MAX_SIZE的 设置。如下图所示, SGA 包括三个子缓冲区:保留缓冲区、循环 缓冲

19、区和非标准大小块缓冲区。 SGA 包括以下结构:数据高速 缓冲区( Data Buffer Cache)、重做日志缓冲区( Redo Log Buffer)、共享池( Shared Pool)、 Java 池( Java Pool)、大池 ( Large Pool)、 流池( Stream Pool)4.1.1 数据库高速缓冲区( Database Buffer Cache )在 Oracle 中无论是读取还是修改数据,都是由服务器进程 在数据库高速缓冲区中完成的。数据库高速缓冲区的作用就是 用来缓存最近从数据库中读出的数据块,并可供其他客户进程 共享。用户进程查看数据时,首先检查需要的信息是

20、否在缓冲 区内,如果在缓冲区中,就可以直接访问。4.1.2 重做日志缓冲区( Redo Log Buffer )重做日志缓冲区用来记录对数据缓冲区数据进行的修改, 可以循环使用。当用户运行 DML(INSERT、 UPDATE、DELETE以) 及 DDL(CREAT、E ALTER、 DROP)语句时,会改变数据高速缓存 中的相应缓冲区。但是在修改这些缓冲区之前, Oracle 会自动 生成重做项,首先要将这些缓冲区的变化记载到“重做日志缓 冲区”中。重做日志缓冲区由一条一条的重做项构成,每条重 做项记载了修改的时间、被修改的块、修改位置以及新数据。 缓冲区被循环使用,当重做日志缓冲区填满时

21、,数据库系统将 重做日志缓冲区的内容写入日志文件。在系统发生故障时,可 以通过重做项重新执行对数据库的修改,实现对实例的恢复。4.1.3 共享池( Shared Pool)SGA 的共享池( Shared Pool)内包含了库缓存( Library Cache),数据字典缓冲区( Dictionary Cache),并行执行消息 缓冲区 ( Buffers for parallel execution messages),以及用于系统 控制的各种内存结构。4.1.4 大池( Large Pool)数据库管理员可以配置一个称为大型池( Large Pool)的可 选内存区域,供一次性大量的内存分

22、配使用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即进程全局区域,是一个内存区域,在

23、一个服务器进 程或后台进程启动是创建,包含服务器进程和后台进程的相关 数据和控制信息; PGA是特定于进程的非共享的内存区域,一 个 PGA 只能被拥有它的那个进程所访问; PGA不在 SGA中分 配。 PGA被细分为不同的区域,每个区域都有不同的作用,包 括 Private SQL Area和 SQL Work Areas等。4.2.1、 Private SQL Area(私有 SQL区域)一个私有 SQL区域包含关于一个已解析的 SQL语句和其他特 定于会话的信息的处理信息。当服务器进程执行SQL或 PL/SQL代码时,进程使用专用 SQL区域存储绑定变量值,查询执行状 态信息和查询执行工

24、作区域。一个私有SQL区域又被划分为run-time area 和 persistent area 两个子区域。The run-time area :即运行时区域,该区域包含查询执行状 态信息。The persistent area:即持久化区域,该区域包含绑定变量 值。在执行语句时向 SQL语句提供绑定变量值。只有当游标关 闭时,持久区域才被释放。4.2.2 SQL Work Areas(工作区域)工作区域是用于内存密集型操作的 PGA内存的私有分配。 当启用自动 PGA内存管理时,数据库会自动调整工作区域的大 小,也可以手动控制和调整工作区域的大小。4.3 PGA 与 SGA 的区别 :P

25、GA(程序缓存区 )与 SGA(系统全局区 )类似,都是 Oracle数据 库系统为会话在服务器内存中分配的区域。不过两者的作用不 同,共享程度也不同。SGA系统全局区顾名思义,是对系统内的所有进程都是共 享的。当多个用户同时连接到一个例程时,所有的用户进程、 服务进程都可以共享使用这个 SGA区。为此这个 SGA的主要用 途就是为不同用户之间的进程与服务进程提供一个交流的平 台。除了这个作用,另外有一个重要的作用就是各种数据库的 操作主要就是在这个 SGA区内完成。而 PGA 程序缓冲区则主要是为了某个用户进程所服务的。 这个内存区不是共享的,只有这个用户的服务进程本身才能够 访问它自己的 PGA区。5 oracle 后台进程5.1 DBWn( 数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论