数据库结构和空间管理
一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。
物理数据库结构(physical database structure)是由构成数据库的 *** 作系统文件所决定。每一个ORACLE数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。
逻辑数据库结构是用户所涉及的数据库结构。一个ORACLE数据库的逻辑结构由下列因素决定:
l 一个或多个表空间
l 数据库模式对象(即表、视图、索引、聚集、序列、存储过程)
逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何使用。模式对象(schema object)用它们之间的联系组成了一个数据库的关系设计。
1) 物理结构
(1) 数据文件
每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
l 一个数据文件仅与一个数据库联系。
l 一旦建立,数据文件不能改变大小
l 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由 ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。
(2) 日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有 *** 作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。
(3) 控制文件
每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:
l 数据库名;
l 数据库数据文件和日志文件的名字和位置;
l 数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库 *** 作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
2) 逻辑结构
数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。
(1) 表空间
一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA可利用表空间作下列工作:
l 控制数据库数据的磁盘分配。
l 将确定的空间份额分配给数据库用户。
l 通过使单个表空间在线或离线,控制数据的可用性。
l 执行部分数据库后备或恢复 *** 作。
l 为提高性能,跨越设备分配数据存储。
数据库、表空间和数据文件之间的关系如下图所示:
Database
SYSTEM DATA
Tablespace Tablespace
DTATAFILE1
(2MB) DATAFILE2
(2MB) DATAFILE3
(2MB)
Driver1 Driver2
。每个数据库可逻辑划分为一个或多个表空间
。每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。DBA可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。
每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PL/SQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是为数据库建的,DBA在SYSTEM表空间中需要规划这些对象所需要的空间。
表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。
DBA可以使ORACLE数据库中任何表空间(除SYSTEM表空间外)在线(ONLINE)或离线(OFFLINE)。表空间通常是在线,以致它所包含的数据对数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,DBA可以使其离线。
。使部分数据不可用,而剩余的部分允许正常存取
。执行离线的表空间后备
。为了修改或维护一应用,使它和它的一组表临时不可用。
包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。
在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。
当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多个表空间,将不同类型的数据分开,更方便DBA来管理数据库。
ORACLE 数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不包含任何数据。表空间可以在线或离线。在ORACLE中还允许单独数据文件在线或离线。
(2) 段、范围和数据块
ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。
段
段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。在ORACLE数据库中有几种类型的段:数据段、牵引段、回滚段和临时段。
数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。
索引段:每一个索引有一索引段,存储索引数据。
回滚段:是由DBA建立,用于临时存储要撤消的信息,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。
临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。
ORACLE对所有段的空间分配,以范围为单位。
范围
一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时,ORACLE为该段分配一个新的范围。
为了维护的目的,在数据库的每一段含有段标题块(segment header block)说明段的特征以及该段中的范围目录。
数据块
数据块(data block)是ORACLE管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位,其大小可不同于 *** 作系统的标准I/O块大小。
数据块的格式:
公用的变长标题
表目录
行目录
未用空间
行数据
(3) 模式和模式对象
一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式。模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包含在表空间的一个或多个数据文件中。
表
表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。
视图
一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表(virtual table)。视图可在使用表的许多地方使用。
由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义254列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行的全部 *** 作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发器的限制。
视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。
引入视图有下列好处:
。通过限制对表的行预定义集合的存取,为表提供附加的安全性
。隐藏数据复杂性。
。为用户简化命令
。为基本表的数据提供另一种观点。
。可将应用隔离基本表定义的修改
。用于不用视图无法表示的查询。
。可用于保存复杂查询。
聚集
聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。例如:EMP表各DEPT表共享DEPTNO列,所以EMP表和DEPT表可聚集在一起,聚集码的列为DEPTNO列,该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中。
索引
索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。ORACLE索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。
索引可建立在一表的一列或多列上,一旦建立,由ORACLE自动维护和使用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入 *** 作的性能会下降。
索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束。
组合索引是在表的某个列上所建立的一索引。组全索引可加快SELECT语句的检索速度,在其WHERE子句中可引用组合索引的全部或主要部分 。所以在定义中给出列的次序,将经常存取的或选择最多的列放在首位。
在建立索引时,将在表空间自动地建立一索引段,索引段空间分配和保留空间的使用受下列方式控制:
索引段范围的分配常驻该索引段的存储参数控制。
其数据块中未用空间可受该段的PCTFREE参数设置所控制。
序列生成器
序列生成器(sequence generator)产生序列号。在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘I/O或事务封锁。
序列号为ORACLE整数,最多可有38个数字。一个序列定义指出一般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的定义以行存储在SYSTEM表空间中的数据字典表中,所以所有序列定义总是可用。由引用序列号的SQL语句使用序列号,可生成一个新的序列号或使用当前序列号。一旦在用户会话中的SQL语句生成一序列号,该序列号仅为该会话可用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码。
1、extent就是扩展的意思,表空的extent呢包括了:initial_extent、next_extent、min_extents、max_extents 等内容,其意义就是:初始扩展数,下一次扩展数,最小扩展数和最大扩展数。这些概念实际上在9i以上版本中就弱化了,主要是现在建立的数据库基本上都是采用本地管理的,而不是字典管理方式。extent是一个数量的概念,并不是大小概念,每个extent是由很多个block构成的,每个block的大小呢在表空间建立后就是确定的(如果在表空间建立时没有特殊指定,那么block的大小就和数据库创建时设定的blocksize相同)。在建立表空间的时候当然可以指定表空间的扩展值,但是要注意,如果你想指定表空间的扩展的大小的话必须指定为blocksize的整数倍。
2、uniform实际上是段的概念,就是在表空间本地管理过程中对不同对象使用相同的段设置。如果使用了uniform参数那么表空间的段管理方式就不再是system,而是你设定的uniform了。
这些实际上是数据库的基本概念,你可以了解一下,块、区、段等等的基础概念就比较清楚了。
数据库技术涉及到许多基本概念,主要包括:信息,数据,数据处理,数据库,数据库管理系统以及数据库系统等。
数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心。数据库技术研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题,在数据库系统中减少数据存储冗余、实现数据共享、保障数据安全以及高效地检索数据和处理数据。数据库技术的根本目标是要解决数据的共享问题。 数据管理技术是对数据进行分类,组织,编码,输入,存储,检索,维护和输出的技术数据管理技术的发展大致经过了以下三个阶段:人工管理阶段;文件系统阶段;数据库系统阶段
人工管理阶段
20世纪50年代以前,计算机主要用于数值计算从当时的硬件看,外存只有纸带,卡片,磁带,没有直接存取设备;从软件看(实际上,当时还未形成软件的整体概念),没有 *** 作系统以及管理数据的软件;从数据看,数据量小,数据无结构,由用户直接管理,且数据间缺乏逻辑组织,数据依赖于特定的应用程序,缺乏独立性
文件系统阶段
50年代后期到60年代中期,出现了磁鼓,磁盘等数据存储设备新的数据处理系统迅速发展起来这种数据处理系统是把计算机中的数据组织成相互独立的数据文件,系统可以按照文件的名称对其进行访问,对文件中的记录进行存取,并可以实现对文件的修改,插入和删除,这就是文件系统文件系统实现了记录内的结构化,即给出了记录内各种数据间的关系但是,文件从整体来看却是无结构的其数据面向特定的应用程序,因此数据共享性,独立性差,且冗余度大,管理和维护的代价也很大
数据库系统阶段
60年代后期,出现了数据库这样的数据管理技术数据库的特点是数据不再只针对某一特定应用,而是面向全组织,具有整体的结构性,共享性高,冗余度小,具有一定的程序与数据间的独立性,并且实现了对数据进行统一的控制 ⒈21数据模型的概念及要素数据模型是现实世界在数据库中的抽象,也是数据库系统的核心和基础数据模型通常包括3个要素:
⑴数据结构数据结构主要用于描述数据的静态特征,包括数据的结构和数据间的联系
⑵数据 *** 作数据 *** 作是指在数据库中能够进行的查询,修改,删除现有数据或增加新数据的各种数据访问方式,并且包括数据访问相关的规则
⑶数据完整性约束数据完整性约束由一组完整性规则组成
⒈22 常用的数据模型
数据库理论领域中最常见的数据模型主要有层次模型,网状模型和关系模型3种
⑴层次模型(Hierarchical Model)层次模型使用树形结构来表示数据以及数据之间的联系
⑵网状模型(Network Model)网状模型使用网状结构表示数据以及数据之间的联系
⑶关系模型(Relational Model)关系模型是一种理论最成熟,应用最广泛的数据模型在关系模型中,数据存放在一种称为二维表的逻辑单元中,整个数据库又是由若干个相互关联的二维表组成的
⒈22 常用的数据模型
当前,已经有一些流行的,也比较成熟的软件产品能够很好地支持关系型数据模型,这些产品也因此称为关系型数据库管理系统(Relational DataBase Management System,RDBMS)例如,微软公司的Microsoft Access和MS-SQL Server,Sybase公司的Sybase,甲骨文公司的Oracle以及IBM公司的DB2其中,Microsoft Access是一个中小型数据库管理系统,适用于一般的中小企业;MS-SQL Server,Sybase和Oracle基本属于大中型的数据库管理系统;而DB2则属于大型的数据库管理系统,并且对计算机硬件有很高和专门的要求
如何学习Oracle
经常有一些Oracle的初学者问到这个问题,这里算是一个统一答复。
1、如果有一定的数据库基础,知道SQL是怎么回事,即使写不出来简单的SQL,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和SQL语言,不需要很深,更不需要去记忆那些复杂的SQL命令,这些可以留在以后边应用边学习、记忆。
2、要想学好ORACLE,首先要学习ORACLE的体系结构,现在你不需要深入理解它们,但要分清几个关键的概念:
instance&database,memorystructure,process&thosefiles,suchasdatafile,controlfile,initparameterfileetc
以及database,tablespace,datafile和tablespace,segmnet,extent&block它们之间的关系。
当然还要分清undotablespace&redologfile等,对于很多初学者来说,能够对这些概念有个较为清晰的认识并不是一件容易的事,而这些并非Oracle的全部。
3、2是有关ORACLE的一些基本概念,下面要学习的是一些简单的的实际 *** 作,就是如何去管理ORACLE数据库,当然不是管理全部的ORACLE。在此过程中你将对SQL和ORACLE体系结构有个更深入的了解。
4、到了这一步你基本上算是初步掌握了ORACLE,下面将要根据你的方向来具体学习其它的ORACLE知识了。如果你是开发人员,则需要更多地去学习PL/SQL以及DEVELOPER,而这将是一门新的课程。如果你是一名DBA,请继续。
5、现在你可以根据自己的实际情况,进行有选择的学习,也就是说下面的内容没有特别顺序要求。可以选择深入学习ORACLE的管理、备份与恢复、性能调整、网络等。当然在学习这些知识的过程中,如果有实际的工作更好,这样你可以在实际中成长,学会TROUBLESHOOTING。
6、当然在学习的过程中,你可以在网站或论坛中与他人进行交流,可以看别人的一些经验文章,也可以自己写一些心得体会。
在此也希望你能早日好学好你的oracle!
以上就是关于关于Oracle Database cluster table的概念全部的内容,包括:关于Oracle Database cluster table的概念、oracle表空间extens是什么意思、数据库技术的基本概念等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)