表空间是DM数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象,数据库由多个表空间组成。DM数据库的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间中包括一个或多个数据文件,一个数据文件仅归属于一个表空间
数据文件在逻辑上按照段、簇和页的方式进行管理,段由簇的集合构成,包含数据段、回滚段和临时段;段是簇的上级逻辑单元。段可以包含来自不同文件的簇,即一个段可以跨越同一个表空间不同的数据文件。簇是连续的数据页的集合,一个簇总是在一个数据文件中;簇是数据库最小分配单元。页是数据库中最小的存储单元,数据页会映射到磁盘块
系统主要的表空间
➢ SYSTEM表空间(系统表空间),系统底层的表空间,系统层级使用的,其他用户除用户外都无权用此表空间进行数据操作。
➢ ROLL表空间(回滚表空间),用于撤销操作的,翻译你执行了你不想的修改,你想撤销,这就是存放回滚状态的表空间
➢ TEMP表空间(临时表空间),这就相当于一个垃圾桶,当数据库重启的时候,会情况TEMP的表空间。
➢ MAIN表空间(用户默认表空间),打个比方,如果你新建一个账户没有指定表空间,那么默认的就是该表空间。
➢ HMAIN表空间(默认HTS表空间),一般用不到,用到再说
使用v$tablespace,v$datafile、dba_tablespace和data_data_files查看表空间和数据文件信息。这句话太特么重要了,因为经常会用到,也会考到
dba_data_files;数据库的数据文件视图。
可以使用视图dba_data_files查看表空间数据文件信息,最直接的使用,可以查看哪个表空间,使用了哪个数据文件
dba_free_space;查看表空间数据文件的数据文件视图
可以使用视图dba_free_space查看表空间数据文件空闲等信息
新建表空间时,必须至少指定一个数据文件,并指定数据文件初始大小,扩展属性等。数据文件大小不能小于页大小的4096倍(比如页大小为8K*4096=32M,数据文件将不能小于32M
create tablespace TBS datafile‘/dm8/data/DAMENG/TBS01.dbf’size 128 autoextend on next4 maxsize 10240
➢增加数据文件:alter tablespace TBS add datafile' /dm8/data/DAMENG/TBS03.dbf' size 128;
//增加表空间相当于增加一个新的dbf文件,如果增加一个正在使用的dbf文件,会报错的。增容就是增加一个数据文件。
➢修改数据文件大小:alter tablespace TBS resize datafile 'TBS02.dbf' to 256;
//可直接修改表空间的大小,修改后,可进入目录ls -lh TBS02查证
➢修改文件扩展属性:
alter tablespace TBS datafile 'TBS03.dbf autoextend off;
altert ablespace TBS datafile 'TBS03.dbf' autoextend on next 4 maxsize 1024;
//可以直接修改表空间的数据文件,顺便再加上大小配置
➢修改数据文件路径:
普通表空间可以在脱机状态下修改数据文件路径和文件名,修改数据文件路径时需保证修改后的数据文件路径存在。
步骤1:alter tablespace kkk offline;//只有设置成离线才能操作
步骤2:alter tablespace kkk rename datafile ‘home/dmdba/666.dbf’ to ‘home/dmdba/888.dbf’
//执行后会生成一个888.dbf文件。
步骤3:alter tablespace kkk online;//设置表空间切在线
数据库offine:脱机状态,当表空间脱机时,不能读取该表空间的数据,也不能写入。SYSTEM、ROLL和TEMP表空间不允许脱机。当表空间有未提交事务时,不能脱机。
数据库on