一、存储结构

二、表空间的分类

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:APPADMINISTRATORORADATATESTtest01.dbf' size 100m autoextend off;

alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATESTtest02.dbf' size 100m autoextend off;

alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATESTtest03.dbf' size 100m autoextend off;

六、表空间的管理案例三

6.1、案例说明:

业务系统上线,需要创建1临时表空间:

  • 表空间名testtemp
  • 大小100M
  • 自动扩展关闭

1)操作方法如下:

create temporary tablespace testtemp tempfile 'C:APPADMINISTRATORORADATATESTtesttemp01.dbf' size 100m autoextend off;

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/atomy/p/13812784.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!