Oracle 表空间的概念
表空间
在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能。 Oracle 可以存放海量数据,所有数据都在数据文件中存储。而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非常大。同时Oracle 是跨平台的数据库, Oracle 数据可以轻松的在不同平台上移植,那么如何才能提供统一存取格式的大容量呢? Oracle 采用表空间来解决。
表空间只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。如图所示:
Oracle 中所有的数据(包括系统数据),全部保存在表空间中,常见的表空间有:
Ø系统表空间:存放系统数据,系统表空间在数据库创建时创建。表空间名称为
SYSTEM。存放数据字典和视图以及数据库结构等重要系统数据信息,在运行时如
果 SYSTEM 空间不足,对数据库影响会比较大,虽然在系统运行过程中可以通过命
令扩充空间,但还是会影响数据库的性能,因此有必要在创建数据库时适当的把数
据文件设置大一些。
ØTMEP 表空间:临时表空间,安装数据库时创建,可以在运行时通过命令增大临时
表空间。临时表空间的重要作用是数据排序。比如当用户执行了诸如 Order by 等
命令后,服务器需要对所选取数据进行排序,如果数据很大,内存的排序区可能装
不下太大数据,就需要把一些中间的排序结果写在硬盘的临时表空间中。
Ø用户表自定义空间:用户可以通过 CREATE TABLESPACE 命令创建表空间
创建表空间
--创建表空间 linux centos6.9
--创建一个表空间,包含两个数据文件大小分别是 10MB, 5MB,要求 extent 的大小统一为 1M
CREATE TABLESPACE nod_tablespace
DATAFILE '/home/oracle/tablespace/A.ORA' SIZE 10M,
'/home/oracle/tablespace/B.ORA' SIZE 5M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 1M
windows版本创建表空间
请注意:只有管理员才可以增加表空间
当表空间不足的时候可以用alter tablespace命令向表空间中追加数据文件并扩充表空间
修改表空间大小
--扩充表空间
ALTER TABLESPACE nod_tablespace
ADD DATAFILE '/home/oracle/tablespace/C.ORA' SIZE 100M
--查看表空间情况
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
创建用户时可以为用户指定某一表空间,那么该用户下所有数据库对象默认都存储在该空间中
指定用户的表空间为
create user nod identified by nod default tablespace nod_tablespace;
创建表指定表空间
create table t2(id int)
tablespace nod_tablespace
表和索引一旦创建,表空间无法进行二次修改