- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle 表碎片的监控与清理
利用DBMS_SPACE包对Oracle 表碎片进行监控与清理
如果经常进行频繁的insert与delete操作,将会使表的HWM(高水位)变高,这样在作全表扫的操作时,将花费更多的成本。一般而言,当实际含有行数据的数据块只占HWM的50%时,我们一般认为表中数据块存在较大的浪费,出现这样的情况,一般建议对表进行重建。
对于查询某张表的空间使用情况,Oracle提供了一个包DBMS_SPACE来完成。关于该包的使用方法可以参见其说明。这里主要提供了一种快速布署的方法,来对数据库中的相关表进行监控,对浪费空间比较大的表进行表的重建,统计信息收集。其思路是,首先对数据库中所有用户的表作调查,确定哪些表需要监控,创建一张表来维护监控信息,碎片情况的收集通过Procedure来完成,如果有需要重建的表,则生成相关的语句,并将语句以邮件的方式发出。相关的脚本在HP-UX上运行,如果是其它平台,可作相应的修改。
在Oracle用户下创建相关的目录
mkdir /oracle/utils/tb_monitor
mkdir /oracle/utils/tb_monitor/log
mkdir /oracle/utils/tb_monitor/mail_result
创建TB_MONITOR表,由于这里是通过perfstat用户来进行监控,所以还需要显示的进行授权,方能在后面的procedure中查询dba_segments数据字典
TB_MONITOR表结构说明如下:
TABLE_NAME:需要监控的表的名称。
OWNER:表所属用户。
SIZE_THRESHOLD:表的大小阈值
WASTE_THRESHOLD:浪费率的大小阈值,默认值为70%。
SGM_SPACE_MANAGEMENT:段管理方式,分为MANUAL和AUTO
CURRENT_SIZE:表当前的大小。
CURRENT_WASTE:表当前的浪费率。
脚本如下:
grant select on dba_segments to perfstat;
conn perfstat/perfstat
CREATE TABLE PERFSTAT.TB_MONITOR
( TABLE_NAME VARCHAR2(200) NOT NULL ENABLE,
OWNER VARCHAR2(20) NOT NULL ENABLE,
SIZE_THRESHOLD NUMBER,
WASTE_THRESHOLD NUMBER,
SGM_SPACE_MANAGEMENT VARCHAR2(6),
CURRENT_SIZE NUMBER,
CURRENT_WASTE NUMBER,
CONSTRAINT PK_TAB_NAME PRIMARY KEY (TABLE_NAME,OWNER)
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
);
完成表的创建后,赋予Public的查询权限,创建公共同义词。以方便查询:
grant select on PERFSTAT.TB_MONITOR to public;
create public synonym TB_MONITOR for PERFSTAT.TB_MONITOR;
确定需要监控的用户
查看监控会涉及到哪些用户,并筛选需要监控的表
set pagesize 20
select username from dba_users
where username not in
(SYS,SYSTEM,OUTLN,CTXSYS,DBSNMP,PERFSTAT,WMSYS,MDSYS,ORDSYS,ORDPLUGINS);
可以按照下面的语句进行筛选需要监控的表,生成插入的sql语句,并将这些需要监控的表插入监控表中,这里没有监控分区表。根据情况再加入一些筛选的条件。
另外,监控的范围是1M20G大小的普通表。
set feedback off
set echo off
set heading off
set lines 300
set pagesize 50000
set trimspool on
col segment_name Format a32
col Owner Format a12
spool table_monitor_insert.temp
--select Owner,segment_name,sum(bytes/1024/1024) from dba_segments where segment_name in (
select insert into
您可能关注的文档
- 1-oracle体系结构入门.ppt
- toad_说明文档.ppt
- LoaRunnner_使用入门.ppt
- 手卫生、职业暴露、标准预防院感试题.doc
- oracle_SQL语句优化.ppt
- 青山区2014-2015学年度第一学期期末考试八年级数学试卷(word版).doc
- 10g新特性及其对应用开发和系统管理的影响.ppt
- 第一课:SYBASE基本知识(安装、配置).ppt
- 2.5 SQL Server 2005的常用工具.ppt
- 1、SQL Server 2005概述与安装.pptx
- 《JJF 2132-2024荧光紫外灯人工气候老化试验装置校准规范:辐射照度参数》.pdf
- JJF 2120-2024轮速传感器校准规范.pdf
- 计量规程规范 JJF 2120-2024轮速传感器校准规范.pdf
- 《JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数》.pdf
- JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数.pdf
- 《JJF 2120-2024轮速传感器校准规范》.pdf
- JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
- JJF 2116-2024特定蛋白分析仪校准规范.pdf
- 《JJF 2116-2024特定蛋白分析仪校准规范》.pdf
- 计量规程规范 JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
文档评论(0)