欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 的体系结构

程序员文章站 2022-06-08 21:37:10
...

        数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制
        Oracle服务器提供开放、全面和综合的信息管理,它由Oracle数据库和Oracle实例组成。
如下图:
oracle 的体系结构

        管理数据库的后台进程和内存结构的集合称为 Oracle 实例
        Oracle 数据库是一个数据的集合,该集合被视为一个逻辑单元
oracle 的体系结构

在上图中PGA也属于内存结构,但是为了说明服务器进程和用户进程是一一对应的,所以将PGA画了出来。
在上图中,可以清晰地看出 实例是由 内存 + 后台进程 组成,而内存又包括系统全局区(SGA) + 程序全局区(PGA)。数据库则是由一些文件组成。

一、oracle实例:

  • Oracle 实例是内存结构和后台进程的集合
  • 启动Oracle 实例的过程,即:分配内存、启动后台进程
  • Oracle 实例的内存包括SGA和PGA
  • Oracle 实例的后台进程包括SMON、PMON、DBWR、LGWR、ARC、CKPT等。

(1) oracle的内存结构

oracle 的体系结构

①SGA:

数据库信息存储于SGA,由多个数据库进程共享
SGA包括:共享池、数据缓冲区、日志缓冲区、Large池、Java池、Stream池

  • 共享池、
            共享池是对SQL、PL/SQL程序进行语法分析、编译、生成执行计划,运行执行计划。下一次在调用一模一样的语句时(语句完全相同,区分大小写),直接在共享池中搜索执行计划即可。
            共享池由库缓存和数据字典缓存组成。
            共享池的大小直接影响数据库的性能。
            共享池对所有用户都是共享的。

  • 数据缓冲区、
            用于存储从磁盘数据文件中读入的数据,所有用户共享。
            服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。
            数据缓冲区的大小对数据库的读取速度有直接的影响。
            oracle不允许硬盘与用户直接打交道,所有的通讯必须通过数据缓冲区来实现,例如执行select操作,则是先将数据从硬盘中读入到数据缓冲区中,此后,再由数据缓冲区将数据返回给用户,在这之后对数据执行update、delete等操作都是对数据缓冲区进行的操作,经过一段时间后,数据缓冲区再将数据写回到硬盘中。

  • 日志缓冲区、
            日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
            当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
            相对来说,日志缓冲区对数据库的性能影响较小。
            通俗来说就是用户对数据库的dml、ddl等操作,除select外,的记录。

  • Large池、

        为了进行大的后台进程操作而分配的内存空间,主要指备份恢复、大型IO操作、并行查询等。
        姑且就叫大池,为了进行大的后台进程操作而分配的内存空间,主要指备份恢复、大型IO操作、并行查询等。

  • Java池、

        为了java应用而分配的内存空间。

  • Stream池

        为了stream应用而分配的内存空间。

②PGA (专用连接为主,是不共享的。)

        程序全局区(PGA)包含单个服务器进程所需的数据和控制信息,比如每个session传入的SQL绑定变量、以及对该session进行控制的控制信息。如果该session进行了排序或hash连接操作,也会使用PGA中的内存。 session就是oracle服务器与数据库的单个连接。
        PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息
        共享连接模式和专用连接模式,PGA的管理方式不同。现在共享连接模式已经十分少见了。
        大多情况下,采用专用连接模式。其产生的用户进程和服务器进程后面讲述。
插述oracle中三种重要进程:
oracle 的体系结构
一般而言,用户进程与服务器进程是一一对应的,当客户端的一个用户进程向服务器端发出请求后,服务器端就立马分配一个服务器进程与之保持联系,如下图:
oracle 的体系结构
         对专用连接来说,用户在客户端启动了一个应用程序,例如sql*plus,就是在客户端启动一个用户进程;与oracle服务器端连接成功后,会在服务器端生成一个服务器进程,该服务器进程作为用户进程的代理进程,代替客户端执行各种命令并把结果返回给客户端。

        用户进程一旦中止,服务器进程立刻中止。

        在9i以后实现了自动PGA管理,可以估计每个session所消耗的PGA的大小,自动分配。

( 2 )后台进程:

oracle 的体系结构

  • PMON 进程监控进程
    清理出现故障的进程。
    释放所有当前挂起的锁定。
    释放故障进程使用的资源。

  • SMON 系统监控进程
    在实例失败之后,重新打开数据库时自动恢复实例。
    整理数据文件的*空间,将相邻区域结合起来。
    释放不再使用的临时段。

  • DBWR 数据写入进程
    管理数据缓冲区,将最近使用过的块保留在内存中。
    将修改后的缓冲区数据写入数据文件中。

  • LGWR 日志写入进程
    负责将日志缓冲区中的日志数据写入日志文件。
    系统有多个日志文件,该进程以循环的方式将数据写入文件。

  • CKPT检查点进程:
    为了防止实例崩溃,为了尽快进行实例恢复的进程。
    检查点包括两种:完全检查点、增量检查点。

完全检查点只有下面两种情况下被触发:
1,用户发出 alter system checkpoint;
2,除了shutdown abort以外的其他方式正常关闭数据库。

增量检查点触发情况:
1,每隔三秒。
2,在线日志切换。

二、oracle的数据库:

Oracle 数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区
Oracle 数据库包括逻辑结构和物理结构

oracle 的体系结构

(1)物理结构

物理组件就是Oracle数据库所使用的操作系统物理文件。
主要物理文件可分为三类:
数据文件:数据文件用于存储数据库数据,如表、索引数
据等。
控制文件:控制文件是记录数据库物理结构的二进制文件。
在线日志文件:记录对数据库的所有修改信息,用于故障恢
复。

丢失这些文件,数据库不可以继续运行,需要进行介质恢
复。
非主要物理文件包括:
参数文件、密码文件、告警和跟踪文件、归档日志文件、备份文件
丢失这些文件,数据库仍然可以继续运行,不需要进行介质恢复。

(2)逻辑结构

数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle 的逻辑组件包括:
oracle 的体系结构

①表空间

  • 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。

  • 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。

  • 表空间的大小等于构成该表空间的所有数据文件大小之和。
    创建表空间的语法:

 create tablespace  表空间名 
        datafile  数据文件名 ‘数据文件存放路径\数据文件名.后缀’  
        [SIZE integer [K|M]]     [AUTOEXTEND [OFF|ON]];

—— [SIZE integer [K|M]]   指定表空间大小 size 10m
—— [AUTOEXTEND [OFF|ON]]  是否进行自动扩展  
  • 默认包含如下表空间(从v$tablespace中查看):
    SYSTEM、SYSAUX、TEMP、UNDOTBS1、USERS、EXAMPLE

    SYSTEM系统表空间,存放系统的最基本的信息,如果SYSTEM表空间坏掉,Oracle将无法启动。

    SYSAUX从10g中引入,作为SYSTEM的辅助表空间,用以减少SYSTEM表空间的负荷 。以前其他表空间中的一些组件,现在放到SYSAUX表空间中了。比如,以前SYSTEM表空间中LogMiner、以前SYSTEM表空间中Logical Standby、Spatial、以前DRSYS表空间中Oracle Text等。

    TEMP临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行。

    UNDOTBS1是撤销表空间,是UNDO类型的表空间,保存用户进行DML操作中,修改前的数据。

    USERS是数据库默认的永久表空间。
               改变默认表空间:alter database default tablespace 新表空间;
    EXAMPLE是数据库测试用例所涉及的表的所属表空间。

② 段

段是构成表空间的逻辑存储结构,段由一组区组成。
按照段所存储数据的特征,将段分为若干种类型,主要有数据段、索引段、回退段和临时段。

③区

区为段分配空间,它由连续的数据块组成。
当段中的所有空间已完全使用时,系统自动为该段分配一个新区。
区不能跨数据文件存在,只能存在于一个数据文件中。

④数据块

数据块是Oracle服务器所能分配、读取或写入的最小存储单元。
Oracle服务器以数据块为单位管理数据文件的存储空间。

⑤模式 (可以说就是用户)

模式是对用户所创建的数据库对象的总称。
模式对象包括表、视图、索引、同义词、序列、过程和程序包等。