· 表空间概述
<1> 理解表空间
① 表空间与数据库的关系:
表空间是数据库的逻辑存储空间,可以理解为在数据库中开辟的一块空间,用于存放数据库的对象。 一个数据库可以由多个表空间构成。Oracle的很多优化都是通过表空间实现的。
② 表空间与数据文件的关系:
表空间是由一个或多个数据文件构成的,数据文件的大小和位置可以由用户来决定。表和其他数据库对象都是存放在表空间的数据文件中的。
<2> 表空间的分类
① 永久表空间
存储需要被永久化存储的数据库对象,比如表,视图,存储过程等
② 临时表空间
存储数据库操作中中间执行的过程,执行完之后会被自动删除,不会被永久存储。
③ UNDO表空间
存储事务修改的数据的旧值,也就是说被修改之前的数据。例如对一张表修改,会对修改前的信息进行保存,这样就可以进行事务的回滚。
· 查看用户的表空间
<1> dba_tablespaces、user_tablespaces数据字典
dba_tablespaces是系统管理员权限级别的用户进行查看的数据字典,usertablespaces是普通用户进行查看的数据字典。
在系统管理员权限的用户下用 desc dba_tablespaces 查看 dba_tablespaces 的表结构
使用 SELECT tablespace_name FROM dba_tablespaces; 查看当前系统管理员用户下的表空间名称。
使用 SELECT tablespace_name FROM user_tablespaces; 查看当前普通用户下的表空间名称。
<2> dba_users、user_users 数据字典
dba_users是系统管理员权限级别的用户进行查看的数据字典,user_users 是普通用户进行查看的数据字典
使用 SELECT tablespace_name FROM dba_users; 查看数据库中所有用户的名称。
使用 SELECT tablespace_name FROM user_users; 查看当前用户的名称。
<3> 设置用户的默认/临时表空间
ALTER USER username DEFAULT | TEMPORARY TABLESPACE tablespace_name;
(注意: 普通用户没有权限修改默认/临时表空间)
· 创建、修改和删除表空间
<1> 创建表空间
创建永久表空间语法: CREATE TABLESPACE tablespace_name DATAFILE 'xxx.dbf' SIZExx;
创建临时表空间语法: CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE 'xxx.dbf' SIZExx;
查看表空间的文件路径可以使用:
SELECT file_name FROM dba_data_files WHERE tablespace_name = 'tablespace_name';
(注意: xxx.dbf为文件名,xx为文件大小。'