阿牛 发表于 2018-9-21 11:28:30

Oracle 11g R2 存储结构

  数据文件相关知识
  想查看系统中有多少个数据文件我们可以通过动态数据字典或静态数据字典来查看:通过静态数据字典查看数据文件

  通过动态数据字典来查看数据文件

  直接查看数据文件的内容是看不到的,必须通过一个逻辑的结构即表空间来查看数据文件的内容。表空间是一个逻辑存储结构,而数据文件是一个物理的结构。
  如何查看表空间

  也可以通过dba_tablespaces查看表空间

  数据字典是一个逻辑的存储结构,而数据文件是一个真实的存储结构,如果有了表空间,而没有数据文件是不可以,表空间和数据文件是相对应的,如果没有数据文件,表空间不可能独立存在,如果只有表空间没有数据文件也是不行的,就好比如果电脑没有硬盘,你不能再逻辑上看到C盘D盘,在这里硬盘就相当于是数据文件,而C盘就相当于是表空间。我们可以把多个数据文件组成一个表空间,然后在表空间里面存储数据,表空间和数据文件是对应的,一个表空间可以是由一个或多个数据文件组成的,但是一个数据文件只能在一个表空间当中,我们如何查看表空间和数据文件之间的对应关系呢?

  也可以查看表空间的大小

  也可以在上述的表空间中创建新的数据文件。如果表空间不够用了,只需创建相应的数据文件即可。表空间大小就是组成数据文件的大小的总和,最终数据文件存放在硬盘里的,但是我们可以把数据文件存放在不同的硬盘里面,只要在一个表空间即可,这样就解决了硬盘大小对文件的限制,可以将多个硬盘中的数据文件组成一个表空间。
  所以在表空间中DBA会存放很多的表,视图,索引,同义词等对象。
  段:例如在xx表空间DBA创建了一个名为test的表,这张表表空间所占用的空间,我们称之为段。根据段中存储的对象的不同分为了数据段,索引段,回退段,临时段等
  可以查看段的信息

  对于段又有个更小的单位,称之为“区”
  区(extent):区是磁盘空间分配的最小单位,磁盘按区划分,每次至少分配一个区,区由连续的数据块组成,段主要由一个或多个区构成,当段创建时,它至少包含一个区,当段中所有空间已经使用完成时,系统自动为该段分配一个新区,区不能跨数据文件存在,只能存在于一个数据文件中。
  段是由区组成的,段必须是区的整数倍,假如一张表是25MB,一个区大小是4MB,那么段的大小是28MB,如果在表里添加了3MB的数据,此时段的空间还能容纳表,现在表的大小是28MB,如果又添加了1MB,此时29MB,那么段的空间是32MB.

  查看EXAMPLE表空间的区和段的分布情况

  在oracle数据库中最小的存储单位是块(block)--8KB,oracle数据库中的数据存储于数据块中。数据块是oracle服务器所能读取或写入的最小存储单元,oracle服务器以数据块为单位管理数据文件的存储空间,数据块的取值范围为2-64KB,其默认大小与oracle版本有关。

  查看操作系统的最小存储单元
  # tune2fs -l/dev/sda1
  通过OEM也可以查看这些信息

  创建表空间和数据文件

  SQL>create tablespace xx datafile '/u01/xx.dbf'>  2next 5m maxsize 200m;
  表空间已创建。

  修改表空间的名字为yy


  为了好管理,我们希望表空间的名字和数据文件的名字一致。
  解决办法:

[*]  使用操作系统命令将数据文件拷贝一份
[*]  把表空间offline
[*]  然后对数据文件重命名


  将表空间offline


  对数据文件重命名

  查看修改情况

  将表空间online

  提示需要恢复/u01/yy.dbf

  将表空间online


  如何扩展表空间大小
[*]直接改变数据文件大小

  2.给表空间增加数据文件
  如果表空间所在的分区的空间不够用了



  删除表空间

  创建临时表空间


  删除临时表空间与删除表空间的命令是一样的。

  如果对此文有什么问题的话,请加下面微信一起探讨


页: [1]
查看完整版本: Oracle 11g R2 存储结构