表空间是数据库的逻辑组成部分
从物理上将:数据库数据存放在数据文件中
从逻辑上将:数据库则是存放在表空间中
表空间由一个或是多个数据文件组成
数据库的逻辑结构
Oracle中逻辑结构包括表空间、段、区、块
说明:
数据库由表空间构成
而表空间又是由段构成
而段又是由区构成
而区又是由Oracle块构成
这样的一种结果,可以提高数据库的效率
表空间
在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构。从物理结构上看是放在数据文件中。一个表空间可由多个数据文件组成。
如下图所示,一个数据库由对应一个或多个表空间,表空间逻辑上有一个或多个段(Segment)组成,物理上由一个或多个os file组成。
表空间的作用:
1、控制数据库占用的磁盘空间
2、dba可以将不同数据类型部署到不同的位置。这样有利于提高i/o性能,同时利于备份和恢复等管理操作
系统中默认创建的几个表空间:
SYSTEM SYSAUX USERS UNDOTBS1 EXAMPLE TEMP
系统中必须的表空间有那几个?
答案: SYSTEM、SYSAUX、TEMP、UNDO, 像USERS、EXAMPLE等表空间是可有可无的。
表空间的分类
永久表空间 存放永久性数据,如表,索引等。
临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据。
UNDO表空间 保存数据修改前的镜象。
建立表空间
--(1)创建表空间 (必须是sys/system用户下)
CREATE TABLESPACE user1_tablespace --表空间的名称
DATAFILE 'F:\app\Administrator\oradata\orcl\my.DBF' --数据文件
SIZE 100M --大小
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED --自动扩展32,最大值限制
LOGGING --日志
EXTENT MANAGEMENT LOCAL --管理本地
SEGMENT SPACE MANAGEMENT AUTO --自动管理
1、显示表空间信息
a) 查询数据字典视图dba_tablespaces。显示表空间信息
select tablespace_name from dba_tablespaces;
2、显示表空间所包含的数据文件
a) 查询数据字典视图dba_data_files,可以显示表空间所包含的数据文件
select file_name,bytes from dba_data_files where tablespace_name='表空间名';
改变表空间的状态
当建立表空间时,表空间处于联机的(online)状态,此时该表空间是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态,一般情况下,由特权用户或是dba来操作
1、使表空间脱机
alter tablespace 表空间名 offline;
2、使表空间联机
alter tablespace 表空间名 online;
3、只读表空间
a) 当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update、delete、insert操作,那么可以将该表空间修改为只读
alter tablespace 表空间名 read only;
案例:
1、知道表空间名。显示该表空间的所有表
select * from tall_tables where tablespace_name='表空间名';
2、知道表明,查看该表属于哪个表空间
select tablespace_name,table_name from user_tables where table_name='emp';