第6章 存储管理
我们在第1章中已经介绍到,Oracle把数据物理地存放在数据文件里,而使用逻辑概念来存取这些数据。为此,Oracle引入了表空间(tablespace)、段(segment)、区间(extent)以及数据块(block)这些逻辑概念。所谓逻辑概念,就是通过存放在表里的数据来描述物理空间的使用。
数据库本身就是一个逻辑概念,包含数据文件、控制文件以及联机日志文件。而我们可以继续将数据库细分成多个较小的逻辑概念,也就是表空间。一个表空间只能属于一个数据库,同时,一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。
在表空间里,可以继续细分成更小的逻辑概念,也就是segment。一个segment可以跨越多个数据文件。我们最常见的存放数据的对象:普通表,就是一种segment。当然,索引也是一种segment。
在segment里,还可以继续细分成更小的逻辑概念,也就是extent。一个extent就是一个在逻辑上连续的存储空间。每个segment都由一个或多个extent组成,segment一次扩张和收缩的最小单位就是extent,也就是说,一次扩张最少一个extent。一个extent不能跨越多个数据文件,因为一旦跨越多个数据文件的话,就不是一个连续的空间了。
一个extent最终被细分成最小的逻辑概念,就是block,extent由多个block紧密排列起来。block是Oracle发出I/O请求的最小单位。
读完本章以后,我们能够了解到:
⊙ 如何创建表空间;
⊙ 表空间包含哪两种管理方式,每种管理方式在其内部是如何实现的,每种管理方式各自的优缺点;
⊙ 临时表空间的作用,如何创建临时表空间以及临时表空间组;
⊙ 联机日志文件所起的作用,日志切换的概念,如何创建联机日志文件;
⊙ OMF是什么;
⊙ Oracle数据块的内部结构。