《深入解析Oracle》学习笔记(6)---Oracle体系结构之存储结构

来源:互联网 发布:unity3d 跳跃 编辑:程序博客网 时间:2024/05/16 07:45

[声明:本文是学习著名ORACLE DBA盖国强先生的大作《深入解析ORACLE--DBA 入门 进阶与诊断案例》的学习笔记与心得体会。在此声明,文中摘录了书中部分内容,非是出于抄袭目的,而是有感于盖国强先生所写确实经典。在此声明对原作者的尊重与敬佩。]

                                             第五章(前) Oracle存储结构

Oracle数据库存储结构分为逻辑存储结构和物理存储结构。
 一:物理存储结构
  描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据。物理存储结构是和操作系统相关的。
  现实的数据存储单元,对应于操作系统文件。
  包括控制文件、数据文件、重做日志文件、其他文件。
  1.控制文件(control file):
   一个大小在1--5M之间的二进制小文件,却是Oracle数据库的大脑。它对Oracle的启动和运行至关重要,它存储了Oracle的如下信息,而这些信息中的绝大部分在其他地方时无法获得的:
   .数据库的名称(这个在初始化参数文件中存在,而且必须存在。事实上,之所以在Oracle中也存在这个参数,目的就是为了与初始化参数中的对应)
   .数据文件/重做日志文件的名称、位置、大小、状态(联机/脱机)。
   .发生磁盘故障或用户错误时,用于恢复数据库的信息(日志序列号、检查点)。
   控制文件在数据库启动的装载、打开阶段都是不可或缺且不容出错的。在数据库的运行过程中,每当出现数据库检查点(checkpoint)或修改数据库结构后,Oracle本身就会修改控制文件的内容。
   在Oracle 安装之后,自动创建了3个控制文件,这3个文件从诞生起就将保持绝对的一致性,起到备份的作用,尽管有这种备份机制,但每个数据库必须,而且只需要有一个控制文件。这跟MySQL的InnoDB存储引擎的ibdata文件是一个作用。
  2.数据文件(data file):
   数据文件是存储了实际数据的操作系统文件。数据文件的大小是可以改变的。
   一个表空间在物理上对应于若干个数据文件,一个数据文件只能属于一个表空间。
   在创建表空间时,Oracle会自动为该表空间创建第一个数据文件。当表空间中的数据文件的空间被用完后,需要为表空间增加存储空间:要么创建新的数据文件。要么调整现有数据文件存储空间的大小。
   除SYSTEM表空间外,任何表空间都可以由联机状态切换为脱机状态,以进行备份。联机状态时不能备份的。
  3.重做日志文件(redo file):
   内存中,Oracle更改的数据在被写入到数据文件前,会被“即时”写入到重做日志文件,一旦系统出现故障,可以利用这些文件重新恢复丢失的数据。
   这样做是出于性能的考虑。
   Oracle以循环方式来使用重做日志文件,至少需要2个重做日志文件,第一个被写满后,后台进程LGWR将写第二个重做日志文件,当第二个写满后,又开始写第一个。以此循环。
   重做日志文件可以进行归档,前提是开启了自动归档功能,这样可以把所有的修改记录全都保存下来,得以恢复任何数据。
   在Oracle 安装之后,自动创建了3个重做日志文件,这3个文件是循环使用的。
  4.其他文件
   .初始化参数文件:存储SGA、后台进程的配置参数、Oracle特性配置参数。MySQL中的my.cnf与此文件起着同样作用。
   .口令文件:一个二进制文件,用户验证SYSDBA/SYSOPER权限的用户。这些用户可以启动/关闭实例、创建数据库、执行备份/恢复等。
   .预警文件:记录了服务器进程、后台进程写入的错误和消息。通过查看该文件可以诊断数据库状态或故障、监视数据库变化等。

   .后台进程跟踪文件:每个后台进程都有相应的跟踪文件。记录后台进程的警告或错误消息。
   .服务器进程跟踪文件:跟踪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树较浅,提高性能。
   所以针对业务不同合理规划块的大小对数据库性能是很重要的。