ORACLE数据库结构概述
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE数据库结构概述相关的知识,希望对你有一定的参考价值。
参考技术A一 物理结构
数据文件 ORACLE数据库包含若干数据文件 数据文件存储数据库数据 包括表 索引等等 数据文件的几个特点
)一个数据文件只允许分配给一个数据库
)数据文件可设置为自动扩展
)一个或多个数据文件构成表空间
在进行数据库操作的时候 数据库先从内存寻找要操作的数据 如果没有找到的话 再从数据文件取出数据放在内存中 然后才对内存中的数据进行相关的操作 操作完的数据并没有立即写到数据文件中(这样减少了磁盘的IO) 而是放在内存中 然后由DBWn进程决定何时批量写入数据文件
控制文件 每一个数据库都有一个或多个控制文件 控制文件包含了数据库的物理结构 包括
)数据库名
)数据文件名及位置
)重做日志文件名及位置
)数据库的建立时间等等
一般一个数据库都有若干个控制文件镜像 数据库在打开的时候(ALTER
DATABASE OPEN) 会读取控制文件中的信息来打开数据库 当数据库的物理结构发生变化的时候 比如增加一个数据文件 一组重做日志等等 控制文件都会自动地做相应的修改 在数据库物理结构发生变化后 最好重新备份一下控制文件 用于数据库恢复
重做日志文件 重做日志中记录了数据的变化 一般一个数据库都会有两到三组重做日志文件 同一日志组的镜像最好分布于不同的磁盘上
归档日志 当数据库启动归档的时候 重做日志会被自动归档到指定的位置
初始化参数文件 包含了数据库启动时的配置信息
警告和跟踪日志文件
)跟踪文件 每一个后台进程都有一个单独的跟踪文件 比如当系统发现某一个进程有问题的时候 相关的信息就会写到相应的跟踪文件中 可以从数据库的跟踪文件来发现和调试数据库的错误
)警告文件 也叫警告日志 是一个特别的跟踪文件 它记录着数据库启动 运行中的相关信息 它是按时间顺序进行记录的
备份文件
二 逻辑结构
表空间 相关逻辑对象的集合 在oracle g中 在创建数据库的时候就自动创建了SYSTEM和SYSAUX表空间
数据块 数据存储在数据块中 一个数据块的大小(DB_BLOCK_SIZE)由操作系统块来决定 可以指定 种 分别为 K K K K K
区 一系列连续的数据块组成区 区存储特定类型的数据 比如索引 表等等
段 由一系列区组成段
)数据段 对于每一个非聚集表有一数据段 表的所有数据存放在该段 每一聚集有一个数据段 聚集中每一个表的数据存储在该段中 分区表中的每一个分区有一个数据段 分区中的数据存储在该段中
)索引段 每一个索引有一索引段 存储索引数据 分区索引中的每一分区有一个索引段
)回滚段 用于临时存储要撤消的信息 这些信息用于生成读一致性数据库信息 在数据库恢复时使用 回滚未提交的事务 系统回滚段用于处理系统事务 不建议用户使用系统回滚段来做其它操作
lishixinzhi/Article/program/Oracle/201311/17699
Oracle体系结构概述
一、逻辑存储结构
逻辑存储结构是Oracle数据库存储结构的核心内容,对Oracle的所有操作都会涉及逻辑存储结构。逻辑存储结构是从逻辑的角度分析数据库的构成,是对数据库存储结构在逻辑概念上的划分。Oracle数据库(Database)从逻辑存储结构上讲,主要包括表空间(Tablespace)、段(Segment)、区(Extent)和数据块(Block)。这四者存在关系为:多个数据块组成一个区;多区组成一个段;多个段组成一个表空间。一个Oracle数据库(数据库本身也属于逻辑结构)由多个表空间组成,Oracle数据库的逻辑存储结构可以表示为下图:
图1
1、表空间(Tablespace)
在Oracle数据库中,最大的逻辑存储结构是表空间(Tablespace),表空间与物理上的数据文件相对应,一个表空间可以对应多个数据文件,但是一个数据文件只能对应一个表空间。一个表空间的大小等于构成该表空间的所有数据文件大小的综和。我们在数据库中创建的所有内容都存储在表空间中,如果我们没有指定表空间,那么我们在数据库中创建的内容将会存储在默认的表空间中。
我们创建数据库时,系统会自动创建一些表空间,这些表空间说明如下:
SYSTEM:系统表空间,包含数据字典(描述数据库自身结构、所有对象、用户及角色的的表)。SYSTEM表空间是数据库中数据字典所处的位置。如果没有SYSTEM表空间,那么数据库就无法运作 。创建数据库后,需要创建存储数据的其他表空间。
SYSAUX:辅助系统表空间,用于减少系统表空间的负荷,提高系统的作业效率。
TEMP:临时表空间,用于存储临时临时数据。
EXAMPLE:实例表空间,存放实例数据库模式对象信息及其培训资料等。
UNIDOTBSI:重做表空间,存放数据库中有关重做的相关信息和数据,当用户对数据库表进行修改,包括INSERT、UPDATE和DELETE操作时,Oracle系统自动使用重做表空间,来临时存放修改前的数据 当所做的修改完成,并提交之后,系统会根据需要保留修改前数据的时间长短,来释放重做表空间的部分空间。
USERS:用户表空间,存放永久性用户对象的数据和私有信息,因此,也称为数据表空间,每个数据库都应该有一个用户表空间,以便在创建用户的时候,将其分配给用户。除了Oracle系统默认创建表空间,用户可以根据应用系统的规模,及其所要存放对象的情况,创建多个表空间,以区分用户数据和系统数据。
通过sql语句可以查看表空间,如下图:
select * from dba_tablespaces;
图2
2、段(Segment)
在Oracle数据库中,段是一组盘区,这个盘区组成了被Oracle视为一个单位的数据库对象,一个段存储了一个数据库对象(比如一张表,一个索引都属于一个数据库对象。对于数据量大的表可能进行分区处理,当段的区满时,系统会分配另一个区,因此,段的数据区在磁盘上可能是不连续的,一个也可能会由多个段组成)。所以,段一般是数据库终端用户将处理的最小存储单位。
按照段中存储存储数据的特征,可以将段分为5种类型:数据段、索引段、临时段、LOB段和回退段。
通过sql语句可以查看数据段类型情况,如下图:
select distinct(segment_type) from dba_segments;
图3
数据段:用于存储表中的数据,在Oracle中,如果用户在表空间创建一个表,那么系统会自动在该表空间中创建一个数据段,而且数据段的名称和表的名称相同。如果创建的是分区表,系统会为每个分区分配一个数据段。
索引段:用于存储表中的索引信息。在Oracle中,如果用户创建了一个索引,则系统会为该索引创建一个索引段,并且索引段的名称与索引的名称相同。如果创建的是分区索引,那么系统会为每个分区索引创建一个索引段。
临时段:用于存储临时数据,在Oracle中,排序或者汇总时产生的临时数据都存储在临时段中,该段由系统在用户的临时表空间中自动创建,并在排序或汇总结束时自动消除。
LOB段:用于存储表中大型数据对象。在Oracle中,大型数据对象类型主要有CLOB和BLOB。
回退段:用于存储用户数据被修改之前的值。在Oracle中,如果需要对用户的数据进行回退操作,也就是恢复操作,就要使用回退段。每个Oracle数据库都应该至少有一个回退段,供数据恢复使用。
3、区(Extent)
在Oracle中,区(Extent)是磁盘空间分配的最小单位。区由一个或者多个数据块组成,而一个或多个区又组成一个段。
段的增大是通过增加区的个数来实现的,但是在一个数据段中,区的个数并不是无限制的。在创建时可以使用MIN_EXTENTS和MAX_EXTENTS来定义区的个数,其中参数MIN_EXTENTS表示段中最少可分配的区的个数,MAX_EXTENTS参数表示一段中最多可以分配的区的个数。
通过数据字典DBA_TABLESPACES可以了解表空间信息,以及表空间的最大与最小区个数。
select min_extents,max_extents,tablespace_name from dba_tablespaces;
图4
4.块(Block)
块(Block)是用来管理存储空间的基本单位,也是最小的逻辑存储单位。Oracle数据库是以块为单位进行逻辑读写(I/O)操作的。
在创建数据库时,初始化参数DB_BLOCK_SIZE用来指定一个数据块的大小。数据库创建之后,将不能修改数据块的大小。
可以通过sql/plus使用如下sql语句查看块的大小。
上海代孕【徽信15601836539】、成都代孕【徽信15601836539】、
济南代孕【徽信15601836539】、郑州代孕【徽信15601836539】、
西安代孕【徽信15601836539】、南京代孕【徽信15601836539】、
以上是关于ORACLE数据库结构概述的主要内容,如果未能解决你的问题,请参考以下文章
Oracle专题1之Oracle概述Oracle数据库的体系结构以及常用命令