一、存储结构
二、表空间的分类
1)系统表空间:
- 随着数据库创建被创建
- 包含数据字典信息
- 包含系统回滚段
2)非系统表空间:
- 不同的segments分开存放(如:回滚段,临时段,应用数据)
- 控件分配给用户对象的空间容量
三、表空间的管理
3.1、本地管理的表空间(9i后)
1)概述:
- 自由扩展信息被记录在本身的位图中
- 位图中的每一位都对应一个数据块或一组数据块
- 位图中的标志位显示数据使用或未使用状态信息
2)创建方法:
CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
- 简化了数据字典中的内容
- 空间分配和回收不产生回滚信息
- 没有接合邻近extents的要求
3.2、字典管理的表空间(9i前)
1)概述:
- 缺省的表空间管理方式
- 自由扩展信息被记录在数据字典中
2)创建方法:
CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( initial 1M NEXT 1M );
- Extents在数据字典中管理
- 每个存储在表空间的segments都可以有不同的存储参数设置
- 有邻近接合extents的要求
3.3、UNDO回滚段表空间
1)概述:
- 用来存储回滚段信息
- 不能包含其它对象
- Extents本地管理
- 在创建时仅仅能使用DATAFILE and EXTENT MANAGEMENT条件
2)创建方法:
CREATE UNDO TABLESPACE undo1 DATAFILE '/oracle/oradata/undo01.dbf' SIZE 40M;
3.4、TEMP临时表空间
1)概述:
- 用来做排序操作
- 不能包含固定的对象
- 最好使用本地表空间管理
2)创建方法:
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/oracle/oradata/temp01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
3.5、删除表空间
1)概述:
- 从数据字典中删除表空间信息
- 通过 AND DATAFILES条件可在操作系统上删除表空间的数据文件
2)创建方法:
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;
3.6、改变表空间的大小
1)概述:
- 增加数据文件
- 改变数据文件大小:自动/手动
2)创建方法:
手动改变数据文件大小
ALTER DATABASE DATAFILE '/test/oradata/app_data_02.dbf' RESIZE 200M;
3.7、在表空间中增加一个数据文件
1)创建方法:
ALTER TABLESPACE app_data ADD DATAFILE '/u01/oradata/app_data_03.dbf' SIZE 200M;
3.8、移动数据文件(修改表空间)
1)概述:
- 表空间必须为下线状态
- 目标数据文件必须存在
2)创建方法:
ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01.dbf' TO '/u01/oradata/userdata01.dbf';
3.9、获取表空间信息
1)表空间信息:
- DBA_TABLESPACES
- V$TABLESPACE
2)数据文件信息:
- DBA_DATA_FILES
- V$DATAFILE
3)临时文件信息:
- DBA_TEMP_FILES
- V$TEMPFILE
四、表空间的管理案例一
4.1、案例说明
- 请监控数据库表空间使用情况,如果表空间使用比例达到80%以上,请扩展其空间。
- 要求,通过sqlplus运行sql脚本:test.sql。
4.2、前期准备
1)查看表空间数据结构:
desc dba_tablespaces;
2)查看表空间:
select TABLESPACE_NAME from dba_tablespaces;
3)查看数据文件:
select name from v$datafile;
4)监控oracle表空间脚本:
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",a.maxbytes/1024/1024 "Max MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used", round(((a.bytes-b.bytes)/a.maxbytes)*100,2) "percent_used_max" from (select tablespace_name,sum(bytes) bytes,sum(maxbytes) maxbytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;
可以看到,SYSTEM和SYSAUX两个表空间的使用率已超过80%。
4.3、扩展方法一:修改数据文件
1)查看表空间与数据文件的对应关系:
select FILE_NAME,TABLESPACE_NAME from dba_data_files;
2)修改数据文件:
ALTER DATABASE DATAFILE 'C:APPADMINISTRATORORADATATESTSYSTEM01.DBF' RESIZE 1000M; ALTER DATABASE DATAFILE 'C:APPADMINISTRATORORADATATESTSYSAUX01.DBF' RESIZE 800M;
3)重新监控oracle表空间:
4.4、扩展方法二:增加数据文件
1)增加数据文件:
ALTER TABLESPACE SYSTEM ADD DATAFILE 'C:APPADMINISTRATORORADATATESTSYSTEM02.DBF' SIZE 200M; ALTER TABLESPACE SYSAUX ADD DATAFILE 'C:APPADMINISTRATORORADATATESTSYSAUX02.DBF' SIZE 200M;
2)重新监控oracle表空间:
五、表空间的管理案例二
5.1、案例说明:
业务系统上线,需要创建1个业务表空间:
- 表空间名test01
- 大小100M
- 自动扩展关闭
- 多个数据文件
1)操作方法如下:
create tablespace test01 datafile 'C:APPADMINISTRATORORADATATEST est01.dbf' size 100m autoextend off; alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATEST est02.dbf' size 100m autoextend off; alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATEST est03.dbf' size 100m autoextend off;
六、表空间的管理案例三
6.1、案例说明:
业务系统上线,需要创建1临时表空间:
- 表空间名testtemp
- 大小100M
- 自动扩展关闭
1)操作方法如下:
create temporary tablespace testtemp tempfile 'C:APPADMINISTRATORORADATATEST esttemp01.dbf' size 100m autoextend off;