`
职有财
  • 浏览: 6223 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

计算索引碎片的一个脚本

阅读更多
      今天在网上看到了一个估计索引碎片的方法,所以写了个小过程,对用户下的所有索引进行一次计算,挑选二元高度大于4的或者碎片率大于10%的索引进行输出。 需要说明的是,这种估计索引碎片的方法来自网上,还没有查询官方文档上的相关部分,仅供参考,我不对分析出的结果负责。
      我在一些OCP的教材上看到了有关analyze validate的说明,据称可以分析出碎片数,但是现在还没在官方文档上找到确切的证据,希望知道的人给我讲一下,以下是我从官方文档上找到的一些关于analyze validate的说明: 
      For an index, Oracle Database verifies the integrity of each data block in the index and checks for block corruption. This clause does not confirm that each row in the table has an index entry or that each index entry points to a row in the table. You can perform these operations by validating the structure of the table with the CASCADE clause.
      Oracle 验证每一个索引的数据块完整性以及检查block corruption。
declare
cursor cur_ind is
    select ui.index_name from user_indexes ui;
  ind_name  user_indexes.index_name%type;
  v_name    index_stats.name%type;
  v_height  index_stats.height%type;
  v_percent number;
begin
  dbms_output.enable(10000000000);
  open cur_ind;
  loop
    fetch cur_ind
      into ind_name;
    exit when cur_ind%notfound;
    execute immediate 'analyze index ' || ind_name || ' validate structure'; --分析每个索引
    select ist.name,
           ist.height,
           round((del_lf_rows / (lf_rows + 0.0000000001)) * 100)
      into v_name, v_height, v_percent
      from index_stats ist;
    if (v_height > 4 or v_percent > 10) then
      dbms_output.put_line('索引名:' || v_name || ', ' || '高度:' || v_height || ', ' ||
                           '百分比:' || v_percent || ', ' || '需要重建');
    end if;
  end loop;
  close cur_ind;
end;

分享到:
评论

相关推荐

    数据库日常监控脚本.pdf

    `sys.dm_db_index_physical_stats`动态管理视图提供索引碎片的详细信息。当`avg_fragmentation_in_percent`大于或等于30%时,通常建议重建索引。重建索引的命令示例给出了如何针对特定表的所有索引执行此操作。 4. ...

    Oracle碎片整理全面解析

    当一个表空间内的空闲空间分布过于分散时,新插入的数据可能会被放置在远离已有序列的位置上,这就形成了碎片。具体来说,碎片可以分为以下几种类型: 1. **自由空间碎片(Free Space Fragmentation)**:指的是表...

    Oracle碎片整理

    DBA可以通过执行特定的SQL脚本来计算FSFI值,以此判断是否需要进行碎片整理。 4. 自由范围的碎片整理 - 设置pctincrease:将表空间的默认存储参数pctincrease设置为非0值,例如1,可以帮助在段扩展时更均匀地分配...

    oracle_巡查脚本

    3. **analyze5pct.sql**:这是一个快速分析表和索引的脚本,使用5%的采样大小。通过调用`dbms_utility.analyze_schema`过程,可以估算表和索引的统计信息,而无需全量分析,从而节省时间。但请注意,如果正在进行...

    40个DBA日常维护的SQL脚本

    在给定的部分内容中,我们首先看到了一个 SQL 脚本,用于评估表空间的存储效率。这个脚本通过计算表的实际使用空间与分配空间的比例来确定表是否被有效地使用。 **脚本解读**: ```sql SELECT TABLE_NAME, (BLOCKS...

    oracle数据库表空间监控实用脚本

    2. **计算碎片率**:利用`(sum(free)*100/sum(bytes))`计算表空间的碎片率,其中`sum(free)`表示总的空闲空间,`sum(bytes)`表示总的分配空间。 3. **结果解读**:当计算得到的百分比小于30时,表明该表空间存在较高...

    Oracle数据库碎片整理

    自由范围的碎片计算可以使用FSFI(Free Space Fragmentation Index,自由空间碎片索引)值来直观体现。FSFI值可以用来计算碎片程度,Formula:FSFI=100*SQRT(max(extent)/sum(extents))*1/SQRT(SQRT(count(extents))...

    SQL SERVER 2008 R2 重建索引的方法

    在SQL Server 2008 R2中,重建索引是一项重要的维护任务,它有助于优化数据库性能,尤其是当数据经过频繁的插入、删除和更新操作后,可能导致索引碎片增加。索引碎片有两种类型:逻辑碎片(页顺序不连续)和物理碎片...

    Oracle数据库整理表碎片

    为了确定一个表是否存在碎片问题,可以通过以下步骤来进行检查: 1. **收集表统计信息**:首先,需要确保表的统计信息是最新的。这可以通过执行`exec dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME', ...

    Oracle数据库碎片整理.pdf

    可以使用DBA_FREE_SPACE视图来查询各个表空间的空闲空间分布情况,通过编写SQL脚本计算FFSI值,以监控和评估碎片程度。 总的来说,Oracle数据库的碎片整理是数据库管理的重要环节,定期进行碎片整理和预防措施能...

    oracle碎片整理

    以下是一个简单的SQL脚本示例,用于计算各个表空间的FSFI值: ```sql COLUMN FSFI FORMAT 999,99 SELECT tablespace_name, SQRT(MAX(blocks) / SUM(blocks)) * (100 / SQRT(SQRT(COUNT(blocks)))) AS FSFI FROM ...

    Sql Server 数据库索引整理语句,自动整理数据库索引

    在描述中提到的脚本是一个自动化维护索引的T-SQL语句,其目的是检查和优化那些碎片化程度超过10%的索引。首先,脚本设置了变量,如`@objectid`, `@indexid`, `@partitioncount`等,用于存储索引的相关信息。接着,它...

    算机运行命令全集---搜索了比较全的计算机命令全集

    - **功能介绍**:`winchat` 是 Windows XP 自带的一个聊天应用程序,允许用户通过局域网进行聊天。 - **应用场景**:主要用于局域网内的即时通讯。 #### Mem.exe - **功能介绍**:`mem.exe` 显示内存使用情况,包括...

    计算机Dos指令基础教程

    14. **mmc**: Microsoft Management Console,提供一个框架来集成和管理各种系统管理工具。 15. **mobsync**: 同步命令,通常用于同步文件或设备之间的数据。 16. **dxdiag**: 检查DirectX相关信息,如显卡和声卡...

    elasticsearch 第一篇(入门篇)1

    索引的名称只能包含小写字母,且在一个集群中可以有任意多个索引。类型(Type)则类似于数据库中的表,可以在索引中定义多个类型,通常一个 Type 包含了相同属性的数据集合。 文档(Document)是数据的基本存储单元...

    电脑常用命令.docx

    Wscript命令:Windows脚本宿主设置,用于运行脚本文件。 Write命令:写字板,用于快速编辑文本文件。 Winmsd命令:系统信息,用于查看计算机的硬件和软件信息。 Wiaacmgr命令:扫描仪和照相机向导,用于设置和...

    计算机运行命令全集).pdf

    `wscript`则涉及脚本执行,用户可以通过它配置和运行Windows脚本主机,实现自动化任务。 `write`是Windows内置的简单文本编辑器,而`winmsd`用来显示系统详细信息,包括硬件配置、性能指标等。`wiaacmgr`是扫描仪和...

    计算机运行命令

    该命令用于打开当前用户的临时文件夹,这是一个存储应用程序运行时创建的临时文件的地方。通过这个命令,用户可以清理不再需要的临时文件,释放磁盘空间。 ### 2. access.cpl 此命令打开辅助功能选项,允许用户调整...

    SQL-Server-Fill-Factor-Determination:为 SQL Server 数据库中的每个索引确定和分配填充因子的过程

    填充因子自述文件 在这个文件夹中有两个 TSQL 脚本。 FillFactorIndexSetup.sql... 第 1 部分附带的脚本中有一个拼写错误,并且已经按照上述方式进行了演变。 在这个文件夹中还有我在 5 月 13 日所做的 GroupBy PowerP

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    如何计算数据块中某个字段的位置优化小技巧 如何计算索引块中某个字段的位置优化小技巧 自己动手写一个dul优化小技巧 bootstrap$的访问优化小技巧 unloadBlock函数优化小技巧 unloadRow函数5月29日 突破困局优化小...

Global site tag (gtag.js) - Google Analytics