大型数据库技术(二)oracle体系结构-理论

本节内容
数据库系统的体系结构
Oracle服务器基本架构
–内存结构
–Oracle进程
–物理存储结构
–逻辑存储结构
数据库启动与关闭
表空间管理

2.1 数据库系统的体系结构概述

• 单用户数据库系统
• 主从式结构的数据库系统
        一个主机带多个终端的多用户结构。
        优点:结构简单,易于管理和维护。
        缺点:主机任务繁重,易成为瓶颈。
• 分布式结构的数据库系统
        数据库系统中的数据在逻辑上是一个整体,但分布
在计算机网络的不同节点上。
• 客户/服务器结构的数据库系统

数据库(DB)

是长期储存在计算机内、有组织的、可共享的大量数据的集合

数据库管理系统(DBMS)

DBMS是一个大型复杂的基础软件系统,位于用户与操作系统之间的一层数据管理软件。DBMS能够科学地组织和存储数据、高效地获取和维护数据。
DBMS具有数据定义(提供数据库定义语言DDL),数据组织、存储和管理(提供数据操作语言DML),数据库的事务管理和运行管理(安全性等),数据库的建立和维护等功能。

数据库系统(DBS)

数据库系统由数据库、数据库管理系统(及其应用开发工具)、应用程序、数据库管理员四部分构成。
 

2.1.1 DBS和DBMS

   在Oracle数据库管理系统中有3个重要的概念需要理解,那就是
实 例 ( Instance ) 、 数 据 库 ( Database ) 和 数 据 库 服 务 器
(Database Server)。
其中,实例是指⼀组Oracle后台进程以及
在服务器中分配的共享内存区域;数据库是由基于磁盘的数据⽂件、
控制⽂件、⽇志⽂件、参数⽂件和归档⽇志⽂件等组成的物理⽂件集
合;数据库服务器是指管理数据库的各种软件⼯具(⽐如sqlplus、
OEM等)、实例及数据库3个部分。 从实例与数据库之间的辩证关系
来讲,实例⽤于管理和控制数据库;⽽数据库为实例提供数据。⼀个
数据库可以被多个实例装载和打开;⽽⼀个实例在其⽣存期内只能装
载和打开⼀个数据库。

数据库的主要功能就是存储数据,数据库存储数据的⽅式通常称
存储结构,Oracle数据库的存储结构分为 逻辑存储结构物理存储
结构。逻辑存储结构⽤于描述Oracle内部组织和管理数据的⽅式,⽽
物理存储结构⽤于展⽰Oracle在操作系统中的物理⽂件组成情况。
启动Oracle数据库服务器实际上是在服务器的内存中创建⼀个
Oracle实例,然后⽤这个实例来访问和控制磁盘中的数据⽂件。当⽤
户连接到数据库时,实际上连接的是数据库的实例,然后由实例负责
与数据库进⾏通信,最后将处理结果返回给⽤户。
图2.1展⽰了
Oracle数据库的基本体系结构,从图中可以看出,SQL命令从客户端
发出后,由Oracle的服务器进程进⾏响应,然后在内存区域中进⾏语
法分析、编译和执⾏,接着将修改后的数据写⼊数据⽂件,将数据库
的修改信息写⼊⽇志⽂件,最后将SQL的执⾏结果返回给客户端。

2.2 逻辑存储结构

逻辑存储结构是从逻辑的⾓度分析数据库的构成,是对数据存储结构在逻辑概念上的划分。Oracle的逻辑存储结构是⼀种层次结构,主要由表空间、段、区间和数据块等概念组成。逻辑结构是⾯向⽤户的。

2.2.1 数据块(Data blocks):

数据块是 Oracle 逻辑存储结构中最⼩的逻辑单位,也是执⾏数据库输⼊输出操作的最⼩存储单位。

2.2.2 数据区(extents)

使⽤数据区的⽬的是⽤来保存特定数据类型的数据。数据区是表中数据增⻓的基本单位,在Oracle 数据库中,分配存储空间就是以数据区为单位的。⼀个Oracle 对象包含⾄少⼀个数据区。设置⼀个表或索引的存储参数包含设置它的数据区⼤⼩。

2.2.3 段(segment)

段是由⼀个或多个数据区构成的,它不是存储空间的分配单位,⽽是⼀个独⽴的逻辑存储结构,⽤于存储表、索引或簇等占⽤空间的数据对象,Oracle 也把这种占⽤空间的数据对象统⼀称为段。⼀个段只属于⼀个特定的数据对象,每当创建⼀个具有独⽴段的数据对象时,Oracle 将为它创建⼀个段。
使用段的目的:保存特定对象。
段内包含的数据区可以不连续,并且可以跨越多个文件。
一个oracle数据库通常有以下四种类型的段:

(1)数据段:

数据段中保存的是表中的数据记录。在创建数据表时,Oracle系统将为表创建数据段。当表中的数据量增⼤时,数据段的⼤⼩⾃然也随着变⼤,数据段的增⼤过程是通过向其添加新的数
据区来实现的。当创建⼀个表时,系统⾃动创建⼀个以该表的名字命名的数据段。

(2)索引段:

索引段中包含了⽤于提⾼系统性能的索引。

(3)回滚段:

回滚段(也可称作撤销段)中保存了回滚条⽬, Oracle将修改前的旧值保存在回滚条⽬中。

(4)临时段:

当执⾏创建索引、查询等操作时, Oracle 可能会使⽤⼀些临时存储空间,⽤于暂时性地保存解析过的查询语句以及在排序过程中产⽣的临时数据。

2.2.4 表空间(Table Space)

1. SYSTEM表空间

2. SYSAUX 表空间
3. UODO 表空间
4. USERS 表空间
表空间管理
系统表空间(SYSTEM)
–存放数据字典
–存放PL/SQL源代码和编译后的代码
临时表空间(TEMP)
–存放用户的排序等临时数据
回滚段表空间(UNDOTBS)
–临时存放修改前的数据
用户表空间(USERS)
–存放用户数据
表空间的类型
数据字典管理表空间DMT
–通过数据字典管理表空间的空间使用
本地化管理表空间LMT
–通过本地位图来管理表空间的空间使用
–每个表空间的数据文件的头部加入了一个位图区,
在其中记录每个区的使用状况

2.3 物理存储结构

Oracle 的数据在逻辑上存储在表空间中,⽽在物理上存储在表空间所包含的物理⽂件(即数据⽂件)中。
Oracle 数据库的物理存储结构由多种物理⽂件组成,主要有数据⽂件、控制⽂件、重做⽇志⽂件、归档⽇志⽂件、参数⽂件、⼝令⽂件和警告⽇志⽂件等,如图2.5 所⽰。下⾯将对这些物理⽂件⾏讲解。
数据库由不同类型的文件组成:
数据文件
日志文件
控制文件

2.3.1 数据文件

数据⽂件是⽤于保存⽤户应⽤程序数据和 Oracle 系统内部数据的
⽂件,这些⽂件在操作系统中就是普通的操作系统⽂件, Oracle 在创
建表空间的同时会创建数据⽂件。 Oracle 数据库在逻辑上由表空间组
成,每个表空间可以包含⼀个或多个数据⽂件,⼀个数据⽂件只能⾪
属于⼀个表空间。
1. 系统数据⽂件
2. 撤销数据⽂件
3. ⽤户数据⽂件

2.3.2 控制文件

控制⽂件是⼀个⼆进制⽂件,它记录了数据库的物理结构,其中
主要包含数据库名、数据⽂件与⽇志⽂件的名字和位置、数据库建⽴
⽇期等信息。

2.3.3 日志文件

⽇志⽂件的主要功能是记录对数据所作的修改,对数据库所作的
修改⼏乎都记录在⽇志⽂件中。在出现问题时,可以通过⽇志⽂件得
到原始数据,从⽽保障不丢失已有操作成果。
⽂件。
1. 重做⽇志⽂件
重做⽇志⽂件⽤来记录数据库所有发⽣过的更改信息(修改、添
加、删除等信息)及由 Oracle 内部⾏为(创建数据表、索引等)⽽引
起的数据库变化信息。在数据库恢复时,可以从该⽇志⽂件中读取原
始记录。以循环方式使用。
2. 归档⽇志⽂件
⾮归档模式是指在系统运⾏期间,所产⽣的⽇志信息不断地记录
到⽇志⽂件组中,当所有重做⽇志组被写满后,⼜重新从第⼀个⽇志 组开始覆写。归档模式是在各个⽇志⽂件都被写满⽽即将被覆盖之
前,先由归档进程( ARCH )将即将被覆盖的⽇志⽂件中的⽇志信息
读出,并将 读出的⽇志信息 写⼊到归档⽇志⽂件中,⽽这个过程⼜
被称为归档操作。

2.3.4 服务器参数文件

2.3.5 密码⽂件、警告⽂件和跟踪⽂件

2.4 oracle服务器架构

数据库实例(Oracle Instance)
        定义:实例指的就是操作系统中一系列的进程以及为这些进程所分配的内存块。
        组成:
        数据库服务器的内存
        相关处理程序
Oracle数据库文件(Database files)
        操作系统内的各种文件
数据库实例与文件之间通过后台进程互相通信
Oracle服务器主要由实例、数据库、程序全局区和前台进程组成。
实例就是图 2.15 中的 Instance 区域,用来提供管理数据库的功能;数据库就是图2.15 中的 Database 区域, 由Oracle 数据库⽂件组成,用来存储系统数据。
实例划分为两部分:
系统全局区(SGA):使用操作系统的内存资源
后台进程:使用cpu和内存资源
数据库包含:
数据文件 Data files 
控制文件 control files
重做文件 redo log files
程序全局区(PGA):
一个非共享的内存区域,用于管理用户进程的私有资源。
前台进程划分为两部分(使用cpu和内存资源):
用户进程
服务器进程
内存结构:
Oracle的信息 缓存 共享 区域
存储执行的程序代码、连接的会话信息、程序执行期
间所需数据和共享的信息
  包括系统全局区(SGA)和程序全局区(PGA)

2.4.1 系统全局区:

系统全局区(System Global Area)是所有⽤户进程共享的⼀块内存区域

1. ⾼速数据缓冲区(Database buffffer cache

⾼速数据缓冲区中存放着 Oracle 系统最近访问过的数据块(数据块在⾼速缓冲区中也可称为缓存块)。
从高速数据缓冲区找不到所需要数据需要从数据文件中读取指定数据块到缓冲区。

2. 重做⽇志缓冲区(Red log buffffer cache

重做⽇志缓冲区⽤于存放对数据库进⾏修改操作时所产⽣的⽇志信息,这些⽇志信息在写⼊到重做⽇志⽂件之前,⾸先存放到重做⽇志缓冲区中,然后,在检查点发⽣或重做⽇志缓冲区中的信息量达到⼀定峰值时,最后由⽇志写⼊进程(LGWR )将此缓冲区的内容写⼊到重做⽇志⽂件。

3. 共享池(Shared Pool

共享池是 SGA 保留的内存区域,⽤于缓存 SQL 语句、 PL/SQL 语句、数据字典、资源锁、字符集以及其他控制结构等。共享池包含库⾼速缓冲区(Library cache )和字典⾼速缓冲区( Dictionarycache)。

4. ⼤型池(Large pool

5. Java

⽤来提供内存空间给 Java 虚拟机使⽤,⽬的是⽀持在数据库中运⾏Java 程序包,其⼤⼩由 JAVA_POOL_SIZE 参数决定。

6. 流池

Oracle 流池⽤于在数据库与数据库之间进⾏信息共享。

2.4.2 程序全局区(PGA

程序全局区( Program Global Area )也可称作⽤户进程全局区,它的内存区在进程私有区⽽不是共享区中。
在程序全局区( PGA )中,⼀个服务进程只能访问属于它⾃⼰的那部分PGA 资源区,各个服务进程的 PGA 区的总和即为实例的 PGA 区的⼤⼩。
组成:私有SQL区 和 会话区
2.4.3 前台进程
前台进程组成:⽤户进程和服务进程
作用:前台进程能够实现⽤户与实例的沟通
(1)用户进程
(2) 服务器进程
2.4.4 后台进程
Oracle 后台进程是⼀组运⾏于 Oracle 服务器端的后台程序,是Oracle实例的重要组成部分。这组后台进程有若⼲个,它们分⼯明确——分别完成不同的系统功能
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值