Oracle表空间基础(5)

一、修改和维护表空间

1、增加表空间容量

可以通过修改表空间数据文件的大小或为表空间添加一个数据文件的方式增加表空间的容量,另外我们还可以使用表空间的自动扩展选项为大文件表空间增加容量。对于本地管理的临时表空间,即无法它增加空间容量,也无法修改它的段空间管理方式。

a、小文件表空间增加容量

# 通过为表空间添加数据文件的方式增加表空间容量
SQL> alter tablespace test
  2  add datafile ‘/u01/app/oracle/oradata/stdb/test02.dbf‘ size 10m;
Tablespace altered.

# 使用RESIZE子句增加大文件表空间的容量
SQL> alter database datafile ‘/u01/app/oracle/oradata/stdb/test02.dbf‘ resize 20m;
Database altered.

b、大文件表空间增加容量

# 使用RESIZE子句增加大文件表空间的容量
SQL> alter tablespace bigtbs resize 20m;
Tablespace altered.

# 使用AUTOEXTEND子句增加大文件表空间的容量
SQL> alter tablespace bigtbs autoextend on next 10m;
Tablespace altered.

2、修改本地管理的临时表空间

可以使用alter tablespace语句为临时表空间添加数据文件,由于无法对临时表空间执行离线操作,所以可以使用离线临时表空间的临时文件的方法来替代。

# 增加临时表空间容量
SQL> alter tablespace lmttmp
  2  add tempfile ‘/u01/app/oracle/oradata/stdb/temp03.dbf‘ size 20m;
Tablespace altered.

# 使临时表空间中的数据文件离线
SQL> alter tablespace lmttmp tempfile offline;
Tablespace altered.

# 使临时表空间中的数据文件在线
SQL> alter tablespace lmttmp tempfile online;
Tablespace altered.

# 删除临时表空间文件
SQL> alter database tempfile ‘/u01/app/oracle/oradata/stdb/temp03.dbf‘ drop including datafiles;
Database altered.

3、收缩本地管理临时表空间

由于执行大的排序操作可能会导致占用相当大的临时表空间,在完成排序后,这些额外的空间并不会被释放,这些空间会被标记成空闲且可被重用的状态。基于这一点,在数据库中允许收缩临时表空间中的未使用的空间。

使用alter tablespace ... shrink space语句可以执行收缩临时表空间的操作,或者使用alter tablespace ... shrink tempfile语句收缩临时表空间当中的临时文件。收缩使得临时表空间有更多的空间可用,同时并不改变该表空间的其他属性。使用keep子句保持临时表空间或临时文件的最小大小。

4、重命名表空间

使用alter tablespace old_new rename to new_name语句重命名表空间,只能够对永久表空间或临时表空间进行重命名的操作。重命名表空间将会在数据字典、控制文件、数据文件的文件头中更新所有对该表空间的引用。表空间重命名的操作不会更新表空间的ID号,所以当更新用户的默认表空间时,通过dba_vusers视图可以查询到更新后的信息。

下列情形将对表空间重命名操作产生影响:

  • 兼容性参数(compatible)必须被设置为10.2.0或者更高;
  • 如果尝试对system,sysaux表空间进行重命名操作,将会产生一个错误;
  • 如果数据文件或表空间离线,表空间的命名操作不会成功,并且会产生一个错误;
  • 如果表空间为只读状态,此时数据字典和控制文件被更新,但数据文件头将无法更新,这将会产生一条错误消息写入告警日志文件;
  • 如果是undo表空间,那么重命名表空间也会更新spfile的信息,如果使用的是pfile的话,需要手动修改undo_tablespace参数;

5、删除表空间

当删除一个表空间时,与该表空间文件相关的指针都将从数据库的控制文件中移除。在删除表空间的操作过程中,可以选择同时删除数据文件,如果仅删除表空间而没有删除数据文件的话,可以再删除操作完成后,然后使用操作系统命令完成删除。

不能在包含活动段的表空间上执行删除表空间的操作。例如,如果表空间上的表当前正在被使用或者表空间包含回滚未提交事务的撤销数据,此时就无法执行删除表空间的操作。在执行删除表空间的操作时,表空间可以在线,也可以离线,但是最好在删除操作之前使表空间离线。

删除表空间及表空间上的段,如果表空间上的表的主键或唯一键被其他表空间上的表引用的话(存在外键约束),可以使用cascade constraints子句执行删除表空间的操作。

drop tablespace ... including contents
drop tablespace ... including contents cascade constraints

删除表空间的同时删除数据文件:

drop tablespace ... including contents and datafiles //该操作将会在数据库告警日志文件里产生一条记录

二、管理SYSAUX表空间

当创建数据库时,SYSAUX表空间被安装,SYSAUX表空间作为SYSTEM的一个辅助表孔空间。以前各自使用单独表空间的一些数据库组件现在都被统一存储在SYSAUX表空间中了。如果SYSAUX表空间不可用,数据库的核心功能并不受影响,使用SYSAUX表空间的数据库特性将无法使用或功能受到限制。

通过v$sysaux_occupants视图可以实现对SYSAUX表空间的监控、将某些组件已入或移出SYSAUX表空间、组件空间使用率等信息。SYSAUX表空间内存放的是一些数据库组件,这些组件所占空间的大小就构成了SYSAUX表空间的大小;反过来,组件所占用的空间大小取决于数据库使用了那些功能特性及数据库的工作负载情况。

除此之外,EM(Oracle Enterprise Manager Repository)也会占用较大的SYSAUX表空间。

 

时间: 2024-10-11 04:07:47

Oracle表空间基础(5)的相关文章

Oracle表空间基础(1)

一.Oracle表空间概述 表空间是Oracle数据库中的一种逻辑结构.从逻辑层面上来说,表空间包含段,数据库中的对象是以段的形式来组织的,诸如表段,索引段等:从物理层面上来说,表空间是由文件构成的,数据库中的数据实际上是存储在文件当中的.表空间不是Oracle数据库中的特有概念,如在DB2中也有表空间这个概念. 二.本地管理的表空间 1.本地管理表空间中的扩展(extent)管理 使用extent management local子句显示声明创建本地管理的表空间,对于新的永久表空间来说,这是一

Oracle表空间基础(2)

一.压缩表空间 压缩表空间是通过压缩表空间内的对象来实现的.数据的压缩体现在数据块上,简单的说就是通过清除数据块上的重复内容来达到降低I/O,提升性能性能的目的.在表空间的创建语句中通过指定default关键字,可以让在该表空间上创建的所有表进行压缩(实际上,压缩是在数据插入时进行的). 根据表空间存储数据对象的不同,表空间压缩类型可以分为OLTP压缩.非结构化文件副本清除.非结构化文件压缩和备份数据压缩等.其中OLTP压缩是指在发生DML操作(包括insert,delete,update)期间

Oracle表空间基础(4)

一.创建非标准块的表空间 在数据库中可以创建不同于数据库标准块大小的表空间,这个特征可以在两个具有不同块大小的数据库之间传输表空间.在创建非标准块表空间之前,必须保证设置了DB_CACHE_SIZE和至少一个DB_nK_CACHE_SIZE初始化参数,DB_nK_CACHE_SIZE即为非标准块表空间的块大小. # 查看参数db_16k_cache_size系统默认值,默认值为0,表示未启用. show parameter db_16k_cache_size NAME TYPE VALUE --

Oracle表空间基础(3)

一.临时表空间 临时表空间仅包含会话期间产生的短暂的数据,可改善多个无法在内存中完成的排序操作的并发性,同时还可以提高在排序操作中空间管理的效率.在临时表空间内,特定实例的排序操作共享一个排序段,排序段在数据库启动时创建,在数据库关闭时被释放. 在完成数据库的安装以后,数据库内默认存在一个名为temp的临时表空间,temp表空间可被数据库内的多个用户所共享.也可以使用create temporary tablespace语句创建临时表空间,同时使用create/alter user语句为用户指定

Oracle表空间

Oracle表空间,布布扣,bubuko.com

【Oracle 常用查询】oracle表空间使用率统计查询

参考1 --查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '

44.oracle表空间的使用

要给下属充分的发挥空间,要允许下属犯错,下属犯错自己能顶下来就顶着,不要盯得让下属觉得"这不是我的事,我只是个小打工的",团建要放在首位.不可在下属面前"装B",别人也不傻. Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献.可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的. ORACLE数据库被划分成称作为表空间[1]  的逻辑区域--形成ORACLE数据库的逻辑结构.一个ORACLE数据库能够

Oracle表空间,用户,用户授权

一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客"怎样玩转千万级别的数据"提到了过表分区的概念,其实表分区说到本质上就是按一定条件把不同数据放在不同的数据文件里,这些数据文件在物理上是相对独立的,在逻辑上又是一个整体.特别强调一下,在SQL Server中,建表时是默认把所有的表都保存在PRIMARY默认文件组 ,当数据库中表很多,并且数据量很大时,会

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora