oracle 表空间介绍
一, 表空间类型
二, 表空间创建
语法:
01, 创建50兆的永久表空间,禁止数据自动扩展
create tablespace TEST01 logging datafile '/oradata/TEST01.dbf' size 50m reuse autoextend off;
查看表空间信息01
查看表空间信息01
查看表空间数据文件情况
02,创建永久表空间,允许扩展,每次扩展10M,最大200M 生产低于30G
1 SQL> create tablespace TEST02 2 logging 3 datafile '/oradata/TEST02.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200m 5 extent management local; 2 3 4 5 6 7 Tablespace created.
03,创建永久表空间TEST03,允许自动扩展数据文件,本地管理方式,区分配方式为自动分配
1 create tablespace TEST03 2 logging 3 datafile'/oradata/TEST03.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200m 5 extent management local autoallocate;
04, 创建永久表空间TEST04,允许自动扩展数据文件,本地管理方式,区分配方式为定制分配
1 create tablespace TEST04 2 logging 3 datafile'/oradata/TEST04.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200m 5 extent management local uniform size 10m;
05 创建永久表空间TEST05,允许自动扩展数据文件,本地管理方式,区分配方式为自动分配,段管理方式为自动管理
1 create tablespace test05 2 logging 3 datafile'/oradata/TEST05.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200M 5 extent management local autoallocate 6 segment space management auto;
06 创建永久表空间TEST06,允许自动扩展数据文件,本地管理方式,区分配方式为定制分配,段管理方式为手动管理
1 create tablespace test06 2 logging 3 datafile'/oradata/TEST06.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200M 5 extent management local uniform size 10m 6 segment space management manual;
07,创建一个临时表空间test07,为了避免临时空间频繁分配与回收时产生大量碎片,临时表空间的区只能采用自动分配方式
1 create temporary tablespace test07 2 tempfile '/oradata/TEST07.dbf' size 20M;
08, 创建一个undo表空间test08
1 create undo tablespace test08 2 datafile'/oradata/TEST08.dbf' size 20M;
三, 表空间管理
移动表空间
下线表空间
alter tablespace TEST03 offline normal;
查看状态
复制表空间到其他地方
上线表空间
1 alter tablespace TEST03 rename datafile 2 '/oradata/TEST03.dbf' 3 to 4 '/oradata/orcl/TEST03_1.dbf';
四, 删除表空间和对应的数据库
drop tablespace test01 including contents and datafiles;
五,其他
查询表空间的free space
select tablespace_name, count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS MB,sum(blocks) AS blocks from dba_free_space group BY tablespace_name;
查询表空间的总容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
查询表空间使用率
1 SELECT total.tablespace_name, 2 Round(total.MB, 2) AS Total_MB, 3 Round(total.MB - free.MB, 2) AS Used_MB, 4 Round(( 1 - free.MB / total.MB ) * 100, 2) 5 || '%' AS Used_Pct 6 FROM (SELECT tablespace_name, 7 Sum(bytes) / 1024 / 1024 AS MB 8 FROM dba_free_space 9 GROUP BY tablespace_name) free, 10 (SELECT tablespace_name, 11 Sum(bytes) / 1024 / 1024 AS MB 12 FROM dba_data_files 13 GROUP BY tablespace_name) total 14 WHERE free.tablespace_name = total.tablespace_name;
表空间扩容
01,
添加数据文件:
alter tablespace TEST03 add datafile '/oradata/test03_1.dbf' size 30M;
02
表空间增加数据文件,设置自增长,限制最大值
alter tablespace test02 add datafile '/oradata/test02_1.DBF' size 50M autoextend on maxsize 10240 M;
03
已存在表空间数据文件设置自增长
alter database datafile '/oradata/test01.dbf' autoextend on maxsize 10240 M;
04
已存在表空间数据文件重新设置大小
alter database datafile '/oradata/test01.dbf' resize 80M;