oracle 基础知识(二)-表空间
一,表空间
01,表空间?
Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间。表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。
02,语法
创建表空间语法: Create TableSpace 表空间名称 DataFile 表空间数据文件路径 Size 表空间初始大小 Autoextend on
03,表空间类型
Oracle 11g默认的表空间有六个:
表空间 |
说明 |
EXAMPLE |
如果安装时选择"实例方案",则此表空间存放各样例的数据 |
SYSTEM |
存放数据字典,包括表、视图、存储过程的定义等 |
SYSAUX |
SYSTEM表空间的辅助空间。主要用于存储除数据字典外的其他的数据对象,这样可以减少SYSTEM表空间的负荷 |
TEMP |
存放SQL语句处理的表和索引的信息,比如数据排序就占用此空间 |
UNDOTBLS1 |
存放撤销数据的表空间 |
USERS |
通常用于存放应用系统所使用的数据对象 |
04,表空间创建实例
- 创建大小为50mb的永久表空间TEST01,禁止自动扩展数据文件
1 create tablespace TEST01 2 logging 3 datafile '/oradata/TEST01.dbf' size 50m 4 reuse autoextend off;
-- 创建永久表空间TEST02,允许自动扩展数据文件,本地管理方式
1 create tablespace TEST02 2 logging 3 datafile '/oradata/TEST02.dbf' size 50m 4 reuse autoextend on next 10m maxsize 200m 5 extent management local;
当然想要查看也是没问题的
1 SELECT tablespace_name, 2 file_id, 3 file_name, 4 round(bytes / (1024 * 1024), 0) total_space 5 FROM dba_data_files 6 ORDER BY tablespace_name;
特定的:
select TABLESPACE_NAME,FILE_NAME from dba_data_files where TABLESPACE_NAME='TEST01';
-- 创建永久表空间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;
-- 创建永久表空间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;
-- 创建永久表空间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;
-- 创建永久表空间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;
05,临时表空间
--创建临时表空间,为了避免临时空间频繁分配与回收时产生大量碎片,临时表空间的区只能采用自动分配方式
1 create temporary tablespace test07 2 tempfile '/oradata/TEST07.dbf' size 20M;
06,创建undo表空间
create undo tablespace test08 datafile'/oradata/TEST08.dbf' size 20M;
07,管理表空间
--首先把该表空间设置为脱机状态 alter tablespace TEST03 offline normal; -- 手动创建TEST03文件夹,并且复制TEST03.dbf到TEST03文件夹,重命名为TEST03_1.dbf alter tablespace TEST03 rename datafile '/oradata/TEST03.dbf' to '/oradata/TEST03/TEST03_1.dbf'; --最后把该表空间设置为联机状态 alter tablespace TEST03 online; |
08,删除表空间
删除表空间及对应的 数据文件
1 drop tablespace test01 including contents and datafiles;
查看表空间使用的情况:
1 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;
09,表空间扩容
第一种方式:表空间增加数据文件
alter tablespace test02 add datafile '/oradata/test02_2.DBF' size 30M;
第二种方式:表空间增加数据文件,设置自增长,限制最大值
alter tablespace test02 add datafile '/oradata/test02_3.DBF' size 50M autoextend on maxsize 3072M;
第三种方式:已存在表空间数据文件设置自增长
alter database datafile '/oradata/TEST02.dbf' autoextend on maxsize 3072M;
第四种方式:已存在表空间数据文件重新设置大小
alter database datafile '/oradata/test02_3.DBF' resize 80M;