前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 数据库存储结构

Oracle 数据库存储结构

作者头像
授客
发布2019-09-11 20:28:59
2K0
发布2019-09-11 20:28:59
举报
文章被收录于专栏:授客的专栏授客的专栏

Oracle数据库存储结构

by:授客 QQ:1033553122

数据库存储结构

Oracle数据库由物理和逻辑结构组成。物理结构由操作系统可见、可被操作的物理文件组成,好比存储数据的数据文件。逻辑结构主要由包含物理文件的表空间组成。

Oracle存储结构

注:Archived Redo Logs仅在开启日志归档后才有。

关于控制文件(control file)

每个Oracle数据库都有一个控制文件,一个很小的二进制文件,记录了数据库的物理结构,包含:

1)数据库名字

2)相关数据文件及重做日志文件的位置和文件名

3)数据库创建的时间戳

4)检查点信息

oracle启动时,会依据参数文件查找控制文件,然后根据控制文件查找数据文件和日志文件。

不管什么时候,只要数据库处于打开状态,控制文件就必须处于可写状态。如果没有控制文件,数据库将不能被加载,并且很难恢复,所以Oracle推荐镜像多个控制文件。

关于联机重做日志文件(Online Redo Log Files)

每个Oracle数据库都有含2个或更多的联机重做日志文件。这些联机重做日志文件统称为数据库的重做日志(redo log)。联机重做日志文件中存放的是重做记录(redo record),也称为重做条目(redo entry)。重做条目由一组改变向量(change vector)组成,改变向量是对数据库中某个数据块(block)更改的描述(即更改记录的副本)。例如,你改变了员工表中某个员工的薪资,会生成一个包含改变向量的重做记录,其中改变向量描述了对员工表数据段的数据块,undo段的数据块,事务表undo段的更改。当执行恢复操作时,数据库读取重做记录中的改变向量并应用与相关的数据块。

如果数据库出故障,需要恢复已备份的数据据文件,而最近未备份的,丢失的数据则可通过联机重做日志文件获取。联机重做日志文件用于硬件、软件、或介质失败引起的数据库故障恢复操作。Oracle数据库可镜像多个联机重做,所以可在不同磁盘上维护2个或更多个和联机重做日志文件的保持一致的副本。

联机重做日志由联机重做日志文件组组成。每个文件组由一个联机重做日志文件和它的镜像副本组成,包含一个组号,比如Group 1。每个彼此完全一致的副本被看成是文件组的成员.

下图显示了拥有3个联机重做日志文件组,每组2个成员的数据库。对于每个组,为了最大的可用性,每个成员存储在不同的磁盘。

当事务被提交后,LGWR把事务重做记录从SGA的重做日志缓冲区写到重做日志文件,并为每个被提交事务指定一个系统改变号(system change number,SCN)来标志重做记录。仅当指定事务的所有相关重做记录被安全保存到联机重做日志文件中,LGWR才确认事务被提交了。

事务提交之前,重做记录也会被写到某个重做日志文件中。如果重做日志缓冲区满了,或另一个事务被提交,LGWR会刷新重做日志缓冲区中所有重做日志记录到某个重做日志文件,即使一些重做记录还没被提交。如果有必要,数据库会回滚这些改变。

数据库日志写进程(LGWR)采用循环的方式,不停的把日志记录从内存缓冲区写到重做日志文件,直到那个组中的日志文件被写满或者有请求日志切换的操作,才会把日志记录写到下一个日志组中。如下图,当再次往某个组中进行写操作时,会覆盖之前写入的重做记录。

被写满的重做日志文对于LGWR是否可再利用,取决于归档是否开启:

1)如果归档未开启(数据库处于NOARCHIVEINGLOG模式),仅当改变记录被写入到数据文件后,被写满的重做日志文件才可再次使用

2)如果已开启归档(数据库处于ARCHIVELOG模式), 仅当改变记录被写入到数据文件,且被写满的重做日志文件被归档后,重做日志文件才可再次使用

关于归档重做日志文件(archived redo log file)

当开启了联机重做日志文件归档时,oracle数据库会在它们被覆盖之前,复制联机重做日志文件到另一个位置。这个过程就叫做归档(archiving),拷贝的这些文件副本就叫做归档重做日志文件。Oracle强烈推荐开启归档模式。同时,Oracle推荐通过配置把归档重做日志文件写到快速恢复区(fast recover area)

每个归档重做日志文件为重做日志文件组中,其中一个被写满的重做日志文件成员的拷贝,包含唯一的日志序列号.比如,你镜像了多个重做日志文件,如果group 1包含了彼此一致的成员文件a_log1和b_log1,那么归档进程(ARCn)仅归档其中一个成员文件。如a_log1被损坏,ARCn归档与a_log1完全一致的b_log1.开启归档后,归档重做日志将包含了每个组中单个成员文件的副本

关于数据文件(data file)

数据文件为数据库中存储数据的操作系统文件。其中,临时文件(Tempfiles)为仅与临时表空间(temporary tablespace)相关的一种特殊的数据文件。

数据文件可以被分成以下组成部分:

1)段(Segment)

段包含一种特殊类型的数据库对象。例如,表段中存放的是数据表,索引段中存放的是索引。一个数据文件可以包含多个段。

2)扩展区(Extent)

扩展区是段中一组连续的数据块。oracle数据库以扩展区为单元,为段分配空间。当已有扩展被写满时,数据库为段分配另一个扩展区

3)数据块(Data block)

数据块也叫做数据库块(database block),数据存储最小的I/O单元。一个扩展包含几个连继续数据块。数据库创建时,数据库会指定一个默认的块大小。

数据库创建后,如果不使用重建数据库语句,不能改变默认的块大小。

段,扩展区,数据块都是逻辑结构。仅oracle数据库可以决定一个数据文件可包含多少个数据块。操作系统仅可识别文件和操作系统块。每个oracle数据块大小为操作系统数据块大小的倍数。

关于参数文件

参数文件是一个包含初始化参数列表及对应参数值的文件。Oracle支持以下两种类型的参数文件:

1)服务器参数文件(Server Parameter File,SPFILE)(推荐使用)

2)初始化参数文件(Initiallization Parameter File,PFILE)

启动instance时,oracle会在基于平台的缺省位置下按以下顺序查找初始化参数文件,并读取参数,来决定数据库的运行环境设置和资源:

1.SPFILE

2.PFILE

如果SPFILE是由DBCA在OASM磁盘组中创建的,则会在磁盘组中搜索。

关于密码文件(Password File)

数据库使用密码文件来验证具有SYSDBA、SYSOPER连接权限的管理员用户。对于以SYSDBA、SYSOPER权限远程连接来说,密码文件是必不可少的。密码文件于数据库本身之外,因此可在数据库还没启动之前,对DBA进行验证。

当使用DBCA创建数据库时,DBCA会创建一个仅包含一条记录:“SYS用户”的密码文件。把用户加入到密码文件,自动授予那个用户SYSDBA权限。

关于备份文件(Backup File)

备份文件为某种形式的数据库副本,当数据库丢失数据时,可用于数据库的恢复操作。

关于表空间(Tablespace)

表空间为数据库的逻辑存储单元。每个表空间包含相关的逻辑结构(比如表,视图,其它数据库对象)。例如,所有的应用程序对象可以放进一个单独的表空间,方便维护。

一个表控件由一个或更多个物理数据文件组成。分配给表空间的数据库对象存放在该表空间的物理数据文件中。

当创建oracle数据库时,会自动创建一些表空间,比如SYSTEM,SYSAUX表空间。

表空间提供了定位物理存储上的数据的一种方法。当你定义包含于某个表空间的数据文件时,你为这些文件指定了一个存储位置。任何分配给那个表空间的模式对象(schema object)位于指定的存储位置。同时,表空间提供了备份与恢复的一个单元,oracle允许进行表空间级别的备份、恢复。

以下是不同类型的表空间描述

表空间

描述

EXAMPLE

该表空间包含oracle自带的示例方案.Oracle文档和教材包含基于示例模式的示例

SYSTEM

该表空间在数据库创建时自动创建。用于管理数据库,包含数据字典(关键表和只读视图)及包含数据库管理信息的动态表和动态视图.所有这些都包含于SYS模式,且仅能被SYS用户或其他带有必备权限的管理员访问

SYSAUX

这是SYSTEM表空间的一个辅助表空间,包含一些组件和产品,减少SYSTEM表空间的压力。oracle 10g release 1或更高版本,必须有一个SYSAUX表空间。安装期间使用SYSAUX作为它们的默认表空间的组件包含自动化工作负载信息库(Automatic Workload Repository),Oracle流(Stream),Oracle文本(Text)和数据库控制信息库(Control Repository)

TEMP

该表空间存储处理SQL语句(如查询排序)时生成的临时数据。每个数据库都有一个临时表空间指作为用户的临时表空间. 在预配置的数据库中,TEMP被指定为默认的临时表空间。当用户帐号被创建时,如果没有指定临时表空间,那么oracle会把TEMP表空间指派给用户

UNDOTBS1

数据库用于存储恢复信息的撤销表空间(undo tablespace).

USERS

该表空间用于存储持久的用户对象和数据。类似TEMP表空间,每个数据库都有用于持久的用户数据一个表空间.否则,用户对象将创建在SYSTEM表空间(不推荐)。在预配置的数据库中,USERS被指定为所有新建用户的默认表空间。

参考链接:

http://docs.oracle.com/cd/E11882_01/server.112/e10897/storage.htm#ADMQS006

http://docs.oracle.com/cd/E11882_01/server.112/e25494/part2.htm#i996730

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档