表空间分类:系统表空间、辅助表空间、临时表空间、undo表空间、用户表空间
多表空间存储好处:
使用多个表空间有以下好处:
•不同类型的数据存入到不同的表空间中,可以更灵活地管理数据库。
•将还原段、临时段、应用程序数据段和应用程序索引段分开存储到不同表空间中。
•根据备份要求将数据分开存储。
•将动态数据和静态数据分别存储在不同的表空间中,以利于备份和恢复。
•通过分配给用户表空间上的配额,避免分某个用户占用表空间太多的存储空间。
查看表空间使用:
SELECT t1 表空间,
z/1024/1024 总表空间,
(z - s)/1024/1024 已用表空间,
s/1024/1024 剩余表空间,
ROUND((z - s) / z * 100, 2)||'%' "使用率%"
From (Select tablespace_name t1, Sum(bytes) s From DBA_FREE_SPACE Group by tablespace_name),
(Select tablespace_name t2, Sum(bytes) z From DBA_DATA_FILES Group by tablespace_name)
Where t1 = t2
order by 1;
表空间与数据关系:一对多
SELECT TABLESPACE_NAME,online_status,autoextensible, FILE_ID, FILE_NAME, BYTES/1024/1024 "BYTES(M)" FROM DBA_DATA_FILES order by 1
创建表空间:
创建一个表空间:TBS_T02 指定数据文件 默认50M 开启自动扩展 自动扩展1M最大100M
create tablespace TBS_T02 datafile '/opt/oracle/oradata/ora36/TBS_T02.dbf' size 50M autoextend on next 1M maxsize 100M ;
修改自动扩展:
打开:
alter database datafile '/opt/oracle/oradata/ora36/TBS_T01.dbf' autoextend on next 1M maxsize UNLIMITED;
---- UNLIMITED将分配给数据文件的磁盘空间设为不受限
关闭:
alter database datafile '/opt/oracle/oradata/ora36/TBS_T01.dbf' autoextend off;
增加数据文件:
优点,装载大批量数据时,在数据写满数据文件之后需要先扩展数据文件,然后才能装载数据,因而会导致系统
性能的降低。因此,在执行批量数据装载操作之前,你应该首先确定数据文件是否能够容纳
足够数据。如果不足以容纳数据的话,应该首先扩展该数据文件,然后装载数据
alter database datafile '/opt/oracle/oradata/ora36/TBS_T03.dbf' resize 75M;
修改表空间大小:
其实也是修改数据文件大小:
alter database datafile '/opt/oracle/oradata/ora36/test/TBS_T02.dbf' resize 100M;
更改表空间状态:
只读:
alter tablespace TBS_T02 read only;
读写:
alter tablespace TBS_T02 read write;
表空间联机:
以下几种情况下数据库管理员可以让表空间脱机:
•使数据库的一部分表空间不可用,但允许正常访问数据库的其余表空间
•执行脱机表空间备份(尽管表空间可以在联机使用时备份)
•在数据库打开时恢复表空间或数据文件
•在数据库打开时移动数据文件
联机:
alter tablespace TBS_T02 online;
脱机:
alter tablespace TBS_T02 offline normal;
--normal脱机前把SGA中的数据写入数据文件
数据文件脱机:
数据文件联机:
移动数据文件:
ALTER TABLESPACE 命令重命名数据文件的步骤:
•使表空间脱机。
•使用操作系统命令移动或复制文件。
•执行ALTER TABLESPACE RENAME DATAFILE 命令。
•使表空间联机。
•必要时使用操作系统命令删除原来的数据文件。
alter tablespace tBS_T02 offline normal ;
linux执行:cp TBS_T02.dbf ./test/
alter tablespace TBS_T02 rename datafile '/opt/oracle/oradata/ora36/TBS_T02.dbf' to '/opt/oracle/oradata/ora36/test/TBS_T02.dbf';
alter tablespace TBS_T02 online;
删除表空间:
语法:
DROP TABLESPACE tablespace [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]
其中:
tablespace:指定要删除的表空间的名称
INCLUDING CONTENTS:删除表空间内的所有段
AND DATAFILES:删除关联的操作系统文件
CASCADE CONSTRAINTS:如果要删除的表空间之外的表引用了该表空间内表的主
键和唯一键,则删除这种引用完整性约束。
drop tablespace TBS_T02 including contents and datafiles cascade constraints;