四、什么是Oracle数据库?(了解)

概要

Oracle DataBase是由两个部分组成

  1. 实例:实例是数据库启动时初始化的一组进程和内存结构

  2. 数据库:数据库则指的是用户存储数据的一些物理文件

4.1、数据库结构

4.2、内存结构

4.2.1内存结构

  1. 说明

​oracle实例内存结构由两部分组成SGA(系统全局区)和PGA(用户全局区)组成,SGA是一块共享的内存区域,也是最大的一块内存区域;PGA则是用户会话专有的内存区域,每个会话在服务器端都有一块专有的内存区域就是PGA

  1. SGA(SYSTEM Global Area )系统全局区。

    SGA是Oracle用来为实例存储数据和控制信息的共享内存区。SGA在启动Oracle实例时被分配,在关闭Oracle实例时被释放。 每个启动的Oracle实例都有自己的SGA。 SGA中的信息由数据库缓冲区、重做日志缓冲区和共享池(shared pool)等部分构成,每个部分都在实例启动时创建,而且大小都是固定的。

  2. PGA ( Program Global Area )程序全局区

    是一块包含一个服务进程的数据和控制信息的内存区域。它是Oracle 在一个服务进程启动是创建的,是非共享的。一个 Oracle 进程拥有一个 PGA 内存区。一个 PGA 也只能被拥有它的那个服务进程所访问,只有这个进程中的 Oracle 代码才能读写它。因此, PGA 中的结构是不需要Latch 保护的。我们可以设置所有服务进程的 PGA 内存总数受到实例分配的总体 PGA ( Aggregated PGA )限制。

4.3、进程结构

  1. 用户进程:在数据库用户请求连接到Oracle 服务器时启动

  2. 服务器进程:可以连接到Oracle实例,它在用户建立会话时启动

  3. 后台进程:再启动Oracle实例时启动

4.4、Oracle实例管理

  1. 系统监视器(SMON):出现故障后启动实例时执行崩溃恢复任务

  2. 进程监视器(PMON):用户进程失败时执行进程清理任务

  3. 数据库写进程(DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据文件

  4. 检查点(CKPT):通过更新数据库的所有数据文件和控制文件指出最新的检查点

  5. 日志写进程(LGWR):将重做日志条目写入磁盘

  6. 归档进程(ARCn):发生日志切换时将重做日志文件复制到归档存储器

4.5、数据库物理存储结构

4.5.1、概要

​ Oracle存储结构将分别从物理存储结构和逻辑存储结构两个维度来进行阐述

4.5.2、物理存储结构

  1. 结构图

  2. 说明

    控制文件:

      控制文件虽小,但作用重大,它包含指向数据库其余部分的指针(包括重做日志文件,数据文件,归档日志文件等的位置),存储重要的序列号和时间戳,存储RMAN备份的详细信息。控制文件一旦受损,那实例会立马终止,一般对数据文件的保护采用多路复用机制,就是冗余多份在不同物理位置。

    重做日志文件

      重做日志文件的作用在讲解内存和进程结构的时候有提到过,重做日志按时间顺序存储应用于数据库的一连串的变更向量(包含联机重做日志文件和归档日志文件)。由SMON在数据库启动时自动执行的实例恢复 和 磁盘损坏所要求的提取备份恢复都会应用到重做日志进行相应的数据恢复

      重做日志文件也建议进行多路复用,一个数据库至少要有两组重做日志文件。一组供LGWR进行写入,日志文件是固定大小,业务高峰期会很快写满,写满之后会切换到第二组上,在配置为归档模式的数据库中,这时由归档进程(ARCn)开始将第一组的内容进行归档备份,如此循环地进行写入和归档。需要注意的是,在归档进程还未对当前组的日志归档完毕前,是不允许LGWR对其进行重写的。

    数据文件

      数据文件存储着实际的数据,DBWn会将数据库缓冲区中的内容写入到这类文件中去,数据文件的大小和数量是不受限制的。Oracle从10g开始,创建一个数据库至少需要两个数据文件,一个用于SYSTEM表空间,该表空间用来存储数据字典;一个用于SYSAUX表空间,这个表空间用来存储一些数据字典的辅助数据。

      数据文件由一个个的Oracle块组成,这是Oracle的I/O基础单元,与操作系统块是不同的概念,Oracle块要比操作系统块大,这当然有处于性能的一些考虑,但我们考虑这样一种情况,当用户使用操作系统命令进行数据文件的备份的时候(假设1个Oracle块=8个操作系统块),已经复制了4个操作系统块,然后CPU被DBWn抢占了,DBWn又重新对这个Oracle块进行了更新,这时,当复制命令又得到了CPU时间去复制剩余的4个块的时候,就造成了整个Oracle块的数据不一致,所以,这也是在执行这种备份(用户自行备份)的时候,需要做一些额外处理,比如将表空间置为备份模式的原因。当然,使用RMAN是不存在这样的问题的,RMAN的备份机制是肯定可以得到数据一致的块的。(这块内容作了解即可)

      对于数据文件的保护,一般可进行定期备份,或者使用RAID也可以。

    实例参数文件

      这个文件存储了数据库所需的一些参数设置,比如各个内存区域的大小,可允许的最大进程数,最大会话数,控制文件的位置,数据库的名称等等,参数文件也是实例启动时首先要加载的文件。

    口令文件

      一般称为外部口令文件。一般的用户名和口令是存放在数据字典中,不会存放在这个文件中。在一些特殊场景下,比如实例还未启动,这时,我可能需要以管理员的身份登入系统去执行一些恢复或者启动操作,然而此时,数据字典由于实例还没启动是不存在的,这时就需要外部口令文件进行用户身份的验证。

    归档日志文件

      ARCn将联机重做日志文件会备份归档到这类文件中去,归档日志文件保留了数据更改的完整历史信息

4.5.3、逻辑存储结构

  1. 概要

    Oracle将其物理结构从逻辑存储结构中抽象出来,物理机构是系统管理员能看到的,逻辑结构则是用户所能感知到的。oracle数据库的逻辑结构包括方案(schema)对象,数据块(Date block),区间(Extent),段(Segment),和表空间(Tablespace)等.

  2. 结构图

  3. 说明

    1、表空间(TableSpace):

    3、段:

    ​ 段用于存储表空间中某一种特定的、具有独立存储结构的数据库对象的数据,它有一个或多个连续的区组成。当创建表、索引、簇等对象时,oracle就会为这些对象分配存储空间(即段),以便存储它们的数据。按照段中所存储的数据的特征、用途不同,可以分为以下几种:

    | 段类型 | 名称 | | :--- | :--- | | Table表段(数据段) | 存储表中的所有数据 | | Index索引段 | 存储表上最佳查询方式d的所有索引数据 | | Temporary 临时段 | 存储表排序操作期间建立的临时表的所有数据 | | Rollback回退段 | 存储修改之前的位置和值是Oracle的撤销机制 |

    4、

    ​ 区是由物理上连续存放的块所组成的。区 是oracle存储分配的最小单位。一个或多个块组成区,一个或多个区组成段。一个区只能属于一个数据文件

    5、块:

    块是数据库使用的IO最小单元,又称为逻辑块或Oracle块,一个数据库块对应一个或者多个物理块,大小由参数DB_BLOCK_SIZE,数据块的结构包括块头和存储区的两个部分块头,存储区

4.5、完整体系结构图

results matching ""

    No results matching ""