1、 Oracle 的逻辑结构

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

Oracle 的逻辑结构包括表空间( tablespace ),段( segment ),数据块( data block )以及模式对象( schema object )。

⑴、表空间( tablespace )

表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个 SYSTEM 表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线( online )和离线( offline )属性,可以将除 SYSTME 以外的其他任何表空间置为离线。

⑵、段( segment )

段是指占用数据文件空间的通称,或数据库对象使用的空间的集合,数据库的段可以分为四类:数据段、索引段、回退段和临时段。

⑶、区( Extent )

区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。 区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象 .

⑷、数据块

数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库 I/O 的最小单位,数据块大小由 DB_BLOCK_SIZE 参数决定,不同的 Oracle 版本 DB_BLOCK_SIZE 的默认值是不同的。

2 、表空间及数据文件的关系

一个 Oracle 数据库由一个或多个逻辑存储单元——表空间( tablespace )构成,表空间存储着数据库中所有的数据 即: 表空间是数据文件的逻辑集合 ,这些表空间在逻辑的层面上共同来存储数据库的数据;

Oracle 数据库中的 每个表空间由一个或多个文件组成 ,这些文件就是数据文件( datafile ),它们是 Oracle 所在操作系统上的 物理结构 ,,这些文件由 Oracle 所在的操作系统管理。 Oracle 数据库中的所有数据在物理的层面上是存储在数据文件中。

3 、表空间及数据文件的概念

我们知道 oarcle 数据库真正存放数据的是数据文件( data files ), Oarcle 表空间( tablespaces )实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组数据文件放在一起就成为一个表空间。

表空间属性:

( 1 )一个数据库可以包含多个表空间,一个表空间只能属于一个数据库

( 2 )一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

( 2 )表这空间可以划分成更细的逻辑存储单元

( 3 )数据文件通常为 *.dbf 格式,一旦建立,数据文件只增不减

下图是 Oracle 数据库的存储结构的示例图:

从逻辑的角度来看,一个数据库( database )下面可以分多个表空间( tablespace );一个表空间下面又可以分多个段( segment );一个数据表要占一个段( segment ),一个索引也要占一个段( segment )。 一个段( segment )由多个 区间( extent )组成,那么一个区间又由一组连续的数据块( data block )组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由 oracle 数据库操作系统的 block 组成的。

4 、一些特殊的表空间

除了普通表空间外, Oracle 还有几种特殊的表空间。系统表空间( SYSTEM 表空间)、 UNDO 表空间( 9i 以前的回滚表空间)、临时表空间。

系统表空间中除了保存数据字典外还保存所有的存储过程、函数、包、触发器和对象。此表空间必不可少,且在安装数据库时系统会自动创建。

UNDO 表空间用于保存被 DML 语句影响的记录的原始状态,以便在事务失败的时候可以进行回滚。

当大的排序,分组,索引等操作发生时,操作无法在内存中完成,这是会使用临时表空间。

Oracle 推荐使用多个表空间,使用多个表空间的优点:

( 1 )控制数据库的磁盘空间分配;

( 2 )为数据库用户指定不同的配额( QUOTA );

( 3 )通过设置单独的表空间 ONLINE 或 OFFLINE 来控制数据的可用性;

( 4 )执行部分数据库的备份和恢复操作;

( 5 )将数据存储分布到多个物理设备来提高性能。

5 、表空间的属性和管理方式

5.1 表空间的管理方式

1 . 字典管理方式:使用数据字典来管理存储空间的分配,当表空间分配新的区、或者回收已分配的区时, ORACLE 会对数据字典对应的表进行查询、更新。且使用单线程,速度慢,并且回产生回退和重做信息。

(注意:在字典管理方式下,如果对某个表进行更新,这是会产生存储操作,而该操作又回产生回滚和重做操作,导致对回滚段和重做日志文件进行读写,从而又产生存储管理操作,因此形成递归现象)

2 . 本地管理方式: ORACLE 9i 默认方式,表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中,而与数据字典无关。表空间为每个数据文件维护一个位图结构,用于记录表空间的区分配情况。当表空间分配新的区、或者回收已分配的区时, ORACLE 会对文件中的位图进行更新,所以不会产生回滚和重做信息。

优点:

( 1 )提高存储管理的速度和并发性。

( 2 )产生磁盘碎片

( 3 )不产生递归管理

( 4 )没有系统回滚段。

查看区段管理方式:

5.2 表空间的状态

1 . 读写状态

只读( READ-ONLY ):任何人无法写入数据,无法修改数据。

读写( READ-WRITE ):任何有权限的用户都可以读写。

修改读写状态:

ALTER TABLESPACE TABLESPACE_NAME READ ONLY( 此 TABLESPACE 在下次启动时候依然为只读 );

如上图,就是只读状态,此时若往此表空间的表中插入数据,会报错:

2 .脱机状态

DBA 可以在数据库处于开启( open )状态时令除 SYSTEM 表空间( tablespace )之外的任何表空间联机( online ) ( 可访问 ) 或脱机( offline )(不可访问)。 SYSTEM 表空间在数据库处于开启( open )状态时总是处于联机状态,因为 Oracle 需要使用其中的数据字典( data dictionary )。

脱机操作有四种模式:

正常模式( NORMAL ):进入脱机时,必须保证该表空间的数据文件处于联机, ORACLE 会执行一个 CHECKPOINT ,以便 SGA 区中的脏数据都能写入数据文件中。然后在关闭表空间的所有文件。下一次启动时候就不用进行数据库恢复了。

临时模式( TEMPORARY ):不须保证该表空间的数据文件处于联机,如果某个数据文件不可用,则回忽略错误,进入 TEMPORARY 模式, ORACLE 会执行一个 CHECKPOINT ,下一次启动时候可能需要进行数据库恢复

立即模式( IMMEDIATE ): ORACLE 会执行一个 CHECKPOINT ,直接将该表空间的所有数据文件都设置为脱机状态,恢复为联机时必须进行数据库恢复

用于恢复模式( FOR RECOVER ):如果要对表空间进行基于时间的恢复,可以使用这模式,

然后 DBA 就可以进行备份的数据文件来覆盖原有的数据文件,而后根据这些数据文件上,利用归档日志,就可以将表空间恢复为某个时间点的状态。

演示将表空间脱机:

ALTER TABLESPACE USERS OFFLINE NORMAL (默认)

NORMAL 方式脱机,必须在表空间处于联机状态下,如我们对上面脱机后的表空间再使用 NORMAL 脱机,会报错:

但是使用 IMMEDIATE 模式可以在脱机下执行脱机,不会报错。

当表空间脱机时,再往其中执行会分配空间的操作,会报错:

6 、创建表空间

表空间的几种创建方式

使用 autoallocate 分配方式:自动给存放对象分配相应大小的区的方式,可能造成磁盘空间的浪费。

CREATE TABLESPACE TEST_AUTOALLOCATE1

DATAFILE 'F:APPADMINORADATAORCLTEST_AUTOALLOCATE101.DBF' SIZE 1M,

'F:APPADMINORADATAORCLTEST_AUTOALLOCATE102.DBF' SIZE 1M AUTOALLOCATE;

使用 uniform 方式:给所有对象分配相同的大小的区,最小 1K 。

CREATE TABLESPACE TEST_UNIFORM

DATAFILE 'F:APPADMINORADATAORCLTEST_UNIFORM01.DBF' SIZE 1M

UNIFORM SIZE 128K;

指定数据文件的的扩展方式

使用此方式时候,一般需要指定数据文件的最大 SIZE ,以免数据文件无限制扩展。

CREATE TABLESPACE TEST_AUTOEXTEND

DATAFILE 'F:APPADMINORADATAORCLTEST_AUTOEXTEND01.DBF' SIZE 10M

AUTOEXTEND ON NEXT 20M MAXSIZE 1000M;

创建临时表空间 ( 区分配无法指定为 AUTOALLOCATE)

如果数据库经常有大量排序操作,则为了提高性能就需要创建多个临时表空间。

CREATE TEMPORARY TABLESPACE TEMP_WORKDATA01

TEMPFILE ' D:ORACLEORADATAWORKTEMP_WORKDATA01_01.DBF ' SIZE 1M

UNIFORM SIZE 64K;

创建撤消表空间(只能使用本地管理方式而不是数据字典管理方式,无法指定统一区的大小的选项):

正在使用的 UNDO 表空间无法删除。当 UNDO 表空间没有未提交的事务时候才能删除。 CREATE UNDO TABLESPACE TEST_UNDO

DATAFILE 'F:APPADMINORADATAORCLTEST_UNDO01.DBF' SIZE 1M

AUTOEXTEND OFF;

7 、扩展表空间

表空间有下面几种扩展方式:

修改数据文件的大小:

ALTER DATABASE

'D:ORACLEORADATAWORKWORKDATA01_02.DBF'

RESIZE 4M

为表空间增加数据文件:

ALTER TABLESPACE WORKDATA01

ADD DATAFILE 'D:ORACLEORADATAWORKWORKDATA01_02.DBF' SIZE 1m

8 、删除表空间

-- 删除表空间下的数据文件

ALTER TABLESPACE TABLESPACE_NAME

DROP DATAFILE 'F:APPADMINORADATAORCLC.DBF';

-- 只删除表空间,保留数据文件

必须在表空间为空的时候使用,否则报错。

DROP TABLESPACE TEST_AUTOEXTEND;

-- 删除表空间及其数据文件

DROP TABLESPACE TEST_AUTOALLOCATE INCLUDING CONTENTS AND DATAFILES;

9 、移动数据文件

有时,如果你的数据文件所在的磁盘损坏时,该数据文件将不能在使用,为了能够重新使用,需要将这些文件的副本移动到其他的磁盘,然后恢复。

下面以移动数据文件 TEST_UNIFORM01.DBF 为例来说明:

确定数据文件所在的表空间

SELECT TABLESPACE_NAME

FROM DBA_DATA_FILES

WHERE FILE_NAME = 'F:APPADMINORADATAORCLTEST_UNIFORM01.DBF';

使表空间脱机

确保数据文件的一致性,将表空间转变为 offline 的状态。

ALTER TABLESPACE TEST_UNIFORM OFFLINE;

移动数据文件到指定的目标位置

执行 alter tablespace 命令

在物理上移动了数据之后,还必须执行 alter tablespace 命令对数据库文件进行逻辑修改

ALTER TABLESPACE TEST_UNIFORM RENAME DATAFILE 'F:APPADMINORADATAORCLTEST_UNIFORM01.DBF'

TO 'F:APPADMINORADATATESTTEST_UNIFORM01.DBF';

使表空间联机

ALTER TABLESPACE TEST_UNIFORM ONLINE;

oracle表独立数据文件,oracle表空间及数据文件相关推荐

  1. oracle如何往dg加盘_学习笔记:Oracle DG系统 主备库中表空间和数据文件增加删除等管...

    天萃荷净 Oracle Data Guard表空间和数据文件管理汇总 汇总日常工作中操作,在Oracle DG结构系统中,如何删除备库表空间和数据文件,如何管理主库与备库之间的文件系统,详见文章内容. ...

  2. dbeaver导出表结构和数据_Oracle 导入导出表空间跟数据表通用操作笔记

    1:如果要导入的用户下有空表,需要执行下面语句 select 'alter table '||table_name||' allocate extent;' from user_tables wher ...

  3. 全国各省市县 人口密度 数据 下载 空间数据 高精度 空间分布数据 多年 人口热力图 地理信息 GIS...

    苏州百米 和千米的对比   数据下载方式 q 2944410238   苏州百米 和千米的对比 苏州百米 和千米的对比 西部地区,马尔康市 沿河流分布特征非常明显. 西部地区,马尔康市 沿河流分布特征 ...

  4. 北京涛思数据获得 Pre A 轮融资,专注时序空间大数据领域

    北京涛思数据科技有限公司(TAOS Data)宣布完成Pre A轮融资,参与此轮投资的是永辉瑞金和温青投资.此前,公司曾于2017年6月获得来自明势资本和蛮子基金的天使投资. 据悉,完成此轮融资后,涛 ...

  5. 《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之二

    8.5 管理undo表空间 8.5.1 undo表空间的作用 1.使读写一致 2.可以回滚事物 3.事物恢复 4.闪回操作 8.5.2 undo表空间的初始化参数 1.undo_tablespace: ...

  6. Oracle管理表空间和数据文件详解

    管理表空间和数据文件 介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Or ...

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

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

  8. 续: [转]Oracle 表空间与数据文件

    续 http://nvd11.blog.163.com/blog/static/20001831220127710369356/ 五.数据文件 数据文件是数据库中最重要的一个要求,是所有的数据库内容存 ...

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

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

最新文章

  1. PHP扩展开发系列01 - 我要成为一名老司机
  2. 指数基金日涨跌幅python_看懂巴菲特推荐的指数基金定投,Python验证
  3. 3.1_栈_顺序存储结构(数组形式)
  4. numpy.power()
  5. cad的lisp程序大集合_大数据成神之路-Java高级特性增强(CopyOnWriteArraySet)
  6. python os.path
  7. linux 套接口文件_继上一篇,继续介绍linux 套接口
  8. postman 使用
  9. 华为查看mpls的命令_华为BGP基本命令
  10. TwinCAT3 控制器PLC之间EAP通讯2-从机发送方式1
  11. 大一到研二我收藏了数百个网址,从中挑选了十五个最值得收藏的网址推荐给你
  12. SEO中的关键词密度该如何布局
  13. Java实现简单的售货机程序2
  14. QT开发应用程序(17)-- 读写XLS文件
  15. 【Python技巧】正则表达式:(?:)匹配多个字符串之一;(非获取匹配)
  16. ping命令的常用参数
  17. SpringCloud---熔断器Hystrix的作用--解决灾难性雪崩效应
  18. 小学四则运算生成器(Java实现)
  19. IP地址(简单模拟)
  20. MySQL5.7.28_03_一张图片带你进阶MySQL

热门文章

  1. 04【结构面】 面试之结构面,什么是结构面?结构面的准备,常见问题分析?
  2. Web应用优化 - 优化切页模式
  3. C++ OpenCV【人脸识别人眼识别】
  4. 技术支撑团队技术支持工程师的技能要求
  5. iTween插件使用整理
  6. Lucene基础(二)--索引的操作
  7. python实现整数从低位到高位输出与从高位到低位输出
  8. 无法安装64位版本的微软Office
  9. 【深入UCSC Genome Brower】他山之石
  10. 学计算机的电脑用i5还是i7好,大学生用i5还是i7 i5和i7该怎么选择