分享

ORACLE数据库表空间的监控和维护_快速发表职称论文网

 kokogood 2011-02-28

ORACLE数据库表空间的监控和维护

时间:2010-11-07 13:22来源:未知 作者:admin 点击: 157次
ORACLE数据库表空间的监控和维护投稿咨询QQ:1164214247 邮箱:lunwenat2009@sina.com 电话:13408646473 唐老师

ORACLE数据库表空间的监控和维护

摘 要:通过ORACLE数据库内部管理表和视图加强数据库系统数据表空间的监控和维护。

关键字:数据库   表空间   监控

ORACLE数据库在系统性能,安全性以及可靠性方面都有相当优越的表现,在大型数据管理系统中有很好的应用和卓越的表现。但是该数据库系统对数据库管理的要求也有了较高的要求。

数据库系统的管理,在一般意义上,可能可以通过应用系统使用中的一些信息或者数据库系统的告警信息来发现数据库的异常情况,包括数据库表空间不够,数据表或者索引不能扩展,或者会滚段不能扩展,数据快照太旧等等,管理员就可以依据这些错误和告警信息来发现问题,并作相应的处理,这样的一种模式常常会因为问题的突发性,或者因为管理员不能及时处理,而导致应用和业务系统的中断,给企业带来一定的损失,有时带来的损失可能是难以估量的。这就要求我们加强监控,防患于未燃,在问题还没有出现之前就做一些工作,将问题扼杀在摇篮之中,从而保证系统的正常运行。在ORACLE数据库内部,有一些管理表和视图,可以提供给数据库自身或者管理员来使用,这些表和视图可以及时的反映当前系统资源的利用情况,以及系统性能方面的一些参数和指标,ORACLE和一些外围厂商,依据这些表和视图也开发了一些数据库开发和管理的工具。有经验的数据库管理员也可以编写一些脚本,来加强数据库系统的监控和维护。以下就数据表空间的监控和维护的一个简单流程来谈谈对这些表和视图的使用:

ORACLE数据库中,涉及到数据表空间的大小和空间利用情况的系统表主要有DBA_DATA_FILESDBA_TABLESPACESDBA_FREE_SPACES等等,涉及到数据表或索引段的扩展特征和空间使用情况的主要有DBA_INDEXESDBA_TABLESDBA_SEGMENTSDBA_EXTENTSE等等,这些表和视图的具体意义可以在ORACLE的相关资料中去查找,这里将仅仅介绍本文要用到的部分字段的意义:

DBA_DATA_FILES

TABLESPACE_NAME    表空间名

BYTES              文件大小(字节数)

FILE_ID            文件编号

DBA_FREE_SPACE

TABLESPACE_NAME    表空间名

BYTES              文件中碎片大小(字节数)

FILE_ID            文件编号

DBA_SEGMENTS

TABLESPACE_NAME    表空间名

SEGMENT_NAME       段名

SEGMENT_TAPE       段类型

BYTES              段大小(字节数)

NEXT_EXTENT        下一扩展段大小(字节数)

PCT_INCREASE       扩展增长比例

EXTENTS            扩展段数量

MAX_EXTENTS        最大扩展段数量

在数据库表空间的监控和维护中,需要保证数据库系统在正常业务下,表空间可以自由扩展,数据表不会因为表空间不够,扩展段太大,或者最大扩展段过小而导致的业务中断,相应的我们就要建立这些指标,在一定的时间间隔里,定期检查这些指标,并作相应的处理:

a.     检查数据库表空间的使用率,对使用率超过85%的活动表空间实施进一步检查,

需要的情况下,给表空间增加数据文件或者裸设备;

set pagesize 6000 linesize 100 heading on feed off ver off

column 表空间名 format a9

column 〝表空间大小(M)〞format99999

column 〝表空间使用比例%format99.9

spool tablespace.txt

prompt 以下将列出帐务数据库各个表空间的利用情况,对使用率超过85%的活动表空间需关注

select a.tablespace_name as 表空间名,

sum(a.bytes)/1024/1024 as〝表空间大小(M)〞,

round((sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024))

 as〝已使用空间(M)〞,

round(1000*sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024/

sum(a.bytes)/1024/1024)/10 as〝表空间使用比例%

from dba_data_files a,

(select tablespace­_name,file­­_id,sum(bytes)bytes

from dba_free_space group by tablespace_name,file_id)b

where a.tablespace_name=b.tablespace-name(+)

and a.file_id=b.file_id(+)groud by a.tablespace_name order by 4 desc;

spool off;

该脚本查询视图DBA_DATA_FILES来计算各个表空间的实际大小,同时查询DBA_FREE_SPACE来计算表空间的剩余碎片空间,二者的差值就是该表空间已使用的数据空间,由此也可以就可以计算表空间的使用率。连接数据库,运行以上的脚本,将产生名为tablespace.txt的文件,该文件将显示数据库中所有表空间的名称,大小,已使用空间以及表空间的使用率,需要对使用率超过85%的表空间作进一步的检查,如果需要,应使用命令:

alter tablespace cw_data add datafile d:\oradata\cw05.ora size 2000m

来给表空间增加数据文件或裸文件,以防止表空间不能扩展;

b.     检查数据表及索引的下一个扩展段的大小,因为如果表空间的碎片情况较严重,

即使表空间尚有大量的剩余空间,但是碎片空间太小,表或索引也同样不可以扩展;

set pagesize 6000linesize 100 heading on feed off ver off term off

column  表空间名 format a9

column 〝扩展大小(M)〞 format 99999

column 〝段大小(M)〞 format 99999

column  段名 format a30

column  类型 format a15

column 〝碎片(M)〞 format 99999

column 〝碎片数〞 format 99999

column 〝最大碎片〞 format 99999999999

column 〝最小碎片〞 format 99999999999

column 〝总碎片大小〞 format 9999999

spool ZW_&1..txt

prompt

prompt以下列出表空间中各个表的下一个扩展空间的大小

prompt

select tablespace_name as 表空间名,

segment_name as 段名,

segment_tape as 类型,

round(bytes/1024/1024)as〝段大小(M)〞,

roundnext_extent*(pct_increase/100+1)/1024/1024as〝扩展大小(M)〞

from dba_segments

where tablespace_name=upper(ˊ&1ˊ)and bytes10*1024*1024 order by 5

 

prompt

prompt以下列出表空间中碎片和剩余空间的状况

prompt

select tablespace_name as 表空间名,

round(bytes/1024/1024)as〝碎片(M)〞,

count(*)as〝碎片数〞,

max(bytes)as〝最大碎片〞,

min(bytes)as〝最小碎片〞,

sum(bytes)/1024/1024 as〝总碎片大小〞

from dba_free_space

where tablespace_name=upper(ˊ&1ˊ)

group by tablespace_name,round(bytes/1024/1024)

order by tablespace_name

prompt

prompt以下列出可能因max_extents太小,不能扩展的表或索引

prompt

select segment-name as 段名,

segment_type as 类型,

tablespace_name as 表空间名,

extents当前扩展数,

max_extents as 最大扩展数

from dba_segments

where tablespace_name=upper(ˊ &1ˊ)and max_extents-extents20

spool off

该脚本通过查询DBA­­_SEGMENTS,检查相应表空间中各个表或索引的名称,类型,占用空间大小,同时根据段的第二个扩展段的大小和扩展段增长率来计算段下一下扩展段的大小;通过查询DBA_FREE_SPACE来计算每个表空间里的剩余空间块的大小,因为碎片的大小可能是连续的,为了简单化,这里以兆为单位将这些碎片分类,列表中会显示以兆为单位的碎片的数量,最大、最小碎片的大小,以及该大小碎片的空间总和,由此我们就可以综合段的扩展参数和表空间的碎片分布情况来考虑,一则可以增加表空间的大小,增加可以满足段扩展的碎片空间的数量;二则可以调整表或索引的段扩展参数,调小扩展段增长率,第二个扩展段的大小,使得段可以在表空间中自由地扩展。

c.     检查表空间碎片情况以及最大可用扩展段大小

d.     检查数据表的最大扩展段数目以及当前已用的扩展段数,一般要保证最大扩展段

与当前扩展段的差值>20

 

影响段扩展的重要参数还有一个就是最大扩展段数-MAX_EXTENTS,只有当段的扩展段数小于最大扩展段数,段才可以自由地扩展,也就是说,即使数据表空间的剩余空间足够,并且碎片的大小也大于段的扩展段大小,段也可能不能扩展,因此在日常的维护工作中还必须检验这一指标,为了确保数据段的正常扩展,通常可以将最大扩展段数与当前段的扩展段数的差值小于20的表或索引都显示出来,然后具体的分析,一则可以调高表或索引的最大扩展段数;一则可以参照前面的方法,将段的下一个扩展空间调大,那么段就不需要扩展那么多了,事实上,应该可以根据表或索引中存放数据的增长特性,来考虑这些参数

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多