-Question:表空间是什么,为什么引入,有什么用?
  -表空间是Oracle 11g对数据库文件的称呼,可把它看作表驻留的空间。
  -为了合理管理业务数据、索引数据、临时信息及回退信息,需要创建不同类型的表空间。
  -简化对数据文件的管理

表空间

(1)概念:

  表空间是数据库的逻辑存储空间,可以理解为在数据库中开辟的一个空间,用于存放数据库的对象,数据库可以由多个表空间组成,而表空间则是由一个或者多个数据文件来组成的,数据文件是物理存储空间

1.一个数据库可以由多个表空间构成。
2.oracle中的表空间概念是与MySQL、SQL Server等数据库的一个重要区别:oracle的很多优化都是通过表空间实现的
3.表空间:是由一个或多个数据文件构成的,数据文件的位置和大小可以由用户自己定义。

表空间的分类:
1.永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程
2.临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放
3.UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚


(2)查看用户的表空间:

dba_tablespaces 和 user_tablespaces 数据字典
dba_users 和 user_users数据字典

desc dba_tablespaces
select tablespace_name from

【Oracle学习】之 表空间_管理

【Oracle学习】之 表空间_oracle_02

权限大的能访问权限小的表空间,反之则不行。比如:

【Oracle学习】之 表空间_管理_03

【Oracle学习】之 表空间_数据文件_04


(3)设置用户的默认或临时表空间

ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name
普通用户没有设置表空间的权限


(4)创建表空间

格式:
CREATE [TEMPORARY] TABLESPACE
tablespace_name
TEMPFILE|DETAFILE ‘xx.dbf’ SIZE xx

create tablespace test1_tablespace datafile 'test1file.dbf' size 10m;
create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m;

【Oracle学习】之 表空间_oracle_05

【Oracle学习】之 表空间_表空间_06

查看默认情况下的表空间位置

desc dba_data_files
select file_name from dba_data_files where tablespace_name = 'TEST1_TABLESPACE';

//显示的是默认情况下创建表空间文件存放的位置

【Oracle学习】之 表空间_数据库_07

【Oracle学习】之 表空间_数据文件_08


(5)修改表空间

-修改表空间的状态
设置联机或脱机状态
ALTER TABLESPACE tablespace_name ONLINE|OFFLINE;
设置只读或可读写状态
ALTER TABLESPACE tablespace_name READ ONLY|READ WRITE
(脱机是不能更改其属性的。)

alter
desc dba_tablespaces
select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE';
alter
select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE';

alter tablespace test1_tablespace read only;
select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE';
alter tablespace test1_tablespace read write;
select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE';

【Oracle学习】之 表空间_管理_09

【Oracle学习】之 表空间_数据文件_10

-修改数据文件
= 增加数据文件
ALTER TABLESAPCE tablespace_name ADD DATAFILE ‘xx.dbf’SIZE xx;

= 删除数据文件
ALTER TABLESAPCE tablespace_name DROP DATAFILE ‘xx.dbf’SIZE xx;
不能删除表空间第一个数据文件,即创建表空间时候创建的数据文件,若果要删除则要把表空间删除

alter tablespace test1_tablespace add datafile 'test2_file.dbf' size 10m;
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
alter tablespace test1_tablespace drop datafile 'test2_file.dbf';
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';

【Oracle学习】之 表空间_数据文件_11


(6)删除表空间

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS]
若删除表空间时,连带删除表空间中的文件,则加INCLUDING CONTENTS

【Oracle学习】之 表空间_oracle_12