Oracle 逻辑存储结构
- 格式:doc
- 大小:207.00 KB
- 文档页数:5
一、基本的Oracle存储结构:表空间与数据文件Oracle数据库中具有两种类型的存储:物理存储和逻辑存储。
上面的Oracle存储结构模型中,可以看出下列要素:∙每个数据库(Database)都必须由一个或多个表空间(Tablespace)组成。
每个表空间都必须属于并且只属于一个数据库。
∙每个表空间都必须由一个或多个数据文件(Datafile)组成。
每个数据文件都必须属于并且只属于一个表空间。
∙每个数据文件都必须由一个或多个操作系统块(Operation System Block)组成。
每个操作系统块都必须属于并且只属于一个数据文件。
∙每个表空间都可以包含一个或多个段(Segment)。
每个段都必须存在并且只能存在于一个表空间内。
∙每个段都必须由一个或多个区间(Extent)组成。
每个区间都必须属于并且只属于一个段。
∙每个区间都必须由一个或多个Oracle数据块(Oracle Block)组成。
每个Oracle 数据块都必须属于并且只属于一个区间。
∙每个区间都必须被定位并且只能定位在一个数据文件内。
数据文件中的空间可以被分配为一个或多个区间。
∙每个Oracle数据块都必须由一个或多个操作系统块组成。
每个操作系统块都可以是并且只能是一个Oracle数据块的部分。
1、物理存储结构物理结构是操作系统操作Oracle数据库时能够看见的结构。
1.1、Oracle数据文件数据文件由下列3部分组成:头部、区间(已分配的空间)以及空闲空间(未分配的空间)。
oracle16数据文件的头部(Header)将其标识为数据库的一部分,并且存储了该数据文件的细节,细节包括数据文件所属的表空间以及最后执行的检查点。
这样,Oracle就能够在启动时检查所有相关文件是否同步。
数据文件的剩余部分由区间和空闲空间组成,通过创建、删除和更改Oracle的段(Segment)逻辑存储组件就可以对这些剩余部分进行管理。
每个Oracle数据文件都只属于一个表空间。
描述oracle数据库体系结构的组成及其关系。
Oracle数据库体系结构由以下几个部分组成:1. 实例(Instance):实例是在计算机内存中运行的一个进程,负责管理数据库的操作。
每个实例都有自己的内存空间和进程,可以同时运行多个实例。
2. 数据库(Database):数据库是一个存储数据的容器,包含了表、视图、索引等对象。
一个实例可以管理多个数据库,每个数据库由一个或多个数据文件组成。
3. 数据文件(Data File):数据文件是用来存储数据库的实际数据的文件,包含了表、索引等对象的数据。
一个数据库可以有多个数据文件,每个数据文件具有独立的文件名和路径。
4. 控制文件(Control File):控制文件是用来记录数据库的结构和状态信息的文件,包括数据库名、数据文件的路径、表空间的信息等。
一个数据库通常有一个或多个控制文件。
5. 日志文件(Redo Log File):日志文件是用来记录数据库的变化操作的文件,包括数据更改、事务回滚等。
日志文件用于实现数据库的恢复和数据的一致性。
每个数据库通常有多个日志文件。
6. 表空间(Tablespace):表空间是数据库中逻辑数据存储的单位,用来管理和组织对象。
每个表空间由一个或多个数据文件组成,不同表空间可以包含不同的数据对象。
7. 段(Segment):段是逻辑存储结构的基本单位,是指数据库中的一个连续空间。
每个表、索引等对象都占用一个或多个段。
8. 区(Extent):区是段的扩展单位,是一组连续的数据块。
一个段由多个区组成。
9. 块(Data Block):块是数据库存储的最小单位,通常是8KB大小。
每个数据文件由多个块组成。
以上组成部分之间的关系如下:- 实例与数据库:一个实例可以管理多个数据库,每个数据库都有自己的实例。
- 数据库与数据文件:一个数据库可以由一个或多个数据文件组成,每个数据文件存储数据库的实际数据。
- 实例与控制文件:一个实例通常有一个或多个控制文件,控制文件记录了数据库的结构和状态信息。
Oracle体系结构研究摘要:阐述了Oracle数据库的基本架构和Oracle数据库理论中的主要概念。
Oracle体系结构由存储结构、内存结构和进程结构组成,其中,存储结构由物理存储结构及逻辑存储结构组成;内存结构由SGA和PGA组成;进程结构由用户进程和Oracle进程组成。
关键词:ORACLE体系结构;存储结构;内存结构;进程结构1 Oracle的存储结构Oracle的存储结构分为物理存储结构和逻辑存储结构。
1.1 物理存储结构主要由数据文件、控制文件、联机日志文件及数据库实例构成。
Oracle数据库中有许多初始化参数,这些参数用于对整个数据库进行设置或调整,如设置数据库名、数据库块大小、控制文件的名称和位置、数据库实例数等信息。
Oracle 把这些参数存放在一个文件中,这个文件就叫初始化参数文件。
启动数据库时,Oracle会读取参数文件中的值,并根据这些值对数据库实例(instance)进行设置。
具体说是Oracle先从初始化参数文件中获得控制文件的名称及位置,打开控制文件,然后再从控制文件中读取数据文件和联机日志文件的名称和位置,打开它们,因为表、索引等对象的数据就存放在数据文件中,从而就打开了数据库。
1.1.1 控制文件Oracle启动数据库时会访问控制文件,控制文件是在创建数据库的时候创建的,它是一个很小的二进制文件,记录了数据库的名称、创建数据库的时间、数据文件的名称和位置、联机日志文件的名称和位置及表空间等信息。
所以说一个数据库的控制文件是相当重要的,一旦被损坏,数据库将不能正常启动和运行。
所以DBA应该镜像控制文件,把每个镜像的控制文件分布到不同的物理磁盘上,发生灾难时既使其中一个控制文件被损坏,也不会使整个数据库限于瘫痪。
1.1.2 数据文件当用户在Oracle中创建数据库的时候,就创建了一个或多个数据文件,表和索引等对象的数据就物理地存放在数据文件中。
一个表的数据可能会存储在多个数据文件中,但一个数据文件只能属于一个数据库。
oracledb的逻辑结构1. 实例(instance)实例是Oracle数据库的最高层次,它包含了数据库的内存结构和后台进程。
每个Oracle数据库都有一个对应的实例。
实例负责管理数据库的内存和进程,以及处理用户的请求。
2. 数据库(database)数据库是由多个表空间组成的,每个表空间又包含多个数据文件。
数据库是存储数据的物理结构,用于持久化存储数据。
一个Oracle 数据库可以包含多个数据库。
3. 表空间(tablespace)表空间是逻辑上的存储区域,用于组织和管理数据库中的数据。
每个表空间包含多个数据文件,用于存储表和索引等数据库对象。
不同的表空间可以有不同的存储特性和管理策略。
4. 数据文件(data file)数据文件是表空间的组成部分,用于存储表和索引等数据库对象的数据。
一个数据库可以包含多个数据文件,每个数据文件都有固定的大小和位置。
5. 段(segment)段是逻辑上的存储单位,每个段对应一个表、索引或者其他数据库对象。
段由一组连续的数据块组成,用于存储实际的数据。
6. 数据块(data block)数据块是数据库的最小存储单位,每个数据块包含一定数量的字节。
数据库中的数据被分割成多个数据块进行存储和管理。
7. 扩展(extent)扩展是一组连续的数据块,用于分配给段进行存储。
扩展是数据库的分配单位,当段需要更多的存储空间时,会向其分配新的扩展。
8. 逻辑块(logical block)逻辑块是Oracle数据库中数据的逻辑单位,每个逻辑块包含一定数量的字节。
逻辑块是对数据块的逻辑封装,用于提供更高层次的数据管理。
9. 段空间管理(segment space management)段空间管理是指如何分配和管理段的存储空间。
Oracle数据库支持两种段空间管理方式:自动段空间管理(Automatic Segment Space Management, ASSM)和手动段空间管理(Manual Segment Space Management)。
Oracle 体系结构概述完整的Oracle 数据库系统通常由两个部分组成:实例(INSTANCE )和数据库(DATABASE )。
数据库是由一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);实例则是由一组Oracle 后台进程/线程以及在服务器分配的共享内存区。
实例和数据库有时可以互换使用,不过二者的概念完全不同。
实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。
准确地讲,一个实例在其生存期中最多只能装载和打开一个数据库。
如果要想再打开其他数据库,必须先丢弃这个实例,并创建一个新的实例。
数据库的主要功能是保存数据,实际上可以将数据库看作是存储数据的容器。
数据库的存储结构也就是数据库存储数据的方式,Oracle 数据库的存储结构分为逻辑存储结构和物理存储结构,这两部分是相互独立但又密切相关的。
逻辑存储结构主要用于描述在Oracle 内部的组织和管理数据的方式,而物理存储结构则用于描述在Oracle 外部,即操作系统中组织和管理数据的方式。
Oracle 对逻辑存储结构和物理存储结构的管理是分别进行的,两者之间不直接影响。
因此Oracle 的逻辑存储结构能够适用于不同的操作系统平台和硬件平台,而不需要考虑物理实现方式。
在启动Oracle 数据库服务器时,实际上是在服务器的内存中创建一个Oracle 实例(即在服务器内存中分配共享内存并创建相关的后台进程),然后由这个实例来访问和控制磁盘中的数据文件。
图2-1以最简单的形式展示了Oracle 实例和数据库。
Oracle 有一个很大的内存块,称为系统全局区(SGA )。
文件文件文件文件文件数据库SGA后台进程后台进程后台进程后台进程后台进程后台进程后台进程实例图2-1 Oracle 实例和数据库当用户连接数据库时,实际上是连接到实例中,由实例负责与数据库通信息,然后再将处理结构返回给用户。
实验3 Oracle逻辑存储结构
一、实验环境
Oracle 10g
二、实验目的
(1)了解Oracle逻辑存储结构。
(2)掌握Oracle表空间管理。
(3)学会利用OEM管理表空间。
三、实验内容
(1)创建表空间
(2)编辑表空间
(3)查看表空间信息
(4)删除表空间
四、实验步骤
(1)创建表空间MyTblSpace
①选择OEM管理选项的“表空间项”
②单击“创建”按钮
③填写所建表空间的基本信息(按下图填写)
④单击“添加”按钮,将MyTblSpace表空间关联到物理文件(按下表填写)
⑤单击“确定”按钮,完成MyTblSpace表空间的创建
(2)编辑MyTblSpace表空间
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击“编辑”按钮
④单击上图中红色框框起的连接,将存储改为自动扩展,按下图填写后单击“继续”按钮
(3)查看表空间信息
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击上图中红色框框起的连接,可查看MyTblSpace表空间的信息。
(4)删除MyTblSpace表空间
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击“删除”按钮
④选中“从操作系统中删除关联的数据文件”,并单击“是”按钮。
oracle 表空间物理文件的名称及大小路径摘要:1.Oracle 表空间的概念2.Oracle 表空间的物理文件3.物理文件的命名规则4.物理文件的大小5.物理文件的路径正文:Oracle 表空间是Oracle 数据库中的一个重要概念,它是一个逻辑存储结构,用于存储表和索引等数据库对象。
在Oracle 数据库中,表空间是由一组物理文件组成的,这些物理文件实际上存储了表空间中的数据。
一、Oracle 表空间的概念表空间是Oracle 数据库中数据的基本组织单位,它是一个逻辑存储结构,可以包含多个表和索引等数据库对象。
表空间由一组物理文件组成,这些物理文件存储了表空间中的数据。
二、Oracle 表空间的物理文件1.物理文件的命名规则Oracle 表空间的物理文件名通常是以表空间的名称命名的,文件名的格式为:<表空间名>_<序号>_<文件扩展名>。
其中,表空间名表示表空间的名称,序号表示物理文件在表空间中的顺序,文件扩展名表示文件的类型,例如:.dbf、.df、.d0 等。
2.物理文件的大小Oracle 表空间的物理文件大小可以根据需要进行设置。
在创建表空间时,可以指定物理文件的最大容量,也可以设置自动扩展物理文件的大小。
物理文件大小的设置可以根据数据库的实际需求进行调整,以保证数据库的性能和存储空间的利用率。
3.物理文件的路径Oracle 表空间的物理文件路径通常位于数据库服务器的文件系统中,具体路径可以通过查询数据库的系统视图或使用操作系统的文件查找工具进行获取。
需要注意的是,物理文件的路径可能会因为数据库的备份、归档等操作而发生变化。
三、总结Oracle 表空间是由一组物理文件组成的,这些物理文件存储了表空间中的数据。
物理文件的命名规则、大小和路径都是数据库管理员在创建表空间时需要考虑的重要因素。
oracle自动扩展表空间原理Oracle自动扩展表空间原理引言在Oracle数据库中,表空间是逻辑存储结构,用于存储数据库中的对象,如表、索引等。
当表空间的存储空间不足时,就需要进行扩展。
本文将以浅入深的方式介绍Oracle自动扩展表空间的原理。
什么是自动扩展表空间自动扩展表空间是指在表空间的存储空间不足时,Oracle数据库自动进行空间的扩展,以满足数据的存储需求。
这种自动扩展表空间的机制,提高了数据库的可用性和性能。
自动扩展表空间的原理自动扩展表空间的原理主要包括以下几个方面:1. 数据字典的管理Oracle数据库使用数据字典来管理表空间的信息。
数据字典是一个系统表,它包含了数据库中所有对象的元数据信息。
在自动扩展表空间的过程中,数据字典记录了表空间的当前大小、剩余空间等信息。
2. 自动扩展参数的设置Oracle数据库中有一些参数用于控制自动扩展表空间的行为。
其中包括AUTOEXTEND和NEXT参数。
AUTOEXTEND参数用于指定当表空间的空间不足时,是否自动进行扩展。
NEXT参数用于指定每次扩展的大小。
3. 自动扩展策略自动扩展表空间的策略可以分为两种情况:均匀扩展和不均匀扩展。
•均匀扩展:当表空间的剩余空间小于一定阈值时,自动进行均匀扩展,即每次扩展的大小相同。
•不均匀扩展:当表空间的剩余空间小于一定阈值时,根据实际需求自动进行不均匀的扩展,即每次扩展的大小可以不相同。
自动扩展策略的选择需要根据实际情况来定,以保证数据库的性能和空间的可用性。
4. 自动扩展的触发机制自动扩展表空间的触发机制主要包括两种:增量触发和阈值触发。
•增量触发:当表空间的存储空间小于一定百分比时,自动进行扩展,扩展的大小为设置的增量。
•阈值触发:当表空间的剩余空间小于一定阈值时,自动进行扩展,扩展的大小可以根据实际情况设定。
增量触发和阈值触发的机制可以根据实际需求来选择,并可以结合使用。
结论自动扩展表空间是Oracle数据库提供的一个重要功能,能够有效地提高数据库的可用性和性能。
简答题(4*5’)1、简述Oracle数据库体系结构的构成。
答:数据库实例,物理存储结构和逻辑存储结构。
实例包括内存结构与后台进程;物理存储结构主要用于描述Oracle数据库外部数据的存储,即在操作系统中如何组织和管理数据,与具体的操作系统有关;逻辑存储结构主要描述Oracle数据库内部数据的组织和管理方式,与操作系统没有关系。
2、简述Oracle数据库逻辑存储结构的组成及相互关系。
答:Oracle数据库逻辑存储结构包括表空间、段、区、块四种。
其中,数据块是数据库中最小I/O单位,由若干连续的数据块组成的区是数据库中最小的存储分配单元,由若干区形成的段是相同类型的数据存储分配区域,由若干段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。
3、简述Oracle数据库重做日志文件的作用。
答:重做日志文件,保存了用户对数据库所作的更新操作,包含的主要信息是记录事务的开始和结束、事务中每项操作的对象和类型、更新操作前后的数据值等。
4、简述索引作用并说明索引按不同分类依据分为哪些类。
答:创建索引的作用是为了提高对表中数据的查询效率。
根据索引值是否唯一,可分为唯一性索引和非唯一性索引;根据索引的组织结构不同,可分为平衡索引和位图索引;根据索引基于列数不同,可分为单列索引和复合索引。
5、简述Oracle的安全控制机制有哪些?答:1)、用户管理2)、权限管理3)、角色管理4)、表空间设置和配额5)、用户资源限制6)、数据库审计6、简述Oracle数据库角色的种类、作用以及如何利用角色为用户授权。
答:SYS:是数据库中具有最高权限的数据库管理员,可以启动、修改和关闭数据库,拥有数据字典;SYSTEM:是一个辅助的数据库管理员,不能启动和关闭数据库,但可以进行其他一些管理工作,如创建用户、删除用户等。
SCOTT:是一个用于测试网络连接的用户,其口令为TIGER。
PUBLIC:实质上是一个用户组,数据库中任何一个用户都属于该组成员。
ORACL复习题一、填空题:1、ORACLE数据库默认最高管理员账号是。
sys2、ORACLE数据库系统由、组成。
逻辑结构、物理结构和实例3、ORACLE数据库具有3种主要类型的文件,它们分别是:、、。
数据文件,控制文件,日志文件4、ORACLE内存结构主要分为、。
系统全局区,程序全局区5、ORACLE逻辑存储结构包括、、、。
块,区,段,表空间6、在SQL SELECT语句查询中,要去掉查询结果中的重复记录,应该使用_________关键字。
Distinct7、使用SQL语言的SELECT语句进行分组查询时,如果希望去掉不满足条件的分组,应当使用_________子句。
Having8、连接到ORACLE数据库的方法有、。
SQL*PLUS、OEM9、SCOTT用户的默认口令是:。
tiger10、SYS用户登录SQL*PLUS时,连接字符应该为。
数据库名AS sysdba11、安装ORACLE时,(是/否)一定要进行数据库实例的安装。
否12、要登录OEM,必须启动才行。
OracleDBConsoleORCL服务13、OUI工具用来安装和ORACLE组件。
卸载14、打开ORACLE安装目录下的install中的文件可以查看OEM、ISQL*PLUS的URL和端口号。
Portlist.ini15、每个数据库至少有一个系统表空间,被称为表空间。
system16、安装过程中进行了口令的设置,但是出现了口令有错的信息,是因为原因。
口令设置不符合ORACLE的约定17、EXP命令是用来进行文件的。
导出18、数据库可以使用工具进行创建。
DBCA19、登录ISQL*PLUS页面的默认端口号为。
556020、支持客户端应用程序到ORACLE数据库服务器网络会话的组件是。
ORACLE NET21.在SQL*PLUS中使用SQL*PLUS的命令可以显示表的结构信息。
22.所谓方案,就是一系列数据库对角的集合,是数据库中存储数据的一个逻辑表示。
Oracle数据库逻辑结构2.1.1Oracle系统体系结构话说与其他数据库产品不同,Oracle有其自己独特的系统体系结构。
Oracl e系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。
Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。
其中,实例是维系物理结构和逻辑结构的核心,如图2-1和图2-2所示。
图2-1表明了数据库三级模式及其物理文件之间的关系。
图2-1 数据库模式及其物理文件关系示意图图2-2 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。
只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。
Oracle数据库由构成物理结构的各种文件组成,如数据文件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。
Oracle数据库服务器就是数据库和实例的组合。
2.1.2Oracle逻辑结构Oracle的逻辑结构是一种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系,如图2-3和图2-4所示。
图2-3 Oracle 10g数据库层次结构图图2-4 段、区和数据块之间的关系1.数据块Oracle数据块(Data Block)是一组连续的操作系统块。
分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。
数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。
从Oracle9i开始,在同一数据库中不同表空间的数据块大小可以不同。
数据块是O racle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。
1.简单描述Oracle数据库体系结构的组成及其关系?答:Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。
其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成.逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成.实例是数据库运行的软件结构,由内存结构和后台进程组成。
数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。
2、说明Oracle数据库物理存储结构的组成?Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。
在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。
3、说明Oracle数据库数据文件的作用?数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。
4、说明Oracle数据库控制文件的作用?控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。
在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件.5、说明Oracle数据库重做日志文件的作用?重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。
如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。
6、说明数据库逻辑存储结构的组成和相互关系.Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。
其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库.7、说明数据库表空间的种类,以及不同类型表空间的作用.数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。
Oracle数据库逻辑结构2.1.1Oracle系统体系结构话说与其他数据库产品不同,Oracle有其自己独特的系统体系结构。
Oracl e系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。
Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。
其中,实例是维系物理结构和逻辑结构的核心,如图2-1和图2-2所示。
图2-1表明了数据库三级模式及其物理文件之间的关系。
图2-1 数据库模式及其物理文件关系示意图图2-2 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。
只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。
Oracle数据库由构成物理结构的各种文件组成,如数据文件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。
Oracle数据库服务器就是数据库和实例的组合。
2.1.2Oracle逻辑结构Oracle的逻辑结构是一种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系,如图2-3和图2-4所示。
图2-3 Oracle 10g数据库层次结构图图2-4 段、区和数据块之间的关系1.数据块Oracle数据块(Data Block)是一组连续的操作系统块。
分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。
数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。
从Oracle9i开始,在同一数据库中不同表空间的数据块大小可以不同。
数据块是O racle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。
Oracle 逻辑存储结构逻辑存储结构是Oracle 数据库存储结构的核心内容,对Oracle 数据库的所有操作都会涉及到其逻辑存储结构。
数据库的逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。
在逻辑上,Oracle 将保存的数据划分为一个个小单元来进行存储和维护,高一级的存储单元由一个或多个低一级的存储单元组成。
Oracle 的逻辑存储单元从小到大依次为:数据块(DA TA BLOCKS )、盘区(EXTENT )、段(SEGMENTS )和表空间(TABLE SPACES ),图2-2显示了各逻辑单位之间的关系。
数据库...表空间表空间段段盘区数据块盘区数据块段段数据库...表空间表空间段段盘区数据块盘区数据块段段图2-2 数据库的逻辑存储组成由图2-2可知,Oracle 数据库由多个表空间组成,而表空间又由许多段组成,段由多个盘区组成,盘区又由多个数据块组成。
1 数据块数据块是Oracle 用来管理存储空间的最小单元,也是执行数据库输入输出操作时的最小单位。
相对应地,操作系统执行输入输出操作的最小单位为一个操作系统块的大小。
在操作系统中,执行I/O 操作是以操作系统块为单位,而在Oracle 中,执行的I/O 操作以Oracle 数据块为单位。
Oracle 块的大小是操作系统块大小的整数倍。
以Windows NT 操作系统为例,NTFS 格式的磁盘分区一般为4KB 大小,因此Oracle 块的大小为8KB 等。
数据块的标准大小由初始化参数DB_BLOCK_SIZE 确定,具有标准大小的块被称为标准块。
Oracle 支持在同一个数据库中使用多种大小的块,与标准块大小不同的块称为非标准块。
可以通过查询V$PARAMETER 数据字典,可以获得参数DB_BLACK_SIZE 的值,该参数值同时也是数据块的尺寸大小。
例如:SQL> select name,value2 from v$parameter where name ='db_block_size';NAME V ALUE--------------------------- --------------------------db_block_size 8192在数据块中可以存储各种类型的数据,如表数据、索引数据、簇数据等。
无论数据块中存放何种类型的数据,块都具有相同的结构,图2-3列出一个Oracle 块的基本结构。
块头部表目录行目录空闲空间行空间图2-3 数据块的结构数据块的各组成部分分别介绍如下:●块头部块头部包含块中一般的属性信息,如块的物理地址、块所属的段的类型(如数据段、索引段、回退段等)。
●表目录如果块中存储的数据是表数据(表中一行或多行记录),则表目录中存储关于该表的相关信息。
●行目录如果块中存储的数据为表数据(表中的一行或多记录),则在行目录中保存这些记录的相关信息。
●空闲空间空闲空间是块中尚未使用的存储空间。
当向数据块中添加新数据时,将减小空闲空间。
●行空间行空间是块中已经使用的存储空间,在行空间中存储了数据库对象的数据。
例如,表中的一行或多行记录。
块头部、表目录和行目录共同组成块的头部信息区。
块的头部信息区中并不存放实际的数据库数据,它只起到引导系统读取数据的作用。
因此,如果头部信息区被损坏,则整个数据块将失效,数据块中存储的数据将丢失。
而空闲空间和行空间则共同构成块的存储区,空闲空间和行空间的总和即是块的总容量。
2 盘区盘区是由一系列物理上连续存放的数据块所构成的Oracle存储结构,由一个或多个数据块组成一个盘区,而一个或多个盘区组成一个段。
当一个段中的所有空间被使用完后,系统将自动为该段分配一个新的盘区。
盘区是Oracle存储分配的最小单位。
在Oracle中创建带有实际存储结构的数据库对象时,Oracle将为对象分配相应的盘区,以构成一个段来提供存储空间。
当段中已经分配的区写满后,Oracle将为段分配一个新的区,以便容纳更多的数据库。
3 段段是由一系列区组成的,它也不再是存储空间的分配单位,而是一个独立的逻辑存储结构。
对于具有独立存储结构的对象,它的数据全部存储在保存它的段中。
一个段只属于一个特定的数据库对象,每当创建一个具有独立段的数据库对象时,Oracle将为它创建一个段。
例如,在Oracle中创建表时会为它分配若干个区,以组成表的数据段。
在Oracle中,不同类型的数据库对象拥有不同类型的段。
根据段中存放的数据库对象类型,可以将段分为几种类型:数据段、索引段、临时段、回退段和LOB段。
1.数据段在数据段中保存的是表中的记录。
当用户创建表的同时,Oracle系统将为表创建数据段。
Oracle中所有未分区的表都使用一个段来保存数据。
当表中的数据增加时,数据段也将变大,数据段的增大过程是通过添加新盘区实现的。
在表空间中创建了多少个表,相应地在该表空间就有同量的数据段,并且数据段的名称与它对应的表名相同。
2.索引段在索引段中保存的是索引中的索引信息。
在使用CREATE INDEX语句创建索引,或者在定义约束是自动创建索引的同时,Oracle将为索引创建它的索引段。
3.临时段当用户执行查询等操作时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句,以及在排序过程中产生的临时数据。
Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。
在执行如下几种类型的SQL语句时,Oracle都会在临时表空间中为语句操作分配一个临时段:●CREATE INDEX●SELECT …ORDER BY●SELECT DISTINCT●SELECT ... GROUP BY●SELECT … UNION●SELECT … INTERSECT●SELECT … MINUS如果经常需要执行上面类型的语句,最好调整SORT_AREA_SIZE初始化参数来增大排序区,使排序操作尽量能够在内存中完成,以获得更好的性能。
当操作执行完毕后,为该操作分配的临时段将被释放。
当带有排序的操作十分频繁时,临时段的分配和释放也将十分频繁,因此为了提高性能,Oracle创建了一个独立的临时表空间,并在其中存放临时段,这样可以避免与其他表空间争用存储空间。
4.回退段回退段用于保存回退条目,Oracle将被用户修改前的值保存在回退条目中。
利用这些信息,用户可以撤销未提交的操作,Oracle则可以利用回退段来维护数据库的读写一致性,并能够从实例崩溃中时进行恢复。
在Oracle 11g中,回退也被称为撤销管理,并且不需要为数据库创建多个回退段,也不需要管理回退段,只需要创建一个撤销表空间。
对回退段的管理由Oracle自动完成,这就是自动撤销管理。
5.LOB段如果表中含有如CLOB和BLOB等大对象类型数据时,系统将创建LOB段以存储相应的大型对象数据。
LOB段独立于保存表中其他数据的数据段。
4 表空间表空间是在Oracle中用户可以使用的最大的逻辑存储结构,用户在数据库中建立的所有内容都被存储在表空间中。
Oracle使用表空间将相关的逻辑结构组合在一起,表空间在物理上与数据文件相对应,每一个表空间是由一个或多个数据文件组成的,一个数据文件只可以属于一个表空间,这是逻辑与物理的统一。
所以存储空间在物理上表现为数据文件,而在逻辑上表现为表空间。
数据库管理员可以创建若干个表空间,也可以为表空间增加或删除数据文件。
表空间通过数据文件来扩大,表空间大小等于构成该表空间的所有数据文件大小之和。
由于表空间物理上对应了操作系统的一个或多个数据文件,因此在表空间中创建的对象在物理上可以有如下两种存储方式:●若表空间只对应一个数据文件,该表空间中所有的对象都存储在这个数据文件中。
●若表空间对应于多个数据文件,Oracle可将一个对象存储在该表空间的任意一个数据文件中。
事实上,Oracle可以将同一个对象的数据分布在表空间的多个数据文件中。
在创建数据库时,Oracle会自动创建一些默认的表空间,其中除了用于存储用户数据的普通表空间外,在一个数据库中还会存在三种类型的表空间:SYSTEM表空间、撤销表空间和临时表空间。
这三种表空间的创建、维护与管理都与普通的用户表空间不同,在本节中将分别进行简单介绍。
1.SYSTEM表空间在每一个数据库中,都有一个名为SYSTEM的表空间,即系统表空间。
该表空间是在创建数据库时自动创建的,在SYSTEM表空间中保存有如下信息:●在SYSTEM表空间中存储数据库的数据字典和内部系统表基表。
数据字典是一组保存数据库自身信息的内部系统表和视图。
●在SYSTEM表空间中存储所有PL/SQL程序的源代码和解析代码,包括存储过程、函数、包和触发器等。
在需要保存大量PL/SQL程序的数据库中,应当设置足够大的SYSTEM表空间。
●在SYSTEM表空间中存储数据库对象(如视图、对象类型说明、同义词和序列)的定义。
当在数据库中创建一个新的对象时,对象的实际数据可以存储在其他表空间中,但对象的定义信息切保存在SYSTEM表空间中。
通过使用如下的语句,可以查看数据库中数据字典的信息:select * from dict查看内部系统表的SQL:select * from v$fixed_view_definition数据库管理员DBA对数据库系统中的数据字典必须有一个很深刻的了解,必须准备一些基础的SQL语句,通过这些SQL可以立即了解系统的状况和数据库的状态。
大量的读了操作、少量的写入操作是该表空间的一个显著的特点。
因此SYSTEM表空间对于Oracle数据库而言是至关重要的。
一般在SYSTEM表空间中只应该保存属于SYS模式的对象,即与Oracle自身相关的数据,而用户在对象和数据都应当保存在非SYSTEM表空间中。
另外,在10g和11g中,Oracle新增了表空间SYSAUX,以此作为SYSTEM表空间的辅助表空间,SYSAUX表空间一般不用于存储用户数据,并由Oracle系统内部自动维护。
2.撤销表空间撤销表空间是特殊的表空间,它专门用来在自动撤销管理方式下存储撤销信息,即回退信息。
当数据库进行更新、插入、删除等操作的时候,新的数据被更新到原来的数据文件中,而旧的数据就被放到撤销段中。
如果数据需要回滚,那么可以从撤销段将数据再复制到数据文件中,来完成数据的回退。
在系统恢复的时候,撤销段可以用来撤销没有被提交的数据,解决系统的一致性问题。
除了撤销段外,在撤销表空间中不能建立任何其他类型的段,即任何数据库用户,都不能在撤销表空间中创建数据库对象(如表、索引等)。
在撤销表空间中,存在大量的写入操作,而只有少量的读取操作。
数据库管理员可以为数据库创建多个撤销表空间,但是每个数据库实例最多只能使用一个撤销表空间。