暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于Oracle表空间及表空间不足如何解决

IT那活儿 2022-01-31
2875
点击上方“IT那活儿”,关注后了解更多精彩内容!!

表空间的基本概念

Oracle表空间是数据库的一种逻辑存储结构,由多个表空间组成,而表空间又是由多个段组成,段由多个数据区组成,数据区又是由多个数据块组成。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。



段是有一个或者多个数据区构成,它不是存储单位,而是一个独立的逻辑存储结构,用于存储表,索引占用空间的对象.一个段只属于一个特定的数据对象.段又分为数据段,索引段,回滚段,临时段.

数据区

也称为数据扩展区,是由一组数据块构成的存储结构,Oracle就以数据区为单位进行存储控件的扩展.使用数据区的目的就是用来保存特定数据类型的数据,分配存储空间就是以数据区为单位的

数据块

是Oracle逻辑存储结构中的最小的逻辑单位,也是数据库输入/输出操作的最小储存单位.Oracle数据存放在Oracle数据块中,而不是操作系统块.通常Oracle数据块是操作系统块的整数倍.数据块中可以存放表数据和簇数据.


数据库有多个表空间及其作用

  • SYSTEM:存放数据字典和内部数据。
  • SYSAUX:SYSTEM的辅助表空间,主要存储除数据字典以外的其它数据对象,在一定程度上降低了SYSTEM表空间的负荷。
    用户可以对SYSAUX表空间进行增加数据文件和监视等操作,但不能对其执行删除,重命名或设置只读。
  • TEMP:存放SQL语句处理的表和索引的信息。
  • UNDOTBS1:存放撤销数据的表空间。
  • USERS:通常存放应用系统所使用的数据库对象。
创建表空间:

本地化管理方式创建表空间


本地化的扩展有自动大小和等同大小。

通过本地化管理方式创建一个表空间,其扩展大小为等同的1m:
通过本地化管理方式创建一个表空间,其扩展大小为自动管理:

段空间管理方式创建表空间

在本地管理的基础上还有段空间管理方式创建表空间,分为手工段和自动段。

手工段:空间管理方式是为了向后兼容而保留的,它使用自由块列表和PCT_FREE与PCT_USED参数来标识供插入操作使用的数据块;

自动段:使用位图而不是自由列表来标识哪些数据块可以用来插入,哪些数据块需要从自由列表上将其取下。

创建段空间管理方式为手工段的表空间:
创建段空间管理方式为自动的表空间:

大文件表空间


大文件表空间是为超大型数据库而设计的,并且只有一个数据文件,这是与常规的表空间最大区别,注意两个的问题,其一是Bigfile Tablespace必须使用local本地extent管理方式,另一方面是段segment空间使用auto自动方式,不要使用manual。

创建大文件表空间:

表空间不足处理方法


如遇到表空间不足,错误代码ORA-01653: unable to extend table 等,一般原因是因为初始表空间较小,储存空间不足;

处理方法:(假设bkj2空间不足)
将表空间的数据文件设置为自动增长(不建议使用这种方法,会导致这个表空间文件太大):
手动重设表空间数据文件大小:
增加新的数据文件:


--END--



本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)


文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论