Oracle数据库存储结构分为逻辑存储结构和物理存储结构。
一:物理存储结构
描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据。物理存储结构是和操作系统相关的。
现实的数据存储单元,对应于操作系统文件。
包括控制文件、数据文件、重做日志文件、其他文件。
1.控制文件(control file):
一个大小在1--5M之间的二进制小文件,却是Oracle数据库的大脑。它对Oracle的启动和运行至关重要,它存储了Oracle的如下信息,而这些信息中的绝大部分在其他地方时无法获得的:
.数据库的名称(这个在初始化参数文件中存在,而且必须存在。事实上,之所以在Oracle中也存在这个参数,目的就是为了与初始化参数中的对应)
.数据文件/重做日志文件的名称、位置、大小、状态(联机/脱机)。
.发生磁盘故障或用户错误时,用于恢复数据库的信息(日志序列号、检查点)。
控制文件在数据库启动的装载、打开阶段都是不可或缺且不容出错的。在数据库的运行过程中,每当出现数据库检查点(checkpoint)或修改数据库结构后,Oracle本身就会修改控制文件的内容。
在Oracle 安装之后,自动创建了3个控制文件,这3个文件从诞生起就将保持绝对的一致性,起到备份的作用,尽管有这种备份机制,但每个数据库必须,而且只需要有一个控制文件。
2.数据文件(data file):
数据文件是存储了实际数据的操作系统文件。数据文件的大小是可以改变的。
一个表空间在物理上对应于若干个数据文件,一个数据文件只能属于一个表空间。
在创建表空间时,Oracle会自动为该表空间创建第一个数据文件。当表空间中的数据文件的空间被用完后,需要为表空间增加存储空间:要么创建新的数据文件。要么调整现有数据文件存储空间的大小。
除SYSTEM表空间外,任何表空间都可以由联机状态切换为脱机状态,以进行备份。联机状态时不能备份的。
3.重做日志文件(redo file):
内存中,Oracle更改的数据在被写入到数据文件前,会被“即时”写入到重做日志文件,一旦系统出现故障,可以利用这些文件重新恢复丢失的数据。
这样做是出于性能的考虑。
Oracle以循环方式来使用重做日志文件,至少需要2个重做日志文件,第一个被写满后,后台进程LGWR将写第二个重做日志文件,当第二个写满后,又开始写第一个。以此循环。
重做日志文件可以进行归档,前提是开启了自动归档功能,这样可以把所有的修改记录全都保存下来,得以恢复任何数据。
在Oracle 安装之后,自动创建了3个重做日志文件,这3个文件是循环使用的。
4.其他文件
.初始化参数文件:存储SGA、后台进程的配置参数、Oracle特性配置参数。
.口令文件:一个二进制文件,用户验证SYSDBA/SYSOPER权限的用户。这些用户可以启动/关闭实例、创建数据库、执行备份/恢复等。
.预警文件:记录了服务器进程、后台进程写入的错误和消息。通过查看该文件可以诊断数据库状态或故障、监视数据库变化等。MySQL中的my.cnf与此文件起着同样作用。
.后台进程跟踪文件:每个后台进程都有相应的跟踪文件。记录后台进程的警告或错误消息。
.服务器进程跟踪文件:跟踪SQL语句、诊断SQL性能。必须先激活SQL跟踪,才能使用该功能(sql_trace=TRUE)。
.归档日志文件:重做日志文件的备份。保留所有重做历史记录。开启归档模式。
.监听程序日志文件、跟踪文件:记录监听程序的启动时间、正在监听的端口、正运行在哪台机器上、建立过哪些了解等。
二:逻辑存储结构
描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库中如何组织、管理数据。因此,逻辑存储结构是和操作系统无关的,由Oracle数据库定义、创建和管理。
包括:表空间、段、区、块。
1.表空间(tablespace):
表空间是最大的逻辑单位。一个数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。任何数据库对象被逻辑的存储在表空间中,
又被物理的存储在数据文件中。
Oracle数据库在创建时,自动创建的表空间包括EXAMPLE表空间、SYSAUX表空间、SYSTEM表空间、TEMP表空间、UNDOTBS1表空间、USERS表空间。
.SYSTEM表空间存放信息:表空间名称、控制文件、数据字典、数据库对象的定义、PL/SQL代码、SYSTEM撤销段。
.SYSAUX表空间:是Oracle 10g才引进的,辅助SYSTEM表空间,提高效率。
.TEMP表空间:执行大型的分类操作,存放临时数据。
被存储在SYSTEM表空间中,数据库对象的数据被存储在该对象的数据表空间中,往往是该用户的用户表空间。
2.段(segment):
段是表、索引、簇等对象的存储空间。如表段、表分区段、索引段、索引分区段、临时段、回退段、撤销段、二进制大对象段等。
3.区(extent):
区是由多个物理上连续的Oracle块组成的。是Oracle存储分配的最小单位。
4.块(block):
Oracle最小的数据管理单位,数据管理中输入输出的最小单位。Oracle读取数据最小每次必须读取一个块出来。
Oracle块的大小是操作系统块的整数倍,较大的块在数据仓库中常见,这样可以使B树较浅,提高性能。
一:物理存储结构
描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据。物理存储结构是和操作系统相关的。
现实的数据存储单元,对应于操作系统文件。
包括控制文件、数据文件、重做日志文件、其他文件。
1.控制文件(control file):
一个大小在1--5M之间的二进制小文件,却是Oracle数据库的大脑。它对Oracle的启动和运行至关重要,它存储了Oracle的如下信息,而这些信息中的绝大部分在其他地方时无法获得的:
.数据库的名称(这个在初始化参数文件中存在,而且必须存在。事实上,之所以在Oracle中也存在这个参数,目的就是为了与初始化参数中的对应)
.数据文件/重做日志文件的名称、位置、大小、状态(联机/脱机)。
.发生磁盘故障或用户错误时,用于恢复数据库的信息(日志序列号、检查点)。
控制文件在数据库启动的装载、打开阶段都是不可或缺且不容出错的。在数据库的运行过程中,每当出现数据库检查点(checkpoint)或修改数据库结构后,Oracle本身就会修改控制文件的内容。
在Oracle 安装之后,自动创建了3个控制文件,这3个文件从诞生起就将保持绝对的一致性,起到备份的作用,尽管有这种备份机制,但每个数据库必须,而且只需要有一个控制文件。
2.数据文件(data file):
数据文件是存储了实际数据的操作系统文件。数据文件的大小是可以改变的。
一个表空间在物理上对应于若干个数据文件,一个数据文件只能属于一个表空间。
在创建表空间时,Oracle会自动为该表空间创建第一个数据文件。当表空间中的数据文件的空间被用完后,需要为表空间增加存储空间:要么创建新的数据文件。要么调整现有数据文件存储空间的大小。
除SYSTEM表空间外,任何表空间都可以由联机状态切换为脱机状态,以进行备份。联机状态时不能备份的。
3.重做日志文件(redo file):
内存中,Oracle更改的数据在被写入到数据文件前,会被“即时”写入到重做日志文件,一旦系统出现故障,可以利用这些文件重新恢复丢失的数据。
这样做是出于性能的考虑。
Oracle以循环方式来使用重做日志文件,至少需要2个重做日志文件,第一个被写满后,后台进程LGWR将写第二个重做日志文件,当第二个写满后,又开始写第一个。以此循环。
重做日志文件可以进行归档,前提是开启了自动归档功能,这样可以把所有的修改记录全都保存下来,得以恢复任何数据。
在Oracle 安装之后,自动创建了3个重做日志文件,这3个文件是循环使用的。
4.其他文件
.初始化参数文件:存储SGA、后台进程的配置参数、Oracle特性配置参数。
.口令文件:一个二进制文件,用户验证SYSDBA/SYSOPER权限的用户。这些用户可以启动/关闭实例、创建数据库、执行备份/恢复等。
.预警文件:记录了服务器进程、后台进程写入的错误和消息。通过查看该文件可以诊断数据库状态或故障、监视数据库变化等。MySQL中的my.cnf与此文件起着同样作用。
.后台进程跟踪文件:每个后台进程都有相应的跟踪文件。记录后台进程的警告或错误消息。
.服务器进程跟踪文件:跟踪SQL语句、诊断SQL性能。必须先激活SQL跟踪,才能使用该功能(sql_trace=TRUE)。
.归档日志文件:重做日志文件的备份。保留所有重做历史记录。开启归档模式。
.监听程序日志文件、跟踪文件:记录监听程序的启动时间、正在监听的端口、正运行在哪台机器上、建立过哪些了解等。
二:逻辑存储结构
描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库中如何组织、管理数据。因此,逻辑存储结构是和操作系统无关的,由Oracle数据库定义、创建和管理。
包括:表空间、段、区、块。
1.表空间(tablespace):
表空间是最大的逻辑单位。一个数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。任何数据库对象被逻辑的存储在表空间中,
又被物理的存储在数据文件中。
Oracle数据库在创建时,自动创建的表空间包括EXAMPLE表空间、SYSAUX表空间、SYSTEM表空间、TEMP表空间、UNDOTBS1表空间、USERS表空间。
.SYSTEM表空间存放信息:表空间名称、控制文件、数据字典、数据库对象的定义、PL/SQL代码、SYSTEM撤销段。
.SYSAUX表空间:是Oracle 10g才引进的,辅助SYSTEM表空间,提高效率。
.TEMP表空间:执行大型的分类操作,存放临时数据。
被存储在SYSTEM表空间中,数据库对象的数据被存储在该对象的数据表空间中,往往是该用户的用户表空间。
2.段(segment):
段是表、索引、簇等对象的存储空间。如表段、表分区段、索引段、索引分区段、临时段、回退段、撤销段、二进制大对象段等。
3.区(extent):
区是由多个物理上连续的Oracle块组成的。是Oracle存储分配的最小单位。
4.块(block):
Oracle最小的数据管理单位,数据管理中输入输出的最小单位。Oracle读取数据最小每次必须读取一个块出来。
Oracle块的大小是操作系统块的整数倍,较大的块在数据仓库中常见,这样可以使B树较浅,提高性能。
所以针对业务不同合理规划块的大小对数据库性能是很重要的。
原文地址:http://blog.youkuaiyun.com/kanon_lgt/article/details/5974053