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

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
17 7
|
6天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
11 6
|
6天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
11 5
|
12天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
15天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
14 1
|
16天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
129 64
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
27天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
42 3
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。

推荐镜像

更多