首页 > 范文大全 > 正文

Oracle数据库表空间的维护

开篇:润墨网以专业的文秘视角,为您筛选了一篇Oracle数据库表空间的维护范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】oracle数据库在各个领域中的应用越来越广泛,数据库的维护工作就相当的重要,尤其是表空间维护也成为了数据库维护中的重要内容。本文主要从表空间的维护方面介绍了维护数据库过程中需要定期检查的内容,在影响数据库和应用程序之前进行处理,从而保证系统的正常运行。

【关键词】oracle;表空间;维护

Oracle数据库在各个领域中的应用越来越广泛,数据库的维护工作就相当的重要,尤其是表空间维护也成为了数据库维护中的重要内容。表空间的问题主要体现在应用系统的反馈错误信息和数据库的告警信息上,管理员可以依据这些错误和告警信息来发现问题,并作相应的处理。这就要求我们加强对表空间的监控,通过对ORACLE数据库表空间的定期检查和处理,数据库本身得到了很好的优化,性能得到了提高,从而也保证了相应的应用程序运行的稳定。

一、相关概念

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。表空间的作用主要体现在以下四个方面:第一,控制拥护所占用的表空间份额;第二,控制数据库所占用的磁盘空间;第三,灵活放置表空间,提高数据库的输入输出性能;第四,大表的排序操作;第五,日志文件与数据文件分开放,提高数据库安全性。

表空间分为四种类型:一是系统表空间,包括system和SYSAUX表空间,存放oracle的数据字典及其数据;二是大表空间、小表空间,包括用户数据(表、索引);三是临时表空间,用于存放临时数据;四是回退表空间,用于数据库的并发存取控制。定期检查各种不同类型表空间的情况,是避免数据库错误的有效方法。

二、检查自由表空间情况以及表空间的碎片大小

一般在系统使用较长时间后,表空间的连续块被多次的修改与删除等操作后出现了许多的不连续的块(叫碎片)。这样就有可能出现表的扩展所需要的连续块不能满足的情况。为了避免这样的情况发生而导致扩展失败,管理员要经常查询系统的表空间情况。其实,平常管理最关心就是表空间的总量、最大字节、使用多少、碎片多少等。下面语句可以查询出所有表空间的自由空间、总空间数、已用空间、自由百分比及最大块的字节数。

select substr(a.tablespace_name,1,13) tablespace,

round(sum(a.total1)/1024/1024,1) Total,

round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) used,

round(sum(a.sum1)/1024/1024,1) free,

round(sum(a.sum1)/1024/1024,1)*100/round(sum(a.total1)/1024/1024, 1) pct_free,

round(sum(a.maxb)/1024/1024,1)largest,

max(t) fragment

from (select tablespace_name,0 total1, sum(bytes) sum1,

max(bytes) MAXB,

count(bytes) cnt

from dba_free_space

group by tablespace_name

union

select tablespace_name, sum(bytes) total1, 0, 0, 0 from dba_data_files

group by tablespace_name) a

group by a.tablespace_name

如果发现表空间的碎片已经严重到影响了数据库的运行,则考虑对该表空间进行扩展或重建。

三、检查临时表空间

与一般表空间管理相似,临时表空间需要经常监控。以确保在处理大型事务时有足够的空间提供使用。Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。在维护这个临时表空间的时候,要注意几个情况:临时表空间设置不当;查询的时候使用的表过多或者语句使用不当;表索引没有建立或者设置不当等等。针对这些情况,需要对查询的语句和索引进行优化,并检查临时表空间的配置,以避免出现表空间暴涨的情况。还有一点最重要的就是要为临时表空间保留足够的硬盘空间。

四、删除表空间

当表空间中所有数据都不再需要时,可以考虑将该表空间删除。一般是,除了SYSTEM表空间不允许删除外,其他的表空间都可以删除。只要用户具有DROP TABLESPACE权限即可进行表空间的删除操作。Oracle提供DROP TABLESPACE命令来完成对表空间的删除。实际上仅是从数据字典和控制文件中将该表空间的有关信息去掉,并没有真正删除该表空间所对应的数据文件。删除不用的数据文件的工作有DBA在操作系统下完成。一旦表空间被删除,则该表空间的数据是不可恢复的。所以建议DBA在进行表空间的删除前,最好要进行表空间的备份操作。然后再进行表空间的删除。还需要注意的是,不能删除SYSTEM表空间和包含有用的对象的表空间。

参考文献

[1]George Koch, Kevin Loney. Oracle8 完全参考手册[M].机械工业出版社1998.8

[2]Kevin Loney, Marlene Theriault. Oracle9i DBA 手册[M].机械工业出版社2002.5

[3]Jiawei Han, Micheline Kamber. 数据挖掘概念与技术[M].机械工业出版社2001.8

[4]Dennis Shasha, Philippe Bonnet. Database Tuning[M].Morgan Kaufmann Publishers,2002