oracle 表碎片的监控与清理

oracle 表碎片的监控与清理

ID:6321755

大小:83.50 KB

页数:10页

时间:2018-01-10

oracle 表碎片的监控与清理_第1页
oracle 表碎片的监控与清理_第2页
oracle 表碎片的监控与清理_第3页
oracle 表碎片的监控与清理_第4页
oracle 表碎片的监控与清理_第5页
资源描述:

《oracle 表碎片的监控与清理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、利用DBMS_SPACE包对Oracle表碎片进行监控与清理如果经常进行频繁的insert与delete操作,将会使表的HWM(高水位)变高,这样在作全表扫的操作时,将花费更多的成本。一般而言,当实际含有行数据的数据块只占HWM的50%时,我们一般认为表中数据块存在较大的浪费,出现这样的情况,一般建议对表进行重建。对于查询某张表的空间使用情况,Oracle提供了一个包DBMS_SPACE来完成。关于该包的使用方法可以参见其说明。这里主要提供了一种快速布署的方法,来对数据库中的相关表进行监控,对浪费空间比较大的表进行表的重建,统计信息收集。其思路是,首先对

2、数据库中所有用户的表作调查,确定哪些表需要监控,创建一张表来维护监控信息,碎片情况的收集通过Procedure来完成,如果有需要重建的表,则生成相关的语句,并将语句以邮件的方式发出。相关的脚本在HP-UX上运行,如果是其它平台,可作相应的修改。一.在Oracle用户下创建相关的目录mkdir/oracle/utils/tb_monitormkdir/oracle/utils/tb_monitor/logmkdir/oracle/utils/tb_monitor/mail_result二.创建TB_MONITOR表,由于这里是通过perfstat用户来进行

3、监控,所以还需要显示的进行授权,方能在后面的procedure中查询dba_segments数据字典TB_MONITOR表结构说明如下:TABLE_NAME:需要监控的表的名称。OWNER:表所属用户。SIZE_THRESHOLD:表的大小阈值WASTE_THRESHOLD:浪费率的大小阈值,默认值为70%。SGM_SPACE_MANAGEMENT:段管理方式,分为MANUAL和AUTOCURRENT_SIZE:表当前的大小。CURRENT_WASTE:表当前的浪费率。脚本如下:grantselectondba_segmentstoperfstat;co

4、nnperfstat/perfstatCREATETABLE"PERFSTAT"."TB_MONITOR"("TABLE_NAME"VARCHAR2(200)NOTNULLENABLE,"OWNER"VARCHAR2(20)NOTNULLENABLE,"SIZE_THRESHOLD"NUMBER,"WASTE_THRESHOLD"NUMBER,"SGM_SPACE_MANAGEMENT"VARCHAR2(6),"CURRENT_SIZE"NUMBER,"CURRENT_WASTE"NUMBER,CONSTRAINT"PK_TAB_NAME"PRIMARY

5、KEY("TABLE_NAME","OWNER")USINGINDEXPCTFREE10INITRANS2MAXTRANS255);完成表的创建后,赋予Public的查询权限,创建公共同义词。以方便查询:grantselecton"PERFSTAT"."TB_MONITOR"topublic;createpublicsynonymTB_MONITORfor"PERFSTAT"."TB_MONITOR";一.确定需要监控的用户查看监控会涉及到哪些用户,并筛选需要监控的表setpagesize20selectusernamefromdba_userswher

6、eusernamenotin('SYS','SYSTEM','OUTLN','CTXSYS','DBSNMP','PERFSTAT','WMSYS','MDSYS','ORDSYS','ORDPLUGINS');可以按照下面的语句进行筛选需要监控的表,生成插入的sql语句,并将这些需要监控的表插入监控表中,这里没有监控分区表。根据情况再加入一些筛选的条件。另外,监控的范围是1M---20G大小的普通表。setfeedbackoffsetechooffsetheadingoffsetlines300setpagesize50000settrimspoolo

7、ncolsegment_nameFormata32colOwnerFormata12spooltable_monitor_insert.temp--selectOwner,segment_name,sum(bytes/1024/1024)fromdba_segmentswheresegment_namein(select'insertintoPERFSTAT.TB_MONITOR(owner,TABLE_NAME,CURRENT_SIZE)values('

8、

9、''''

10、

11、Owner

12、

13、''','

14、

15、''''

16、

17、segment_name

18、

19、''''

20、

21、',

22、'

23、

24、sumsize

25、

26、');'from(selectOwner,segment

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。