您现在的位置是:首页 >技术教程 >Oracle的基本术语网站首页技术教程
Oracle的基本术语
目录
备注:本文框架分类参考主编©钱慎一、张素智编写《Oracle11g从入门到精通》的第一章第三节,部分内容详情均摘自此书。
一、数据字典
数据字典是Oracle数据库的重要组成部分。它由一系列拥有数据库元数据(metadata)信息的数据字典表和用户可以读取的数据字典视图组成,存放有Oracle数据库所用的有关信息,其中主要内容包括如下:
- 系统的空间信息,即分配了多少空间,当前使用了多少空间等。
- 数据库中所有模式对象的信息,如表、视图、簇、同义词及索引等。
- 例程运行的性能和统计信息。
- Oracle用户的名字。
- 用户访问或使用的审计信息。
- 用户及角色被授予的权限信息。
- 列的约束信息的完整性。
- 列的缺省值。
在Oracle数据库中,数据字典可以看作是一组表和视图结构。它们存放在SYSTEM表空间中。在数据库系统中,数据字典不仅是每个数据库的核心,而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。通过数据字典可实现如下功能:
- 当执行DDL语句修改方案、对象后,Oracle都会将本次修改的信息记录在数据字典中。
- 用户可以通过数据字典视图获得各种方案对象和对象的相关信息。
- Oracle通过查询数据字典表或数据字典视图来获取有关用户、方案、对象的定义信息以及其他存储结构的信息。
- DBA可以通过数据字典的动态性能视图监视例程的状态,作为性能调整的依据。
若想了解数据字典的更多内容可查看我的这篇文章《Oracle中数据字典及相关查询应用》,链接:http://t.csdn.cn/UnMMl
二、数据文件
一个Oracle数据库可以拥有一个或多个物理的数据文件。数据文件包含了全部数据库数据。逻辑数据库结构的数据也物理地存储在数据库的数据文件中。
数据文件具有如下特征:
- 一个数据库可拥有多个数据文件,但一个数据文件只对应一个数据库。
- 可以对数据文件进行设置,使其在数据库空间用完的情况下进行自动扩展。
- 一个表空间(数据库存储的逻辑单位)可以由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在Oracle的内存存储区中。例如:用户要存取数据库一个表的某些数据,如果请求的数据不在数据库的内存存储区中,则从相应的数据文件中读取并存储在内存存储区。当数据被修改或是插入新数据时,不必立刻写入数据文件,而是把数据暂时存储在内存,由Oracle的后台进程DBWR来决定何时将其写入数据文件中,这是为了减少磁盘/O的次数,提高系统的效率。
数据文件是用于存储数据库数据的文件,如表、索引数据等都物理地存储在数据文件中。这就把数据文件和表空间联系在一起。表空间是一个或多个数据文件在逻辑上的统一组织,而数据文件是表空间在物理上的存在形式。没有数据文件的存在,表空间就失去了存在的物理基础:而离开了表空间,Oracle就无法获得数据文件的信息,无法访问到对应的数据文件,这样的数据文件就成了垃圾文件。
数据文件的大小可以用两种方式表示,即字节和数据块。数据块是Oracle数据库中最小的数据组织单位,它的大小由参数“DB_BLOCK_SIZE”来确定。
梳理总结:
Oracle数据库中的数据文件(Data File)是用于存储数据库数据的基本物理结构。每个Oracle数据库实例都有一个或多个数据文件,它们包含了表、索引、视图等对象的实际数据。
以下是关于Oracle中数据文件的一些重要信息:
数据文件的类型:在Oracle 中,有两种类型的数据文件:控制文件(Control File)和数据文件(Data File)。
数据文件的特点:每个数据文件都记录着相应的数据库块(block)的信息,包括块地址、块大小、块状态等,并且按照固定大小划分(通常为2KB、4KB、8KB、16KB、32KB或64KB)。对于大型数据文件,Oracle允许使用数据文件组技术将它们划分为多个部分,从而识别它们。
数据文件的路径:在Oracle启动时,DBMS会查找特定数据库使用哪些数据文件,并且读取这些文件来恢复数据库。每个数据文件都在操作系统上面都有一个物理路径,该路径可以具有绝对或相对位置。
数据文件的创建方式:新增一个数据文件必须使用 ALTER TABLESPACE 语句并指定文件名和路径,预计大小,以及如果要自动增加,那么应该采取何种策略。
数据文件的容量管理:针对每个数据文件,我们可以根据需要执行扩展操作使其具有更大的容量,然后由表空间来使用它。Oracle还提供了一些内存管理机制,例如自动扩展或自动收缩。
三、控制文件
数据库控制文件是一个很小的二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功地启动和运行。创建数据库时,同时就提供了与之对应的控制文件。在数据库使用过程中,Oracle不断地更新控制文件,所以只要数据库是打开的,控制文件就必须处于可写状态。若由于某些原因控制文件不能被访问,则数据库也就不能正常工作了。
每一个Oracle数据库有一个控制文件,它记录着数据库的物理结构,其中主要包含下列信息类型:
- 数据库名称。
- 数据库数据文件和日志文件的名字和位置。
- 数据库建立日期。
- 日志历史。
- 归档日志信息。
- 表空间信息。
- 数据文件脱机范围。
- 数据文件拷贝信息。
- 备份组和备份块信息。
- 备份数据文件和重做日志信息。
- 当前日志序列数。
- 检查点信息(CHECKPOINT)。
Oracle数据库的控制文件是在数据库创建的同时创建的。默认情况下,在数据库创建期间至少有一个控制文件副本,如在Windows平台下,将创建3个控制文件的副本。
每一次Oracle数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,Oracle自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。如果数据库的物理结构发生了变化,用户应该立即备份控制文件。一旦控制文件不幸被毁损,数据库便无法顺利启动。也因为如此,控制文件的管理与维护工作显得格外重要。
梳理总结:
Oracle数据库中的控制文件(Control File)是一个二进制文件,它包含了对于整个数据库实例的重要的信息、元数据和其他相关信息。每个Oracle实例必须拥有至少一个控制文件才能正常启动和运行。
以下是关于Oracle中控制文件的一些重要信息:
作用:当Oracle数据库服务启动时,BDMS从控制文件读取到关键信息,如数据库名称、数据文件地址、日志文件地址等,并根据这些信息来恢复数据库。
文件数量:一个Oracle数据库实例通常包含多个控制文件,以防止单点故障,其中最多可以有10个控制文件备份作为冗余备份。
内容变化:控制文件内容会在数据库创建时发生变化,比如,当创建或删除表空间、更改数据库状态、执行归档操作时都会影响控制文件内容。
自动备份:如果正确配置了Oracle的备份策略,在数据库进行在线备份的同时,Oracle可以自动创建一个新的控制文件副本并将其存储在备份设备上,以便在出现问题时进行恢复。
验证控制文件的完整性:由于控制文件非常重要,因此建议定期检查和验证控制文件的完整性和有效性。Oracle可以通过 ALTER DATABASE BACKUP CONTROLFILE TO 来生成控制文件备份。
四、日志文件
日志文件也称为重做日志文件(Redo Log File)。重做日志文件用于记录对数据库的所有修改信息,修改信息包括用户对数据的修改,以及管理员对数据库结构的修改。重做日志文件是保证数据库安全和数据库备份与恢复的文件。
重做日志文件主要在数据库出现故障时使用。在每一个Oracle数据库中,至少有两个重做日志文件组,每组有一个或多个重做日志成员,一个重做日志成员物理地对应一个重做日志文件。在现实作业系统中为确保日志的安全,基本上对日志文件采用镜像的方法。在同一个日志文件组中,其日志成员的镜像个数最多可以达到5个。有关日志的模式包括归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)两种。
提示:
日志成员镜像个数受参数MAXLOGNUMBERS的限制;若需要确定系统正在使用哪一个日志文件组,则可以查询数据字典“V$LOG”,还可以查询数据字典“VSLOGFILE”,进一步找到正在使用日志组中的哪个日志文件。管理员可以通过语句ALTER SYSTEM SWITCH LOGFILE来强行地进行日志切换;若要查询数据库运行在何种模式下,则可以查询数据字典“VSDATABASE”,在数据字典“VSLOG HISTORY”中记录着历史日志的信息。
Oracle在重做日志文件中以重做记录的形式记录用户对数据库进行的操作。当需要进行数据库恢复时,Oracle将根据重做日志文件中的记录,恢复丢失的数据。重做日志文件是由重做记录组成的,重做记录又称为重做条目,它由一组变更向量组成。每个修改向量都记录了数据库中某个数据块所做的修改。例如,如果用户执行了一条UPDATE语句对某个表中的一条记录进行修改,同时将生成一条重做记录。这条重做记录可能由多个变更向量组成,在这些变更向量中记录了所有被这条语句修改过的数据块中的信息。被修改的数据块包括表中存储这条记录的数据块,以及回滚段中存储的相应的回滚条目的数据块。
利用重做记录,不仅能够恢复对数据文件所做的修改操作,还能够恢复对回滚段所做的修改操作。因此,重做日志文件不仅可以保护用户数据库,还能够保护回滚段数据。在进行数据库恢复时,Oracle会读取每个变更向量,然后将其中记录的修改信息重新应用到相应的数据块上。
说明:
数据文件、控制文件、日志文件还有一些其他文件(如参数文件、备份文件等)构成了Oracle数据库的物理存储结构,对应于操作系统的具体文件,是Oracle数据库的物理载体。
梳理总结:
在Oracle数据库中,日志文件是用来记录数据库活动和数据变更操作的重要组成部分。通过记录这些信息到不同的日志文件中,可以确保数据库能够很好地进行故障恢复、备份与恢复等操作,同时也可以监控数据库中所有活动的发生。
以下是关于Oracle中日志文件的一些重要信息:
日志文件类型:Oracle数据库有三种类型的日志文件——重做日志文件(Redo Log File)、归档日志文件(Archive Log File)和控制文件(Control File)。其中最重要的是重做日志文件和归档日志文件。
重做日志文件(Redo Log File):它记录了数据库执行的所有数据修改操作,包括INSERT、UPDATE、DELETE等语句,以及对表空间、数据文件或控制文件进行的任何修改。重做日志文件通常被分为多个组和多个文件,以确保它们具有更高的可靠性和容错性。
归档日志文件(Archive Log File):它记录了已满的重做日志文件内容,当重做日志文件被写满之后,数据就会被自动地转移到归档日志文件中。管理者可以使用适当的工具将归档日志文件保存在其他介质上,以备份或用于恢复数据库。
日志切换(Log Switch):当所有的重做日志文件都被写满时,Oracle将自动进行切换,即停止在当前日志文件中的写入操作,并开始写入到下一个可用的重做日志文件中。这种过程称为“日志切换”。
日志传输:对于分布式数据库环境,Oracle可以使用Oracle Data Guard将重做日志文件实时复制到另一个站点上,从而保证在故障情况下也可以完成数据恢复和备份操作。
五、表空间
表空间是Oracle数据库中最大的逻辑结构。它提供了一套有效组织数据的方法,是组织数据和进行空间分配的逻辑结构,可以将表空间看作是数据库对象的容器。简单地说,表空间就是一个或多个数据文件(物理文件)的集合(逻辑文件),所有的数据对象都被逻辑地存放在指定的表空间中。
一个数据库通常包括SYSTEM、SYSAUX和TEMP三个默认表空间,一个或多个临时表空间,还有一个撤销表空间和几个应用程序专用的表空间。可以通过创建新的表空间来满足需求,创建时需要决定表空间的类型。
5.1表空间的类型
(1)系统表空间(System tablespace)
系统表空间包括SYSTEM和SYSAUX表空间,系统表空间是所有数据库必需且自动创建的,一般存放Oracle的数据字典表及相应数据。
(2)永久表空间(Permanent tablespace)
永久表空间用于保存永久性数据,如系统数据、应用系统数据。每个用户都会被分配一个永久表空间,以便保存其相关数据。除了撤销表(Udo)空间以外,相对于临时表空间而言,其他表空间就是永久表空间,如系统表空间。
(3)临时表空间(Temporary tablespace.)
由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要在查询带有排序(如Group by、Order by等)算法时使用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此称为临时表空间。一般安装之后只有一个TEMP临时表空间。
(4)撤销表空间(Undo tablespace)
从Oracle9i后,提供了一种全新的撤销空间管理方式,从而使得DBA能够很容易地管理撤销空间,即“自动撤销管理”。而与此相对应,通过回滚段进行撤销空间管理的方式被称为“手工撤销管理”。自动撒销管理方式也称为SMU(System Managed Undo)方式,而回滚段管理方式称为RBU(Rollback Segments Undo)方式。在Oracle 11g数据库中,系统默认为启用自动撤销表空间管理方式,同时也支持传统的回滚段管理方式。
提示:
在以前的版本中,Oracle一直使用回滚段作为撤销存储空间。对于DBA而言,利用回滚段进行撤销空间的管理是非常麻烦的,且很难获得较高的效率。在一个数据库中,只能采用一种撒销空间管理方式,而不能同时存在两种撤销空间管理方式。数据库采用哪一种撤销空间管理方式,是由参数UNDO MANAGEMENT来确定的。如果设置该参数为“AUTO”,在启动数据库时使用SMU方式:如果设置为“MANUAL”,则在启动数据库时使用RBU方式。运行在自动撤销管理方式下的数据库,用撤销表空间来存储、管理撤销数据。Oracle使用撤销数据来隐式或显式的回退事务、提供数据的读一致性、帮助数据库从逻辑错误中恢复、实现闪回查询(Flashback Quey)。
注意:在SMU方式下,必须在数据库中创建一个撤销表空间,Oracle将利用撤销表空间来保存撤销记录。可以在创建数据库的同时建立一个默认的撤销表空间,也可以在数据库创建后再创建新的撤销表空间。
(5)大文件表空间和小文件表空间
从Oracle 10g开始,Oracle引入了大文件表空间,这是一个新增的表空间类型。该类型的出现使存储能力有了显著的增强。大文件表空间不像传统的表空间那样由多个数据文件组成。
大文件表空间(bigfile tablespace)是为了超大型数据库而设计的,如果一个超大型数据库具有上千个数据文件,则更新数据文件头部信息(如check-.point).的操作可能会花费很长时间。如果使用大文件表空间,可以使用大数据文件来减少文件的数量,从而减少更新的时间。
提示:
一个大文件表空间对应一个单一的数据文件或临时文件,但是文件可以达到4G数据块大小。理论上当数据块大小为2KB时,大文件表空间可以达到8TB;当数据块大小为4KB时,大文件表空间可以达到32TB。在实际环境中,这还会受到操作系统的文件系统的限制。
小文件表空间(smallfile tablespace)是之前Oracle表空间在Oracle 11g中的新名称,是默认创建的表空间的类型。在小文件表空间中可以放置多达1022个数据文件,一个数据库最多可以放置64K个数据文件。SYSTEM和SYSAUX表空间总是被创建为小文件表空间。
5.2表空间的状态
出于不同的使用需求,对表空间设置了不同的状态。通过改变表空间的状态,可以控制表空间的可用性和安全性,也可以为相关的备份恢复等工作提供保障。表空间的状态介绍如下:
(1)读写(Read-Write)状态
这是表空间的默认状态。任何具有表空间配额并拥有相关权限的用户均可读写表空间的数据。
(2)只读(Read-Only)状态
如果将表空间设置为只读状态,则任何用户(包括DBA)均无法向表空间写入数据,也无法修改表空间中的现有数据,这种限制和权限无关。
只读状态可以使表空间的数据不被修改,即仅能SELECT,而无法进行NSERT、UPDATE或是DELETE操作。只读状态一方面对数据提供了保护,另一方面对数据库中设置静态数据非常有好处。我们可以将不能被修改的静态数据保存在一个单独的表空间中,并将这个表空间设置为只读状态,这样既能够提高数据的安全性,又能够减轻DBA的管理和维护的负担。
(3)脱机(Offline)状态
在有多个应用表空间的数据库中,DBA可以通过将某个应用表空间设置为脱机状态,使表空间暂时不被用户访问。如果需要访问该表空间时,必须将脱机状态设置为联机状态。这样的设置增强了表空间的可用性,并提高了数据库管理的灵活性。
注意:
SYSTEM表空间不能被设置为只读状态和脱机状态,因为在数据库运行过程中始终需要SYSTEM表空间数据的支持;另外,临时表空间也不能设置为只读状态。
5.3表空间的作用
对Oracle数据库来说,引入表空间概念具有以下作用:
- 控制用户所占用的空间配额。
- 控制数据库所占用的磁盘空间。
- 可以将表空间设置成只读状态而保证大量的静态数据不被修改。
- 能够将一个表的数据和这个表的索引数据分别存储在不同的表空间中,也可以提高数据库的/O性能。
- 可通过其将不同表的数据、分区表的不同分区的数据存储在不同的表空间中,可以提高数据库的/O性能,并有利于进行数据库的部分备份和恢复等管理工作。
- 表空间提供了一个备份和恢复的单位,Oracle提供了按表空间备份和恢复的功能。
梳理总结:
在Oracle数据库中,表空间是一个逻辑的数据容器,用来存储数据库中的对象,比如表、索引、视图等。每个表空间都包含多个数据文件,而每个数据文件都实际上对应于OS文件系统上的一个物理文件。
以下是关于Oracle中表空间的一些重要信息:
表空间类型:Oracle数据库中有多种类型的表空间,包括系统表空间、临时表空间、用户表空间、索引表空间等。每种类型的表空间具有不同的作用和属性,以适应不同的需求。
管理表空间:Oracle数据库可以通过创建、修改、删除表空间和对表空间进行备份与恢复操作,从而对其进行管理。同时也可以使用Oracle自动存储管理功能(Automatic Storage Management,ASM)对表空间进行管理。
分配空间:当用户向表空间中添加一个新的对象时,Oracle就会分配磁盘空间给该对象。表空间的分配方式可以是自动扩展(Autoextend)或手动扩展(Manual Extend),管理员可以根据实际情况来选择合适的方式。
记录空间使用情况:为了更好地管理表空间的空间使用情况,Oracle数据库会周期性地检查表空间中所有对象的大小,并将这些信息记录下来。管理员可以通过查询相关视图来查看表空间当前的空间使用情况。
调整表空间大小:在某些情况下,可能需要增加或减少表空间的大小。管理员可通过ALTER TABLESPACE语句来修改表空间的大小,并且可以选择要增加或减少的磁盘空间量。
了解清楚表空间的类型、管理和分配方式对于维护大型Oracle数据库非常必要。
六、段
段(segment)用于存储表空间中某一种特定的具有独立存储结构的对象的所有数据,它由一个或多个区组成。段包含表空间中一种指定类型的逻辑存储结构,段是数据区的集合,每个段都分配给特定的数据结构,存储在相同的表空间中。
Oracle以数据区为单位为段分配空间,当段的数据区已满的时候,Oracle为段分配另一个数据区, 段的数据区在磁盘上可能是不连续的。段和它所有的数据区都存储在一个表空间中。在表空间中,一个段包含来自多个文件的数据区,段可以跨越数据文件。按照段中所存储数据的特征和用途的不同,可以将段分成数据段、索引段、临时段和回滚段几种类型。
6.1数据段
数据段(data segment)用于存储表中的所有数据。当某个用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的数据段,以便将来存储该表的所有数据。若创建的是分区表,则为每个分区分配一个数据段。显然,在一个表空间中创建了几个表,该表空间中就有几个数据段。
数据段随着数据的增加而逐渐地变大。段的增大过程是通过增加区的个数而实现的。每次增加一个区,每个区的大小是块的整数倍。
6.2索引段
索引段(index segment)用于存储索引的所有数据。当用户用CREATE INDEX语句创建索引,或在定义约束(如主键)自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段,以便将来存储该索引的所有数据。如果创建的是分区索引,则为每个分区索引分配一个索引段。
6.3临时段
临时段(temporary segment).用于存储排序操作所产生的临时数据。当用户使用ORDER BY语句进行排序或汇总时,在该用户的临时表空间中自动创建一个临时段,排序结束,临时段自动消除。
在Oracle中,临时表空间一般是通用的,所有用户的默认临时表空间都是TEMP表空间。当然,可以在创建用户之后,指定临时表空间。
6.4回滚段
回滚段(rollback segment).用于存储用户数据被修改之前的值,以便在特定条件下回滚用户对数据的修改。Oracle利用回滚段来恢复被回滚事务对数据库所做的修改,或者为事务提供读一致性保证。需要注意的是,每个数据库都将至少拥用一个回滚段。
梳理总结:
在Oracle数据库中,段是逻辑上相关的数据块的集合,其中包括表、索引、分区表、子分区、缓存池等对象。每个段都有一个唯一的标识符(对象ID)和名称,并且可以在不同的表空间中进行创建和管理。
以下是关于Oracle中段的一些重要信息:
类型:Oracle数据库中的段可以被划分为多种类型,如表段、索引段、LOB段等等。每种类型的段具有不同的特点和用途,管理员需要根据实际情况来选择具体的段类型。
管理:在Oracle数据库中,段的管理非常灵活。管理员可以对其进行创建、修改、删除、移动、重命名等操作,以满足数据库的需求。同时还可以通过设置不同级别的权限来控制用户对该段的访问和操作权限。
实现方式:在Oracle数据库中,段的实现方式主要有两种,即基于簇(Clustered)和散布(Non-clustered)。基于簇的段将相似的行物理存储在一起,提高查询效率;而散布的段将记录分散在不同的块中,支持更高的并发访问。
调整大小:在某些情况下,可能需要对段的大小进行调整,以适应业务需求。Oracle数据库提供了多种方式来调整段的大小,如压缩、分割、重建等操作。管理员可根据实际情况选择适当的方式。
空间管理:在Oracle数据库中,段的空间管理非常重要。为了优化数据库性能,管理员需要经常检查段的使用情况,并对其进行空间管理。例如,使用ALTER TABLESPACE语句来增加表空间的大小、使用SMON进程来回收未使用的空间等等。
七、区
区(Extent)是由物理上连续存放的块构成的。区是Oracle存储分配的最小单位,由一个或多个块组成,一个或多个区将组成段。当在数据库中创建带有实际存储结构的方案对象时,Oracle将为该方案对象分配若干个区,以便组成一个对应的段来为该方案对象提供初始的存储空间。当段中已分配的区都写满后,Oracle就为该段分配一个新区,以便容纳更多的数据。
梳理总结:
在Oracle数据库中,区(Partition)是指将表或索引等对象分为多个逻辑部分来存储的技术。通过对表或索引进行分区,可以提高数据库查询和维护的速度和效率,并且更好地管理大量数据。
以下是关于Oracle中区的一些重要信息:
区类型:在Oracle数据库中,区可以分为多种类型,如范围区、列表区、哈希区等等。每种类型的区都有自己的特点和适用场景,管理员需要根据实际情况选择合适的区类型。
区管理:与表空间和段类似,区也需要进行管理。在创建表或索引时,管理员可以选择是否对其进行区分,以及如何进行区分。同时,管理员还需要定期检查和维护各个区的使用情况,以确保数据库性能的优化。
区分配方式:在Oracle数据库中,区可以按照时间、范围、哈希方式等多种方式进行分配。不同的分配方式具有不同的特点和适用场景,需要根据实际情况进行灵活选择。
区交换:在某些情况下,可能需要将某个区与另一个区交换。这通常涉及到数据迁移和重构等操作。在Oracle数据库中,管理员可以使用ALTER TABLE和ALTER INDEX来完成区的交换。
区维护:分区能够提高数据库的查询速度和性能,但是在使用时也需要注意维护。管理员应该定期检查区的使用情况和空间占用情况,并根据实际情况进行调整和优化。
八、数据块
数据块(B1oCk)是最小的数据管理单位,也是执行输入输出操作时的最小单位。相应地,操作系统执行输入输出操作的最小单位是操作系统块。Oracle块的大小是操作系统块大小的整数倍,可以在安装时选择“自定义安装”来指定,也可以在CREATE DATABASE创建数据库实例时指定。其最小为2K,最大可达为64K。
在数据块中可以存储各种类型的数据,如表数据、索引数据和簇数据等。无论数据块中存放何种类型的数据,每个数据块都具有相同的结构。Oracle数据块的基本结构由以下几个部分组成:
- 块头部:块头部包含块中一般的属性信息,如块的物理地址、块所属的段的类型等。
- 表目录:若块中存储的数据是表数据(表中的一行或多行记录),则表目录存储关于该表的信息。
- 行目录:存储该块中有效的行信息。
- 空闲空间:数据块中尚未使用的存储空间,当向数据中添加新数据时,将减小空闲空间。
- 行空间:行空间是块中已经使用的存储空间,在行空间中存储了表或索引的数据
块头部、表目录和行目录共同组成块的头部信息区。块的头部信息区中并不存放实际的数据库数据,它只起到引导系统读取数据的作用。因此,若头部信息区被损坏,则整个数据块将失效,数据块中存储的数据将丢失。而空闲空间和行空间则共同构成块的存储区,空闲空间和行空间的总和就是块的总容量。
说明:
表空间、段、区、数据块构成了Oracle数据库的逻辑存储结构,可通过Oracle数据库的数据字典进行查询。逻辑存储结构从逻辑的角度分析数据库的组成,简单的说,多个数据块组成区、多个区组成段,多个段组成表空间,多个表空间组成数据库。
梳理总结:
在Oracle数据库中,数据块是最小的物理存储单位,它由多个连续的磁盘扇区组成。每个数据块包含了一个或多个表或索引的行数据。
以下是一些关键信息有助于理解Oracle数据库中的数据块:
大小:数据块的大小是可以配置的,默认情况下为8K(8192个字节)或16K(16384个字节)。更大的块可以容纳更多的行,但也会增加I/O操作的时间和空间消耗。
分配:在创建新表或索引时,Oracle会从表空间中分配一个或多个数据块来存储这些对象的数据。管理员也可以手动调整表或索引所占用的数据块数量。
管理:为了提高Oracle数据库的性能和可靠性,管理员需要经常监控和管理数据块。例如,在使用INSERT、UPDATE或DELETE语句时产生的锁定和死锁问题,就需要通过对数据块进行适当的分区和同步来解决。
高速缓存:Oracle数据库中有一个缓存区域(Buffer Cache),用于存放当前正在使用的数据块,以避免频繁从磁盘读取数据。管理员可以根据实际需求来调整缓存区域的大小,以优化Oracle数据库的查询性能。
提示:
了解数据文件、控制文件、日志文件的结构和特点,对于开发人员和DBA人员来说,可以更好地维护、管理配置数据库;
了解表空间、段、区、数据块的特点和使用方法,有利于管理员更好地配置、管理和优化数据库,提高运行效率,提高其性能和可靠性。
因此,我们应该清楚Oracle的这些基本术语,加强自己对数据的应用能力!