四、存储结构:数据库文件与表空间

9.1 表空间

9.1.1
定义:表空间可以看错是放置表的容器。表空间由一个或者多个数据文件构成
创建表可以指定表空间,从而把表的数据存储与指定的数据文件。

9.1.2
创建表空间,代码示例:

create tablespace tbs
datefile '/home/oracle/tbs01.dbf' size 20m,
           '/home/oracle/tbs02.dbf' size 30m
             autoextend on next 5m makesize 3G;
//创建表空间tbs 包含了两个数据文件,空间分配方式自动。
//其中第二个文件大小30m 自动增长,每次增长5m,最大3GB

9.1.3
表的数据存放于多个文件的原因

  • 多个数据文件分布与不同磁盘,可以实现数据并行读写
  • 执行备份恢复操作,可以对各个文件分批分期进行
  • 可以根据数文件中的数据重要性,只备份部分文件

9.1.4
表空间的类型和功能

表空间类型:系统表空间,undo表空间,临时表空间,用户表空间。

每个表空间功能:

  • 系统表空间:存放Oracle正常运行所需要的系统数据,包括system和sysaux表空间,其名称不能改变,也不能删除。
  • undo表空间:用于保存数据库运行过程中的undo数据,实现对data多版本读取和数据库崩溃时data recovery。undo可以有多个。如果没创建undo表空间,则ubdo数据放入system表空间。
  • 临时表空间:用于存放临时数据。如果内存排序区或者散列区空间不够,则把中间的临时处理结果放入此。
  • 用户表空间:存放用户数据,数据库中的表空间主要就是这种表空间。

表空间中的数据存在有效时间:permanent(永久),temporary(临时),undo(undo)数据

9.2 Oracle存储空间分配

9.3.1 数据块、段和区

  • 数据块:oracle最小的逻辑存储单位。 块的大小默认为8kb,blcoksize可以指定块大小。
  • 区:数据块的下一层逻辑存储单元,使用位图方式管理,位图数据存于数据文件头部。位图中每个位对应一个区是否分配,0没有,1分配。
  • 段:最后一个层次每个段位于同一个表空间,由若各干区构成。,段中的多个区不一定物理上连续

如果段所在的表空间由多个数据文件构成,则对应的段内的区也会分布在多个数据文件,但是区内部的数据块不能分布。

9.4数据文件

数据文件主要包括:

  • 数据文件(存放数据库数据的文件)
  • 参数文件
  • 跟踪文件
  • 控制文件
  • 重做文件
  • 归档文件

9.4.1 参数文件

参数文件也叫做初始化文件,存储了数据库启动时需要使用的重要参数(分配各个内存区域大小、配置后台进程、定位数据库运行需要的各种文件)
参数文件主要包含pfile(initsid.ora)和spfile(spfilesid.ord)两个文件。优先使用spfile。两个文件可以互相生成(create pfile from spfile)。

9.4.2 跟踪文件

跟踪文件时数据库运行产生的一些文本文件,作用用于管理员可以查看跟踪文件来了解数据库运行状态、诊断错误。

文件种类:严格意义的跟踪文件(trace files),还有转储文件,内核转储文件,这些文件都在ADR中。
更详细的分类:前台和后台进程跟踪文件(前台会话与后台进程的跟踪信息),警告文件(记录数据库整个整个生命期的记录),内核转储文件,意外事件传输文件。

9.4.3 控制文件

控制文件存储了数据库的物理文件信息RMAN备份信息等。对于数据库的正常运行和备份恢复非常重要。控制文件虽坏,数据库就无法启动,也无法通过普通方式使用RMAN备份文件恢复。
文件结构:是一个二进制文件最大不超过64MB。其数据分为不可覆盖和可覆盖重用两部分。

不可覆盖部分包含:数据文件、重做文件等物理文件的位置信息。
可覆盖重用部分包含:归档日志文件历史和RMAN备份历史等。

控制文件的安全性保护:Oracle提供下列操作保护控制文件

  • 对控制文件镜像
  • 用RMAN备份控制文件
  • 单独备份其二进制文件 alter database backup contorfile to '/home/oracle/control.bak';
  • 备份重建控制文件的命令

9.4.4 重做文件

在恢复操作中起关键作用的文件在数据库出现故障时用于恢复丢失的数据主要由重做记录(由改变向量构成,改变向量包含数据块)构成。
各种修改数据的操作会产生重做数据。除了创建表空间,对面表空间增加数据文件,改变数据文件属性不会产生重做数据。

9.4.5 归档文件

数据库处于归档模式,发生日志切换时,Oracle把联机日志文件中的数据复制到归档目录形成归档文件