第6章 监控空间利用率
称职的DBA应当会使用工具集来监控数据库,主动监控数据库的各个方面,如事务加载、安全实施、空间管理及性能监控,并在发现任何具有潜在灾难性系统问题时采取适当行动。第7章~第10章将介绍事务管理、性能调整、内存管理以及数据库安全和审核。本章将说明DBA如何才能有效地管理以下不同类型表空间中数据库对象所使用的磁盘空间:SYSTEM表空间、SYSAUX表空间、临时表空间、撤消表空间以及不同大小的表空间。
为减少管理磁盘空间所用的时间,DBA需要理解应用程序使用数据库的方式,并提供数据库应用程序设计期间的指导原则,这很重要。数据库应用程序的设计和实现,包括表空间布局和数据库的预期增长,这些已在第3章~第5章中介绍过了。
本章也提供一些脚本,这些脚本只需要用到SQL*Plus,另外还提供了解释结果所需要的相关知识。这些脚本适于快速查看给定时间点数据库的健康程度。例如,查看是否有足够的磁盘空间来处理夜间的大型SQL*Loader作业,或者诊断快速运行的查询的某些响应时间问题。
Oracle提供大量内置程序包来帮助DBA管理空间和诊断问题。例如,根据对象中存在多少存储碎片,Oracle Database 10g中引入的Oracle段顾问(Segment Advisor)可帮助确定数据库对象是否有可重用的空间。其他Oracle特性,如可恢复的空间分配(Resumable Space Allocation),允许挂起那些会用尽磁盘空间的长期运行的操作,直到DBA干预并分配足够的额外磁盘空间来完成该操作。这就避免了从头开始重新启动长期运行的作业。
本章也将介绍一些关键的数据字典视图和动态性能视图,通过它们可详细查看数据库的结构并优化空间利用率。本章所提供的许多脚本都使用了这些视图。
本章末尾将介绍用于自动化脚本和Oracle工具的两种不同方法:使用DBMS_ SCHEDULER内置程序包以及使用Oracle企业管理器(OEM)基础结构。
本章主要关注表空间的空间利用率,以及包含在表空间中的对象。虽然其他数据库文件(如控制文件和重做日志文件)占用磁盘空间,但只占用数据库使用的全部空间的很小一部分。然而,本章将简要讨论如何管理归档的日志文件,因为归档日志文件的数量将无限增加,其速度与在数据库中发生的DML活动量成比例。因此,管理归档日志文件的良好计划将有助于控制磁盘空间利用率。