表空间(TABLESPACE)管理
1 定义
表空间是一个逻辑概念,物理上对应一个或多个数据文件datafile或临时文件tempfiles,逻辑上表空间时存储段的容器(段也是逻辑概念,是数据库中的对象如表、索引等)
2 类型和管理方式
表空间类型:
① PERMANENT 永久表空间
② UNDO 撤销表空间
③ TEMPORARY 临时表空间
管理方式重点是段的管理方式和区的管理方式,是建立在表空间时确定的。
段管理方式有AUTO和MANUAL两种,区管理方式有本地管理和字典管理(已淘汰)两种。
2.1 查看表空间类型、段和区的管理方式
select tablespace_name,contents,segment_space_management,extent_management from dba_tablespaces;
查看所有的表空间
select * from v$tablespace;
2.2 查看表空间(数据文件)大小、是否自动扩展
col file_name for a45
col tablespace_name for a10
select file_id,file_name,tablespace_name,bytes/1024/1024 M,status,AUTOEXTENSIBLE from dba_data_files order by 1;
2.3 查看表空间总大小
一个表空间可能会对应多个数据文件
select tablespace_name,sum(bytes)/1024/1024 M from dba_data_files group by tablespace_name;
2.4 查看表空间空闲大小
select tablespace_name,sum(bytes)/1024/1024 M from dba_free_space group by tablespace_name;
3 基本操作
3.1 small表空间扩展
表空间的大小等同于它的所有数据文件件大小之和,默认使用small表空间,当发生表空间不足的问题时常用的3个解决方法:
① 增加原有的数据文件大小(resize)
② 增加数据文件(add datafile)
③ 设置表空间自动增长(autoextend on)
3.1.1 创建small表空间
语法:create tablespace 表空间名 datafile '路径/数据文件名.dbf' size 大小(M);
create tablespace demo datafile '/u01/oradata/orcl/demo01.dbf' size 5M;
3.1.2 创建表并指定所要使用的表空间
语法:create table 表名(字段1 数据类型,字段2 数据类型) tablespace 表空间名;
create table demo_f(id number,name varchar2(10)) tablespace demo;
3.1.3 resize 增加原有的数据文件大小
语法:alter database datafile 数据文件的file_id resize 大小(M);
alter database datafile 5 resize 10M;
3.1.4 add datafile增加数据文件
语法:alter tablespace 表空间名 add datafile '路径/数据文件名.dbf' size 大小(M);
alter tablespace demo add datafile '/u01/oradata/orcl/demo02.dbf' size 10M;
3.1.5 autoextend on设置表空间自动增长
语法:alter database datafile 数据文件的file_id autoextend on next 下次自动增长多少M maxsize 最大多少M;
alter database datafile 5 autoextend on next 10M maxsize 500M;
3.1.6 数据文件移动或改名
可以将一个在线呢数据文件从一种存储系统移动或改名到另一个存储系统
比如:本地系统文件--->ASM共享存储
ASM共享存储--->本地系统文件
当一个数据文件正在进行移动的时候,可以执行查询、DML、DDL操作,包括如下:查询语句,创建表和索引,重建索引。在移动数据文件到另一个位置或存储系统时,不一定要关闭数据库或者将数据文件设置为离线状态
注:被移动的数据文件的对象时压缩状态时,压缩状态不变
3.1.3.1 数据文件迁移路径
语法:alter database move datafile '/disk1/example01.dbf' to '/disk2/example01.dbf';
3.1.3.2 从本地系统文件迁移到ASM共享存储
语法:alter database move datafile '/disk1/example01.dbf' to '+DISKGROUP' KEEP;
3.1.3.3 数据文件重命名
语法:alter database move datafile '/disk1/example1.dbf' to '/disk1/example01.dbf';
3.2 大文件bigfile的表空间
3.2.1 建立大文件表空间
smallfile:在一个表空间可以建立多个数据文件(默认),不支持32G以上
bigfile:在一个表空间只能建立一个数据文件(8K的block时,最大可达32T)简化数据文件管理
语法:
create tablespace 表空间名 datafile '路径/数据文件名.dbf' size 大小(M);
create bigfile tablespace 表空间名 datafile '路径/数据文件名.dbf' size 大小(M);
create bigfile tablespace demo02 datafile '/u01/oradata/orcl/bigfile01.dbf' size 500M;
3.2.2 查看大文件表空间
select name,bigfile from v$tablespace;
3.3 删除表空间
语法:drop tablespace 表空间名
(contents包括控制文件和数据字典信息,datafiles时物理数据文件)
drop tablespace demo02 including contents and datafiles;
3.4 查看默认表空间、临时默认表空间
col property_name for a30
col property_value for a60
select property_name,property_value from database_properties where property_name like '%DEFAULT%';
3.5 临时表空间
3.5.1 用途
用于缓存排序的数据(中间结果)
可以建立多个临时表空间,但默认的临时表空间只有一个且 不能offline和drop。temp表空间是nologing的(不记日志)
查询临时表空间信息:
select file_id,file_name,tablespace_name,bytes/1024/1024 M,status,AUTOEXTENSIBLE from dba_temp_files;
select file#,name,bytes/1024/1024 M from v$tempfile;
3.5.2 建立临时表空间
语法:create temporary tablespace 表空间名 tempfile '路径/数据文件名' size 大小M;
create temporary tablespace demo03 tempfile '/u01/oradata/orcl/demo03.dbf' size 10M;
3.5.3 增加临时表空间
语法:alter tablespace 表空间名 add tempfile '路径/数据文件名' size 大小M;
alter tablespace demo03 add tempfile '/u01/oradata/orcl/demo03_01.dbf' size 10M;
3.5.4 删除临时表空间
语法:alter tablespace 表空间名 drop tempfile '路径/数据文件名'
alter tablespace demo03 drop tempfile '/u01/oradata/orcl/demo03_01.dbf';
3.5.5 查看默认表空间、临时默认表空间
col property_name for a30
col property_value for a60
select property_name,property_value from database_properties where property_name like '%DEFAULT%';
3.5.6 切换数据库默认的临时表空间
语法:alter database default temporary tablespace 表空间名;
alter database default temporary tablespace demo03;
3.5.7 指定用户使用临时表空间
语法:alter user 用户名 temporary tablespace 临时表空间名;
alter user scott temporary tablespace demo03;
3.6 OFM
Oracle Managed Files oracle管理文件,数据库内部使用标准文件系统接口来创建、删除文件,可以针对以下数据库文件管理:
tablespaces
redo log files
control files
archived logs
block change tracking files
flashback logs
rman backups