概述
oracle表空间这个概念大家应该都很熟悉了, 这是一个逻辑概念,可以理解为在数据库中开辟的空间用来存储数据库对象。
表空间相关
1、表空间和数据文件的关系:
表空间由一个或多个数据文件组成;数据文件的大小和位置可以自己定义;
2、表空间的分类:
永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程
临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放
UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚
篇幅有限,下面主要对系统表空间、辅助表空间和临时表空间做个介绍。
一、系统表空间
SYSTEM 表空间是 Oracle 数据库最重要的一个表空间,存放了一些 DDL 语言产生的 信息以及 PL/SQL 包、视图、函数、过程等,称之为数据字典,因此该表空间也具有其特殊性。
Oracle服务器使用SYSTEM表空间管理整个数据库。这个表空间包含系统的数据字典和关于数据库的管理信息,这些信息均包含在SYS方案中,只有SYS用户或者拥有所需权限的其它管理用户才可访问这些信息。SYSTEM表空间用于核心功能(例如数据字典表)。
1、建议不存放用户数据
//为数据库设定默认表空间
SQL>ALTER DATABASE DEFAULTTABLESPACE tablespace_name;
//查询默认表空间
SQL> select property_name,property_value from database_properties where property_name like 'DEFAULT%';
2、SYSTEM表空间特性
• 不能脱机 offline
• 不能置为只读 read only
• 不能重命名
• 不能删除
3、空间管理
这里一定要保证空间可用,一般存放单个数据文件,如果 SYSTEM 表空间数据文件很大,可以考虑使用 bigfile。
二、辅助表空间
SYSAUX 表空间在 Oracle Database 10g 中引入,作为 SYSTEM 表空间的辅助表空间.
以前一些使用独立表空间或系统表空间的数据库组件现在在 SYSAUX 表空间中创建. 通过分离这些组件和功能,SYSTEM 表空间的负荷得以减轻.反复创建一些相关对象及组件 引起 SYSTEM 表空间的碎片问题得以避免。
SYSTEM和SYSAUX表空间是在创建数据库时创建的必须存在的表空间。这些表空间必须联机。在OPEN状态下,SYSAUX表空间可以脱机以执行表空间恢复,而SYSTEM表空间则不能,这两种表空间都不能设置为只读状态。在MOUNT状态下,任何表空间都可以脱机。
SYSTEM表空间的大小一般变化不大,而SYSAUX表空间在默认条件下如果不做任何配置,那么随着时间的推移,会越来越大。所以,如果SYSAUX表空间过大,那么应该及时诊断清理该表空间。
对于SYSTEM表空间而言,如果占用过大,那么一般情况下是由于审计表(SYS.AUD$)过大引起的。需要将审计表移动到其它表空间中,然后再清理审计表(TRUNCATE TABLE SYS.AUD$)即可。需要注意的是,如果审计表过大,那么应该分部去清理审计表。
对于SYSAUX表空间而言,如果占用过大,那么一般情况下是由于AWR信息或对象统计信息没有及时清理引起的,具体原因可以通过如下的SQL语句查询:
SELECT OCCUPANT_NAME "Item