tablespace是oracle的逻辑结构,datafile是oracle的物理结构。 tablespace由datafile组成。

tablespace 分为: permanent tablespace, temporary tablespace, undo tablespace。

表空间不足是DBA常常遇到的情况,所以要经常监视表空间的增长情况,及时对表空间大小作出调整。

一     数据库的物理结构

物理文件大致可以分为:数据文件, 控制文件, 联机日志文件三类(oracle还包含一些其他文件,但是默认情况下,指的是这3种)

1.数据文件:

每个数据文件都是一个操作系统文件,是真正存放数据库原始数据的地方。一个数据文件,由多个(OS blocks)组成。(操作系统块和Oracle块是两个不同的概念), 数据文件有以下特性:

(1)每个数据文件只能属于一个数据库

(2)每个数据文件只能属于一个表空间

(3)一个或者多个数据文件组成了一个表空间

(4)数据文件是可以被设置为自动增长的

2.控制文件:

一个数据库至少有一个控制文件,一般情况下有多个,并且他们的内容是相同的。控制文件记录的是数据库的物理结构信息。所以,控制文件的完整性非常重要。

其中包含了:数据库的名字, 数据文件和联机日志文件的名称和位置,创建数据库的时间戳。

3.联机日志文件:

一个数据库有多个联机日志文件。 联机日志文件中含有重做记录(Redo Records)。

联机日志文件记录了数据库的改变,如果在一次意外中,数据库意外关闭。在重新启动数据库的时候,就可以通过联机日志文件将这些改变写回数据文件中。 这就是联机日志文件存在的意义,它保持了数据库的一致性。

联机日志文件唯一的作用就是实例的恢复。意外断电以后保证数据库一致性。

二 数据库的逻辑结构

Oracle的逻辑结构由 数据块, 区, 段, 表空间  4部分组成。

块是Oracle的最小存储单位, oracle取数据的时候,都是以块的整数倍来取的,如果取得数据不到一个数据块的大小,那么,oracle也会将一整个块取出来。

块的大小是由DB_BLOCK_SIZE决定的,和这个值一样大的块叫做标准块,oracle 9i以后的版本支持同一个数据库中标准块和非标准块共存。

操作系统每次读写IO的时候,都是以操作系统块为单位的, oracle读取IO的时候,都是以oracle的块大小为读取单位的。

熟悉oracle块的结构式理解oracle存储组织形式的关键~~!

块结构,包括 Header: 块的基本信息,块的物理地址,该块所属类型(数据段还是索引段)

                   table directory(表目录):如果一些表数据存在这个块中,那么这些表的相关信息被存在这个表目录中国。

                   row directory: 如果块中有行数据存在,那么行的信息存在行目录中(包括行的物理地址)

                   Row data: 真正存放表数据和索引数据的地方。

                   free space:未使用的区域,用于新的insert 和已存在数据的update使用。

对于块的自由空间,Oracle的两种管理方式: 手动管理和自动管理。一般情况下,oracle不会合并free的空间,只有当insert 或者update操作,找不到连续的free 空间的时候,才会合并free空间。

1.  行链接和行迁移的概念~~:

行链接: 如果我们插入数据的一行比较大,一个block放不下,oracle就会把一个数据块存在几个数据块中,这个时候就是行链接。

行迁移: 数据块中存在这样一条行记录,当用户对其执行update操作的时候,oracle始终发现,这个block中没有更多的free space存放它,于是oracle就会把更新后整行的数据迁移到另一个block中,原block只保存一个指针。

行链接和行迁移都要影响数据库的性能,因为oracle取一条数据的时候,要访问不止一个block。

2. 块中free space的管理:

自动管理:  oracle使用bitmap 来跟踪管理数据块。自动管理比较方便,也能很有效的利用空间资源。

手动管理: 通过设定每一个数据块能存储的数据占整个数据块的百分比来实现的。

Oracle 区(extent)

区是由连续的block组成的, 是一段连续的存储空间,多个区组成一个段, 当段空间耗尽时,oracle会分配一个新的区给这个段。

当创建一个表时, oracle会自动为表的数据段分配一个初始区(Initial extent),随着数据的增加,一个区被填满,oracle会分配一个新的区给这个数据段。

出于管理的需要,每一个数据段的头部,都有区的一个目录。

段(segment)

一个段由一系列的区组成,段有几种类型:  数据段, 索引段, 临时段, 回滚段。

表由段组成,普通表由一个段组成,分区表由多个段组成。

转载于:https://www.cnblogs.com/xiaofeifei1990/p/3302456.html

Oracle 学习笔记(四) Oracle表空间和数据文件相关推荐

  1. Oracle表空间和数据文件

    读书使人充实,思考使人深邃,交谈使人清醒!-----------<富兰克林> 洒一屋的芬芳,画一幕的色彩,看一书的深远.从来没有什么事情是容易的,人最难得的永远是一颗永不停歇的心.学习Or ...

  2. oracle 增加ora容量_oracle数据库报错:ORA-01653无法在表空间扩展解决办法 ,增加表空间或表空间增加数据文件...

    当Oracle数据库的数据量越来越大,表空间的大小不够用的时候,会报错:"ORA-01653 ", 即表空间满了,无法在表空间扩展解决办法 ,增加表空间或表空间增加数据文件.在这里 ...

  3. [转]Oracle 表空间与数据文件

    转自: http://blog.csdn.net/robinson_0612/article/details/5611738 一.概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象:永久 ...

  4. Oracle的表空间和数据文件

    一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...

  5. oracle表空间于表数据啥意思,初识Oracle表空间与数据文件

    初识Oracle表空间与数据文件,描述oracle数据库的逻辑结构,创建表空间,改变表空间大小,为临时段分配空间,改变表空间状态,改 学习目标 1.描述Oracle数据库的逻辑结构 2.创建表空间 3 ...

  6. oracle 修索引改空间_Oracle如何更改表空间的数据文件位置详解

    表空间概述 Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle中信息存储的最大逻辑单元,其下还包含有段.区.数据块等逻辑数据类型.表空 ...

  7. Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  8. oracle表独立数据文件,oracle表空间及数据文件

    1. Oracle 的逻辑结构 数据库的物理结构是由数据库的操作系统文件所决定,每一个 Oracle 数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理 ...

  9. ORACLE表空间与数据文件OFFLINE区别

    (一)OFFLINE TABLESPACE ALTER TABLESAPCE OFFLINE可用选项包括NORMAL, TEMPORARY, IMMEDIATE, FOR RECOVERY OFFLI ...

  10. oracle移动表空间的数据文件,移动Oracle表空间数据文件方案

    方案一:移动常规表空间(非系统表空间)数据文件 /**************数据库服务器某个磁盘空间不足时移动常规表空间数据文件******** 方案一:移动常规表空间(非系统表空间)数据文件 /* ...

最新文章

  1. Android 手势—— GestureDetector 和 SimpleOnScaleGestureListener (手势缩放)
  2. anaconda的python使用教程-Python安装教程之Anaconda入门使用总结
  3. dataframe 众数的方法_数据分析师最常用的数据分析方法。你都掌握了吗?
  4. node创建web静态服务
  5. java小编程-----读取文本文件csb.txt,统计字符个数,并把结果保存到result.txt
  6. 洛谷 P1340 兽径管理
  7. linux 密码修改下次,问题:如何强制用户在下次登录Linux时更改密码
  8. 荣耀赵明反讽雷军:有些话不适合知识分子讲
  9. SQL实战之获取所有非manager的员工的emp_no
  10. 原始套接字与抓包过滤规则setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, ...)
  11. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_18-CMS前端页面查询开发-页面原型-创建页面和定义路由...
  12. Python XML解析(转载)
  13. 从开锁到中年危机的杂谈
  14. 高等代数期末考试题库及答案_高等代数试题及答案
  15. 电子墨水屏技术原理介绍
  16. 深度学习与神经网络的关系
  17. win10下安装Elasticsearch和kibana教程
  18. C# 基础学习第四天
  19. php踩过的那些坑(2) strpos引发的血案
  20. 银行数据仓库体系实践_【实战剖析】某国际性商业银行的数据仓库建设经验分享...

热门文章

  1. mysql日期教程_MySQL日期函数详解
  2. winapi里的createthread函数 和linux,Windows API---CreateThread函数
  3. goaccess配置nginx日志解析
  4. ExtJS简介--车辆调度
  5. 利用@factory和@dataProvider实现参数化
  6. myeclipse/eclipse方法和类的自动注解
  7. VSFTP服务的日常应用及疑难问题解析
  8. 运维人员需重视非技术能力(老鸟经验分享)
  9. 为Windows添加日志事件
  10. 毕业设计——第三章 开发方法及系统实现(6)(完结)