Oracle(一)

简介

  • 支持多用户、大事务量的事务处理。Oracle数据库是一个大容量、多用户的数据库系统
  • 提供标准操作接口
  • 实施安全性控制和完整性控制。Oracle通过权限设置限制用户对数据库的访问,通过用户管理、权限管理限制用户对数据的存取,通过数据库审计、追踪等方法监控数据库的使用情况。
  • 支持分布式数据处理
  • Oracle Real Application Clusters(RAC,真正应用集群)实现可用性和可伸缩性。使单个数据库能够跨网格中的多个集群化的节点运行,从而集中多台标准计算机的处理资源。
  • 具有可移植性、可兼容性和可连接性

Oracle 11g体系结构概述

数据库服务器是信息管理的关键。通常一个服务器可以实现以下功能:

  • 在多用户网络环境中管理大量的数据,从而保证多个用户同时访问相同的数据。
  • 防止没有授权的访问。
  • 提供有效的故障恢复解决方案。
    在这里插入图片描述
    在这里插入图片描述

网格结构

  • 虚拟(Virtualization):相互独立的资源(例如计算机、磁盘、应用程序组件和信息资源等)按照类型组织在一个池中,供用户使用。
  • 提供(Provisioning):用户通过虚拟层申请资源,由系统来决定如何满足用户的特定需求,从而对系统进行整体的优化。
  • 基础资源:构成数据存储和程序执行环境的软件和硬件。
  • 应用程序:业务逻辑和处理流程的编码。
  • 信息:用户需要的数据。
  • 服务器虚拟(Server Virtualization):Oracle实时应用集群(RAC)可以使一个数据库运行在网格的多个节点上,将多个普通计算机的处理资源集中使用。
  • 存储虚拟(Storage Virtualization):Oracle 的自动存储管理(ASM)特性提供了数据库和存储之间的一个虚拟层,这样多个磁盘可以被看做是一个单独的磁盘组,在保证数据库在线的情况下,磁盘可以动态地加载或移除。
  • 网格管理:网格计算将多服务器和多磁盘集成在一起,并且对它们实现动态分配
    在这里插入图片描述

数据库逻辑结构

系统基本组件概览图如下
在这里插入图片描述

在这里插入图片描述

方案(schema)

方案是一组数据库对象的集合。在创建用户的时候,会同时生成一个与用户同名的方案,此方案归同名用户所有。方案对象直接处理数据库数据的逻辑结构,例如表(table)、视图(view)、索引(index)和簇(Clusters)等。

  • :数据库中最常用的数据存储单元,它包括所有用户可以访问的数据
  • 视图:虚拟的表,它在物理上并不存在
  • 索引:与表相关联的可选结构。
  • :有些表共享公共的列,并经常被同时访问,为了提高数据存取的效率,把这些表在物理上存储在一起,得到的表的组合就是簇。

表空间(Tablespace)

表空间说明
示例表空间(Example Tablespace用于存储示例表数据。创建数据库时,如果创建实例方案,则会创建示例表空间
大文件表空间(Bigfile Tablespace它只能包含一个大文件,但文件大小可以达到4G个数据块
系统表空间(SYSTEM TablespaceOracle数据库必须具备的部分。用于存放表空间名称、表空间所包含的数据文件等管理数据库自身所需要的信息
辅助表空间(SYSAUX Tablespace)系统表空间的辅助表空间,很多数据库组件把辅助表空间作为存储数据的默认位置
还原表空间(Undo Tablespace)用于事务的回滚和撤销的表空间
临时表空间(Temporary Tablespace)用于存储数据库的临时表
用户表空间(Users Tablespace)用于存储用户的私有数据
本地管理表空间(Locally Managed Tablespaces)使用本地位图来管理的表空间。所有表空间(包括系统表空间)都可以实现本地管理

在线和离线表空间

  • 除了SYSTEM表空间外,数据库管理员可以将其他任何表空间设置为在线(online)和离线(offline)状态。无论数据库是否被打开,都可以设置表空间的在线和离线状态。当数据库打开后,SYSTEM表空间必须始终在线,因为数据字典必须一直有效。
  • 表空间通常都是在线的,这样表空间中的数据就可以对数据库用户有效。但是在备份、恢复和维护数据库时,数据库管理员可以将表空间设置为离线。当表空间处于离线状态时,Oracle不允许任何SQL语句访问表空间中的数据。
  • 当表空间离线后又重新在线时,此过程将被记录在SYSTEM表空间的数据字典中。如果表空间在关闭数据库时处于离线状态,则当重新打开数据库时,它依然保持离线状态。DBA只能在创建表空间的数据库中设置表空间为在线状态,因为必须在数据库的SYSTEM表空间中记录表空间的状态信息。
  • 当发生特定的错误时,Oracle可以自动地将表空间切换到离线状态。例如,数据库的写进程DBWn多次试图写数据文件失败。

表空间和方案的关系

  • 同一方案中的对象可以存储在不同的表空间中。
  • 表空间可以存储不同方案中的对象。

数据库、表空间和数据文件的关系
在这里插入图片描述

  • 每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。
  • 表空间中数据文件的大小之和就是表空间的存储容量
  • 数据库中表空间的存储容量之和就是数据库的存储容量

逻辑结构
在这里插入图片描述
用小区类比表空间
用一栋楼类比段
用一层楼房类比区
用一间房类比块

段(Segment)

段由一组区间组成。如果段中的区间用完了,Oracle可以自动为它分配新的区间。段中的区间可以是连续的,也可以是不连续的。

段类型说明
数据段每个不在簇中的表都有一个数据段。表中的所有数据都存储在数据段的区间中。每个簇都有一个数据段,簇中每个表的数据都存储在簇的数据段中。簇由共享相同数据块的多个表组成
索引段每个索引都有一个索引段,存储所有的索引数据
临时段当执行SQL语句需要临时工作区时,Oracle 将创建临时段。执行完毕后,临时段的区间将被系统回收,以备需要时分配使用
回滚段如果当前系统处于自动重做管理模式,则数据库服务器使用表空间来管理重做空间

区间(Extent)

  • 区间是数据库存储空间中分配的一个逻辑单元,由一组相邻的数据块组成,它是Oracle分配磁盘空间的最小单位。(一般8个块)
  • MINEXTENTS定义了段中所能包含的最小区间数量,在创建段时,它所包含的区间数量只能为MINEXTENTS。随着段中数据的增加,区间数量也可以不断增加,但不能超过MAXEXTENTS中定义的数量,否则会出现错误。

数据块(Data block)

  • 数据块是Oracle管理数据库存储空间的最小数据存储单位。(默认8K)
  • 一个数据块对应磁盘上一定数量的数据库空间,标准的数据块大小由初始参数DB_BLOCK_SIZE指定
  • 数据块既是逻辑单位,也是物理单位

数据块的格式
在这里插入图片描述

  • 公共的变长头包含数据块的通用信息,如块地址和段类型等。
  • 表目录包含在此块中有行数据的表的信息
  • 行目录包含此块中实际行数据的信息(包括在行数据区中每个行数据片的地址)
  • 空闲空间是插入新行时需要的存储空间,更新行数据时也可能造成存储空间的增加,这些存储空间都需要从空闲空间中分配。
  • 行数据包含表或索引数据。行数据的存储可以跨越数据块,也就是说,一行数据可以分别存储在不同的数据块中

数据库物理结构

在这里插入图片描述

控制文件

  • 每个Oracle数据库有一个控制文件,记录数据库的物理结构。控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息
  • 数据库的控制文件用于标识数据库和日志文件,当开始数据库操作时它们必须被打开。当数据库的物理组成更改时,Oracle自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
  • 当数据库打开时,Oracle数据库服务器必须可以写控制文件。没有控制文件,数据库将无法装载,恢复数据库也很困难

数据文件

Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。

数据文件有下列特征:

  • 一个数据文件仅与一个数据库联系
  • 当数据库容量越界时,数据文件能够自动扩展
  • 一个或多个数据文件组成一个表空间
  • 进行数据库操作时,系统将从数据文件中读取数据,并存储在Oracle的内存缓冲区中。新建或更新的数据不必立即写入到数据文件中,而是把数据临时存放在内存中,由数据库写入进程(DBWn)决定在适当的时间一次性写入到数据文件中。这样可以大大降低访问磁盘的次数,从而增加系统性能

日志文件

  • 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。
  • 日志的主要功能是记录对数据所做的修改,所以对数据库做的全部修改记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到修改记录,从而保证已经发生的操作成果不会丢失
  • 日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,Oracle允许镜像日志,在不同磁盘上维护两个或多个日志副本

在这里插入图片描述

数据库实例

个运行的Oracle数据库都对应一个Oracle实例(Instance),也可以称为例程。当数据库服务器上的一个数据库启动时,Oracle将为其分配一块内存区间,叫做系统全局区(SGA),然后启动一个或多个Oracle进程。SGA和Oracle进程结合在一起,就是一个Oracle实例
在这里插入图片描述

在这里插入图片描述

数据库实例4种状态

  • 打开启动实例,装载并打开数据库。该模式是默认的启动模式,它允许任何有效用户连接到数据库,并执行典型的数据访问操作
  • 关闭:将Oracle实例从允许用户访问数据库的状态转换为休止状态。关闭操作首先终止用户访问数据库所需的进程,然后释放计算机中供Oracle运行使用的内存
  • 已装载启动实例并装载数据库,但不打开数据库。该模式用于更改数据库的归档模式执行恢复操作,还可以用于数据文件恢复。因为此状态下没有打开数据库,所以不允许用户访问
  • 已启动启动实例,但不装载数据库。该模式用于重新创建控制文件,对控制文件进行恢复或重新创建数据库等。因为此状态下没有打开数据库,所以不允许用户访问数据库。该状态也称为“不装载”

内部存储结构

Oracle使用内存存储以下信息:

  • 程序代码。
  • 连接会话的信息,包括当前并未激活的会话。
    程序运行过程中的信息(例如当前查询的状态等)。
  • Oracle进程共享和通信的信息。
  • 缓冲区中的数据,这些数据同时保存在外存储器中。

Oracle的内存结构

系统全局区(System Global Area,SGA)
程序全局区(Program Global Area,PGA)
在这里插入图片描述

共享池

在这里插入图片描述
库高速缓存:

  • 存储有关最近使用的SQL和PL/SQL语句信息
  • 启用常用语句共享
  • 由‘最近最少使用算法’(LRU)管理
  • 包括共享是SQL区、共享PL/SQL区两个结构
  • 大小由共享池的大小确定

数据字典高速缓存:

  • 数据库中最近使用的定义的集合
  • 包括与数据库文件、表、索引、列、用户、权限和其它数据库对象相关的信息
  • 在语法分析阶段,服务器进程会在数据字典中查找用于解析对象名和验证访问的信息
  • 将数据字典信息高速缓存到内存中,可缩短查询和DML的响应时间
  • 大小由共享池的大小决定

数据库缓冲区高速缓存

在这里插入图片描述

重做日志缓冲区

在这里插入图片描述

大型共享池

在这里插入图片描述

Java池

  • 存储Java命令的服务分析要求
  • 在安装并使用Java时是必须的
  • 大小由JAVA_POOL_SIAZE参数确定

进程结构

Oracle进程包括服务器进程和后台进程。
用户进程 运行应用程序或Oracle工具
Oracle进程 运行Oracle服务器代码

后台进程

维护并加强物理结构与内存结构之间的关系
在这里插入图片描述

数据库写入程序(DBWn)

把缓冲区的内容写入到数据文件中
在这里插入图片描述

日志写入器(LGWR)

将重做日志缓冲区的内容写入到重做日志文件中
在这里插入图片描述

系统监控程序(SMON)

当失败的数据库实例重新启动时,SMON进程完成实例的恢复工作
在这里插入图片描述

过程监视器(PMON)

当用户进程失败时,用于完成进程的恢复
在这里插入图片描述

检查点(CKPT)

检查点是一个事件,当此事件发生时,DBWn进程将SGA中所有改变的数据库缓冲区写入到数据文件中。CKPT进程的功能是当发生检查点事件时唤醒DBWn进程,更新数据库所有数据文件与控制文件,并标记最新检查点,以便下一次更新从最新检查点开始。
在这里插入图片描述

归档进程(ARCn)

当重做日志被填满后,系统将通过日志交换转向另一个重做日志。此时,ARCn进程将在线的重做日志复制到归档存储器中。
在这里插入图片描述

多进程Oracle实例的后台进程示意图

在这里插入图片描述

服务器进程

在这里插入图片描述

Oracle Net Services

调度器模式(也称为共享服务器模式)

共享服务器体系结构使用调度器进程将客户端连接放置到通用请求队列中。服务器共享池中的一个空闲共享服务器进程可以从通用队列中获取一个请求进行处理。这种方法可以使一个小型的服务器进程池为大量的客户端服务。

与专用服务器模型相比,共享服务器模型最大的优势在于它减少了系统资源的消耗,从而支持更多用户同时使用。

  • 监听器直接将连接请求传送到调度器的工作流程

在这里插入图片描述

  • 发送一个请求到客户端,其中包含调度器的协议地址,然后客户端终止与监听器的网络会话,并使用转发消息中提供的网络地址与调度器进行网络会话。
    在这里插入图片描述

专用服务器模式

在专用服务器模式下,监听器为每个客户端连接请求启动一个独立的专用服务器进程,为客户端提供服务。一旦会话完成,专用服务器进程结束。这种模式需要的系统资源大于共享服务器模式。

  • 监听器直接将连接请求传送到专用服务器进程的工作流程
    在这里插入图片描述
  • 专用服务器通过监听它的监听协议地址。监听器通过一个转发消息把协议地址传送给客户端,然后结束连接。客户端使用该协议地址直接连接到专用服务器上。如果客户端和数据库服务器在同一个计算机上,则客户端连接直接传送到专用服务器进行,不需通过监听器。
    在这里插入图片描述

应用程序结构

客户/服务器结构

在这里插入图片描述
在Oracle数据库系统中,数据库与数据库应用程序被分成两部分:

  • 前端或客户端:
    客户端运行数据库应用程序,访问数据库信息,并通过键盘、屏幕和鼠标等设备与用户交互。
  • 后端或服务器:
    运行Oracle软件,同时处理多种请求,共享访问Oracle数据库的数据。

大多数情况下,客户端与服务器运行在不同计算机上,通过网络连接实现更大效能。

  • 在如图上的A模式下,客户端与服务器位于不同计算机,通过Oracle Net Service进行通信。
  • 模式B中,一台计算机有多个处理器,不同处理器分别执行Oracle客户端应用程序

多层结构

在这里插入图片描述

通常分为以下3层:

  • 客户端:
    客户端提出一个请求,在数据库服务器上执行相应的操作
  • 应用程序服务器
    为客户提供数据访问的渠道,它是数据库服务器与客户端之间的接口,它的存在也提供了一层安全机制。
  • 数据库服务器
    执行查询过程,通过应用程序服务器为客户提供请求的数据
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值