Oracle体系结构.docx
- 文档编号:20975064
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:13
- 大小:116.70KB
Oracle体系结构.docx
《Oracle体系结构.docx》由会员分享,可在线阅读,更多相关《Oracle体系结构.docx(13页珍藏版)》请在冰豆网上搜索。
Oracle体系结构
Oracle体系结构
一、物理结构
二、逻辑结构
三、内存结构
四、数据库实例与进程
五、数据字典
一、Oracle的物理结构
Oracle数据库文件包括数据文件、日志文件、控制文件、配置文件
数据文件
(1)用来存储数据库中的全部数据,如数据库表中的数据和索引数据。
通常为后缀名为.dbf格式的文件。
(2)每个Oracle可以有一个或多个数据文件,一个数据文件只能属于一个数据库。
(3)每个数据文件又由若干物理块组成;
(4)一个或多个数据文件组成表空间;
日志文件(重做日志文件)
(1)用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时,用它对数据库进行恢复。
名字通常为Log*.dbf格式。
控制文件
(1)用于打开和存取数据库。
(2)是较小的二进制文件,记录了数据库的物理结构,如:
数据库名、数据库的数据文件和日志文件的名字和位置等信息。
(3)名字通常为Ctr*.ctl格式,如CtrlCIMS.ctl。
(4)控制文件中的内容只能够由Oracle本身来修改。
(5)每个数据库必须至少拥有一个控制文件。
一个数据库也可有多个控制文件,但是一个控制文件只能属于一个数据库。
配置文件:
(1)是一个ASCII文本文件,记录Oracle数据库运行时的一些重要参数。
(2)名字通常为initsid*.ora格式,如:
initCIMS.ora,
(3)SID相当于它所控制的数据库的标识符。
(4)每个Oracle数据库和实例都有它自己惟一的init.ora文件。
二、Oracle的逻辑结构
逻辑结构描述了数据库从逻辑上如何来存储数据块中的数据。
包括表空间、段、区、数据块和模式对象。
逻辑结构支配一个数据库如何使用系统的物理空间,模式对象及其之间的关系则描述关系数据库之间的设计。
一个数据块从逻辑上是由一个或多个表空间组成,表空间是数据块中物理编组的数据仓库,每个表空间由段构成,段由一组区组成,一个区由连续的数据块组成。
表空间
表空间分类:
Oracle中除了用户创建的存放数据对象的数据表空间外,还有以下类型的表空间:
1)System表空间(SystemTableSpace)
2)回滚表空间(RollBackTableSpace)
3)临时表空间(TempTableSpace)
系统表空间(SystemTableSpace):
a)是每个Oracle数据库必须具备部分,安装时自动建立,
b)存放表空间名称、表空间所含数据文件等管理数据库自身所需信息;
c)如:
数据字典、存储过程、包、函数和触发器定义、系统回滚段、数据库对象定义,用户过程等。
d)每个Oracle数据库必须至少有个默认表空间。
系统表空间只保存属于数据库自身的相关数据,用户对象和数据保存在非系统表空间中。
临时表空间(TempTableSpace):
a)是Oracle用于存储实例运行过程中产生的所有临时数据,如执行SQL语句产生的临时表;
b)类似于数据库白板或草稿纸,记录数据和进行的操作。
c)可以有多个临时表空间;
d)无临时表空间将使用(SystemTableSpace)
回滚表空间(RollBackTableSpace)
a)所有Oracle数据库都需要在一个地方保存恢复信息(Undo),用于存放回滚段(RollbackSegment)的表空间称为回滚或简称RBS。
b)Oracle将不完整或临时中止的事务恢复的功能放在其核心功能中;
表空间使用,在数据库中使用多个表空间具有如下优势:
a)能将数据字典与用户数据分,避免因字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突。
b)将回退数据与用户数据分离,避免因硬盘损坏而导致永久性数据丢失。
c)将表空间数据文件分散保存到不同硬盘上,平均分布物理I/O操作。
d)将某个表空间设置为脱机状态或联机状态,对数据库的一部分进行备份和恢复。
e)将某个表空间设置为只读,将数据库的一部分设置为只读状态。
f)为某种特殊用途专门设置一个表空间,比如临时表空间等,优化表空间的使用效率。
g)更加灵活地为用户设置表空间限额。
表空间中对象存储
a)若表空间只对应一个数据文件,该表空间中所有对象都存储在此数据文件中。
b)若表空间对应于多个数据文件,可将一个对象的数据存储在该表空间的任意一个数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中。
段
1)数据段
a)数据段中保存表中记录。
b)用CREATE语句创建表或簇时,Oracle自动创建数据段。
c)Oracle中所有未分区的表都使用一个段来保存数据,而分区的表将为每个分区建立一个独立数据段。
2)索引段
a)在使用CREATEINDEX语句创建索引时,Oracle为一个索引或一个索引分区创建索引段。
b)在Oracle数据库中每个未分区索引都有一个索引段保存索引中索引条目。
c)对于一个分区索引,每个分区都有一个索引段保存它的数据。
3)临时段
a)当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据。
b)Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。
4)回退段:
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值),作用主要有以下几方面:
a)事务回滚
b)事务恢复
c)读一致性
区
区是由很多连续的数据块组成的数据库存储空间,缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区.
主要的几个存储参数:
1)Initial:
段建立时分配的第一个区的大小(单位:
字节)
2)Next:
段内分配的下一个增量区大小(单位:
字节)
3)MaxExtents:
分配给段的区总数。
4)MinExtents:
建立段时分配的区的总数,也就是段的最小区数量。
5)PctEncrease:
为段分配的每个增量区超过上一个区的百分比。
6)Initrans:
为初试数量的DML事务条目(并发访问数据块中的行)保留的预分配空间数量。
7)Ntkxtrans:
当多个事务同时访问同一数据块的行时,为数据块中每个DML事务的条目分配的空间
数据库块
数据库块也称逻辑块或Oracle块,对应磁盘上一个或多个物理块,大小由初始化参数(db_block_size)在文件(init.ora)决定,典型大小是2k
Pckfree和Pctused两个参数用来优化数据块空间的使用。
1)PCTFREE:
块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块中;
2)PCTUSED:
指定块中数据使用空间的最低百分比;
模式对象
Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等.
三、Oracle的内存结构
系统全局区、软件代码区、程序全局区和排序区。
系统全局区(SGA):
是实例的主要部分。
a)SGA是内存结构的主要组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,
b)保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析,重做日志管理等
数据块缓冲区
a)存放Oracle系统最近从数据文件中读取的数据块。
b)又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。
c)容量受物理容量限制。
d)在Oracle9i中,缓存大小可直接由初始化参数DB_ACHESIZE指定,该参数可以直接以KB字节或MB字节为单位来设置数据库缓存大小。
字典缓冲区
a)字典缓冲区用于保存数据字典中的行。
b)数据字典缓冲区也通过最近最少使用(LRU)算法来管理。
c)大小由数据库内部管理。
d)字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件init.ora中的Shared_pool_size参数来设置。
重做日志缓冲区
a)对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放到重做日志缓冲区(RedoLogBuffer.)中。
b)重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被LGWR后台进程随时写入重做日志文件。
共享SQL池(SharedSQLPool)
a)相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。
b)包括库高速缓存、数据字典高速缓存和服务器控制结构。
c)共享池大小取决于init.ora文件参数Shared_pool_size,以字节为单位
d)用户必须将该值设得足够大,以确保有足够可用空间来装载和存储PL/SQL块和SQL语句。
Java池:
Java池为Java命令提供语法分析
多缓冲池:
a)缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同的资源。
b)可在SGA中创建多个缓冲池。
程序全局区PGA(ProgramGlobalArea,PGA)
a)是单个Oracle进程使用的内存区域,不属于实例的内存结构。
b)含有单个进程工作时需要的数据和控制信息,PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区
排序区
a)排序区存在于请求排序的用户进程的内存中,由于排序需要内存空间,Oracle利用该内存排序数据,这部分空间称为排序区。
b)该空间的大小为适应排序数据量的大小,可增长,但受初始化参数:
Sort_area_sizer所限制
软件代码区
a)是只读,可安装成共享或非共享。
b)Oracle系统程序是共享的,多个Oracle用户可存取它,无需在内存有多个副本。
c)用户程序可以共享也可以不共享。
四、数据库实例与进程
Oracle数据库实例
数据库是指物理上的数据库文件或逻辑上的数据库结构。
基于之上管理和控制物理数据库的软件系统,称为数据库管理系统(DBMS)。
数据库实例是指软件系统中用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制
进程
a)进程又称任务,一个进程执行一组操作,完成一个特定的任务。
b)对Oracle数据库管理系统来说,进程由用户进程、服务器进程和后台进程所组成。
c)进程与程序的区别在于前者是一个动态概念,后者是一个静态实体;
d)程序仅仅是指令的有序集合,而进程则强调执行过程。
e)进程可以动态地创建,完成任务后即会消亡。
用户进程
a)当用户运行一个应用程序时,系统就为它建立一个用户进程。
b)用户进程执行的是一个应用程序或Oracle工具程序的代码,以完成用户所指定的任务。
c)用户进程不是实例。
服务器进程
a)服务器进程处理与应用程序相连的用户进程的请求,
b)它与用户进程相通讯,
c)为相连的用户进程的Oracle请求服务。
后台进程Oracle的后台进程主要包括
a)SMON——系统监控进程(SystemMonitor)
b)PMON——进程监控进程(Processmonitor)
c)DBWR——数据库写进程
d)LGWR——日志文件写进程
e)ARCH——归档进程(Archiverprocess)
f)RECO——恢复进程
g)LCKN——封锁进程
进程名
功能
数据库书写进程DBWR
将修改过的数据块写回到数据文件
日志书写进程LGWR
将重做日志记录写回到联机日志文件
系统监视进程SMON
执行崩溃恢复和联合自由空间
进程监视进程PMON
查看进程是否过早断开,释放任何容纳的锁,并处理任何其它必要的清除任务
检查点进程CKPT
定期检查数据库
归档进程ARCH
将已写满的联机日志文件复制到归档日志文件
队列监视进程QMON
管理消息队列
恢复进程RECO
在分布式数据库中恢复失败的事务
五、数据字典
数据字典是Oracle数据库的核心组件,对用户是只读类型表和视图组成。
保存着关于数据库系统本身以及其中存储的所有对象的基本信息
a)数据库对象中所有框架对象的定义,如表、视图、索引、群集、同义词、序列、过程、函数、包、触发器等
b)框架对象如何分配和使用空间
c)列默认值
d)完整性约束信息
e)安全信息,如用户、权限、角色
f)审计信息
数据字典表和视图均保存在系统表空间
数据字典的结构
a)一个数据字典包括基础表,动态性能视图及数据字典视图。
b)数据字典视图又包含ALL视图,USER视图和DBA视图。
基础表
a)存储相关数据库信息的表,这些数据库的信息包括表、索引、约束,以及所有其他数据库对象结构的信息。
b)它们属于SYS用户,通过运行SQL脚本来创建(在数据库创建时自动发生)。
c)是Oracle系统的核心。
d)只有Oracle才能写和读取这些表。
e)基础表中的存储的信息通常是经过加密处理的。
f)大部分数据字典基础表的名称中都包含“$”等特殊字符
动态性能视图
a)在操作过程中,Oracle维护了一种“虚拟”表的集合,记录当前数据库的活动。
这些表称为动态性能表。
b)SYS拥有动态性能表,其名字都是以V_$开头的。
c)在这些表上面创建的视图被称为动态性能视图(dynamicperformanceview)。
d)可为这些视图创建公共同义词,同义词名称以V$开头。
ALL视图
包含了用户查询表时可以访问的所有对象的信息。
USER视图
前缀为USER,每个数据库用户都拥有一套属于自己的USER视图。
在USER视图中包含了该用户模式下所有对象的信息。
DBA视图
a)前缀为DBA,在DBA数据字典视图中包含着全部数据库对象的信息。
b)对于带有DBA前缀的视图,显示了整个数据库的情况。
c)只能被数据库管理员查询。
d)授予系统权限SELECTANYTABLE的用户都能查询带有DBA前缀的视图。
数据字典的用途
a)对于Oracle系统本身而言,当数据库实例运行时,会需要使用数据字典基础表中的信息。
b)Oracle从基础表中读取信息,来判断用户要求访问的对象是否存在。
c)当用户对数据库结构、对象结构做出修改时,Oracle向基础表中写入相应的修改信息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 体系结构