Oracle数据库存储结构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle数据库存储结构

Oracle数据库存储结构

数据库存储结构

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_log1b_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 FileSPFILE)(推荐使用)

2)初始化参数文件(Initiallization Parameter FilePFILE)

 

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

1SPFILE

2PFILE

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

 

关于密码文件(Password File)

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

 

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

 

关于备份文件(Backup File)

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

 

关于表空间(Tablespace)

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

 

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

 

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

 

表空间提供了定位物理存储上的数据的一种方法。当你定义包含于某个表空间的数据文件时,你为这些文件指定了一个存储位置。任何分配给那个表空间的模式对象(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

 

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
5月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1090 28
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
862 2
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
269 7
|
存储 SQL 负载均衡
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
3570 1
|
SQL Oracle 安全
Oracle优化01-引起数据库性能问题的因素
Oracle优化01-引起数据库性能问题的因素
256 0

推荐镜像

更多