数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle数据库体系结构


发布日期:2022年04月15日
 
Oracle数据库体系结构

Oracle数据库的体系结构包括四个方面数据库的物理结构逻辑结构内存结构及进程

物理结构

物理数据库结构是由构成数据库的操作系统文件所决定Oracle数据库文件包括

数据文件(Data File)

数据文件用来存储数据库中的全部数据例如数据库表中的数据和索引数据通常以为*dbf格式例如:userCIMSdbf

日志文件(Redo Log File)

日志文件用于记录数据库所做的全部变更(如增加删除修改)以便在系统发生故障时用它对数据库进行恢复名字通常为Log*dbf格式LogCIMSdbfLogCIMSdbf

控制文件(Control File)

每个Oracle数据库都有相应的控制文件它们是较小的二进制文件用于记录数据库的物理结构数据库名数据库的数据文件和日志文件的名字和位置等信息用于打开存取数据库名字通常为Ctrl*ctl 格式如CtrlCIMSctl

配置文件

配置文件记录Oracle数据库运行时的一些重要参数数据块的大小内存结构的配置等名字通常为init*ora 格式initCIMSora

逻辑结构

Oracle数据库的逻辑结构描述了数据库从逻辑上如何来存储数据库中的数据逻辑结构包括表空间数据块和模式对象数据库的逻辑结构将支配一个数据库如何使用系统的物理空间模式对象及其之间的联系则描述了关系数据库之间的设计

一个数据库从逻辑上说是由一个或多个表空间所组成表空间是数据库中物理编组的数据仓库每一个表空间是由段(segment)组成一个段是由一组区(extent)所组成一个区是由一组连续的数据库块(database block)组成而一个数据库块对应硬盘上的一个或多个物理块一个表空间存放一个或多个数据库的物理文件(即数据文件)一个数据库中的数据被逻辑地存储在表空间上

表空间(tablespace)

Oracle数据库被划分为一个或多个称为表空间的逻辑结构它包括两类表空间System表空间和非System表空间其中System表空间是安装数据库时自动建立的它包含数据库的全部数据字典存储过程函数和触发器的定义以及系统回滚段除此之外还能包含用户数据

一个表空间包含许多段每个段有一些可以不连续的区组成每个区由一组连续的数据块组成数据块是数据库进行操作的最小单位

每个表空间对应一个或多个数据文件每个数据文件只能属于一个表空间

数据库块(database block)

数据库块也称逻辑块或ORACLE块它对应磁盘上一个或多个物理块它的大小由初始化参数dbblocksize(在文件initora中)决定典型的大小是kPckfree 和pctused 两个参数用来优化数据块空间的使用

区(extent)

区是由一组连续的数据块所组成的数据库存储空间分配的逻辑单位

段(segment)

段是一个或多个不连续的区的集合它包括一个表空间内特定逻辑结构的所有数据段不能跨表空间存放Oracle数据库包括数据段索引段临时段回滚段等

模式对象(schema object)

Oracle数据库的模式对象包括表视图序列同意词索引触发器存储过程等关于它们将重点在后面章节介绍

.Oracle Server系统进程与内存结构

当在计算机服务器上启动Oracle数据库后称服务器上启动了一个Oracle实例(Instance)ORACLE 实例(Instance)是存取和控制数据库的软件机制它包含系统全局区(SGA)和ORACLE进程两部分SGA是系统为实例分配的一组共享内存缓沖区用于存放数据库实例和控制信息以实现对数据库中数据的管理和操作

进程是操作系统中一个极为重要的概念一个进程执行一组操作完成一个特定的任务对ORACLE数据库管理系统来说进程由用户进程服务器进程和后台进程所组成

当用户运行一个应用程序时系统就为它建立一个用户进程服务器进程处理与之相连的用户进程的请求它与用户进程相通讯为相连的用户进程的ORACLE请求服务

为了提高系统性能更好地实现多用户功能ORACLE还在系统后台启动一些后台进程用于数据库数据操作

系统进程的后台进程主要包括

SMON 系统监控进程(system monitor)负责完成自动实例恢复和回收分类(sort)表空间

PMON 进程监控进程(process monitor)实现用户进程故障恢复清理内存区和释放该进程所需资源等

DBWR 数据库写进程数据库缓沖区的管理进程在它的管理下数据库缓沖区中总保持有一定数量的自由缓沖块以确保用户进程总能找到供其使用的自由缓沖块

LGWR 日志文件写进程是日志缓沖区的管理进程负责把日志缓沖区中的日志项写入磁盘中的日志文件上每个实例只有一个LGWR进程

ARCH 归档进程(archiver process)把已经填满的在线日志文件拷贝到一个指定的存储设备上仅当日志文件组开关(switch)出现时才进行ARCH操作ARCH不是必须的而只有当自动归档可使用或者当手工归档请求时才发出

RECO 恢复进程是在具有分布式选项时使用的一个进程主要用于解决引用分布式事务时所出现的故障它只能在允许分布式事务的系统中出现

LCKn 封锁进程用于并行服务器系统主要完成实例之间的封锁

内存结构(SGA)

SGA是Oracle为一个实例分配的一组共享内存缓沖区它包含该实例的数据和控制信息SGA在实例启动时被自动分配当实例关闭时被收回数据库的所有数据操作都要通过SGA来进行

SGA中内存根据存放信息的不同可以分为如下几个区域

Buffer Cache存放数据库中数据库块的拷贝它是由一组缓沖块所组成这些缓沖块为所有与该实例相链接的用户进程所共享缓沖块的数目由初始化参数DB_BLOCK_BUFFERS确定缓沖块的大小由初始化参数DB_BLOCK_SIZE确定大的数据块可提高查询速度它由DBWR操作

b 日志缓沖区Redo Log Buffer存放数据操作的更改信息它们以日志项(redo entry)的形式存放在日志缓沖区中当需要进行数据库恢复时日志项用于重构或回滚对数据库所做的变更日志缓沖区的大小由初始化参数LOG_BUFFER确定大的日志缓沖区可减少日志文件I/O的次数后台进程LGWR将日志缓沖区中的信息写入磁盘的日志文件中可启动ARCH后台进程进行日志信息归档

c 共享池Shared Pool包含用来处理的SQL语句信息它包含共享SQL区和数据字典存储区共享SQL区包含执行特定的SQL语句所用的信息数据字典区用于存放数据字典它为所有用户进程所共享

Cursors一些内存指针执行待处理的SQL语句

其他信息区除了上述几个信息区外还包括一些进程之间的通讯信息(如封锁信息)在多线索服务器配置下还有一些程序全局区的信息请求队列和响应队列等

上一篇:Oracle中SPFILE文件特点及其具体操作

下一篇:Oracle中如何快速的卸载和加载数据