`
其实不坏
  • 浏览: 52282 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

菜鸟oracle6--oracle 重建索引

 
阅读更多
转自:http://database.51cto.com/art/201011/233500.htm  谢谢

Oracle重建索引操作大家经常会用到,下面就为您详细介绍Oracle重建索引方面的知识,供您参考,如果您对此方面感兴趣的话,不妨一看。

如果你管理的Oracle数据库下某些应用项目有大量的修改删除操作, 数据索引是需要周期性的重建的.

它不仅可以提高查询性能, 还能增加索引表空间空闲空间大小. 在ORACLE里大量删除记录后, 表和索引里占用的数据块空间并没有释放. Oracle重建索引可以释放已删除记录索引占用的数据块空间. 转移数据, 重命名的方法可以重新组织表里的数据.

下面是可以按ORACLE用户名生成Oracle重建索引的SQL脚本:

SET ECHO OFF;  

SET FEEDBACK OFF;  

SET VERIFY OFF;  

SET PAGESIZE 0;  

SET TERMOUT ON;  

SET HEADING OFF;  

ACCEPT username CHAR PROMPT 'Enter the index username: ';  

spool /oracle/rebuild_&username.sql;  

SELECT  

'REM +-----------------------------------------------+' || chr(10) ||  

'REM | INDEX NAME : ' || owner || '.' || segment_name  

|| lpad('|', 33 - (length(owner) + length(segment_name)) )  

|| chr(10) ||  

'REM | BYTES : ' || bytes  

|| lpad ('|', 34-(length(bytes)) ) || chr(10) ||  

'REM | EXTENTS : ' || extents  

|| lpad ('|', 34-(length(extents)) ) || chr(10) ||  

'REM +-----------------------------------------------+' || chr(10) ||  

'ALTER INDEX ' || owner || '.' || segment_name || chr(10) ||  

'REBUILD ' || chr(10) ||  

'TABLESPACE ' || tablespace_name || chr(10) ||  

'STORAGE ( ' || chr(10) ||  

' INITIAL ' || initial_extent || chr(10) ||  

' NEXT ' || next_extent || chr(10) ||  

' MINEXTENTS ' || min_extents || chr(10) ||  

' MAXEXTENTS ' || max_extents || chr(10) ||  

' PCTINCREASE ' || pct_increase || chr(10) ||  

');' || chr(10) || chr(10)  

FROM dba_segments  

WHERE segment_type = 'INDEX'  

AND owner='&username'  

ORDER BY owner, bytes DESC;  

spool off;  
如果你用的是WINDOWS系统, 想改变输出文件的存放目录, 修改spool后面的路径成:

spool c:\oracle\rebuild_&username.sql;

如果你只想对大于max_bytes的索引重建索引, 可以修改上面的SQL语句:

在AND owner='&username' 后面加个限制条件 AND bytes> &max_bytes

如果你想修改索引的存储参数, 在Oracle重建索引rebuild_&username.sql里改也可以. 比如把pctincrease不等于零的值改成是零. 生成的rebuild_&username.sql文件我们需要来分析一下, 它们是否到了需要重建的程度:

分析索引,看是否碎片严重

SQL>ANALYZE INDEX &index_name VALIDATE STRUCTURE;  

col name heading 'Index Name' format a30  

col del_lf_rows heading 'Deleted|Leaf Rows' format 99999999  

col lf_rows_used heading 'Used|Leaf Rows' format 99999999  

col ratio heading '% Deleted|Leaf Rows' format 999.99999  

SELECT name,  

del_lf_rows,  

lf_rows - del_lf_rows lf_rows_used,  

to_char(del_lf_rows / (lf_rows)*100,'999.99999') ratio  

FROM index_stats where name = upper('&index_name');  
当删除的比率大于15 - 20% 时,肯定是需要索引重建的. 经过删改后的rebuild_&username.sql文件我们可以放到ORACLE的定时作业里:

比如一个月或者两个月在非繁忙时间运行. 如果遇到ORA-00054错误, 表示索引在的表上有锁信息, 不能重建索引. 那就忽略这个错误, 看下次是否成功. 对那些特别忙的表要区别对待, 不能用这里介绍的方法, 还要把它们的索引从rebuild_&username.sql里删去。
分享到:
评论

相关推荐

    小菜鸟系列-Oralce的索引

    在“小菜鸟系列-Oracle的索引”中,我们将深入探讨Oracle数据库中的索引原理、类型以及如何有效地利用它们优化查询性能。 首先,索引是一种特殊的数据结构,它为数据库表中的数据提供快速访问路径。就像书的目录...

    小菜鸟系列-Oracle的优化器与hint

    在“小菜鸟系列-Oracle的优化器与hint”这个主题中,我们将深入探讨Oracle数据库的查询优化器以及如何通过使用hint来引导优化器进行更高效的执行计划选择。 Oracle的优化器是数据库引擎的核心组件,它负责分析SQL...

    最牛逼的Oracle DBA基础笔记 菜鸟必备

    这份“最牛逼的Oracle DBA基础笔记”显然是为初学者准备的,旨在帮助菜鸟快速掌握Oracle数据库管理的基础知识。Oracle数据库是全球广泛使用的大型企业级数据库管理系统,尤其在金融、电信、医疗等行业有着广泛应用。...

    oracle索引

    oracle 索引学习,包括如何创建索引,如何利用索引来优化数据库,使数据库更加快. 是菜鸟学习的好书

    Oracle 11g从入门到熟练再到精通,适合自学版

    这个“Oracle 11g从入门到熟练再到精通”教程是为初学者设计的,旨在帮助菜鸟级别的学习者掌握Oracle数据库的核心概念、管理和操作技能。 一、Oracle 11g基础 1. 数据库概念:理解数据库的基本概念,如数据模型...

    SQL(oracle)教程(PPT版)

    2. **索引**:Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等,以提高查询性能。 3. **分区**:Oracle的分区功能允许大型表被分割成更小、更易管理的部分,提高查询速度和维护效率。 4. **游标**:在...

    张立国oracle数据库教程

    《张立国oracle数据库教程》是一份全面介绍Oracle数据库系统的教育资源,由知名专家张立国精心编撰。这个教程共分为六个章节,旨在帮助初学者和有经验的IT专业人士深入理解Oracle数据库的核心概念和技术。 第一章...

    oracle存储过程超详细使用手册+oracle详细讲解(综合下载).

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的代码模块。这个超详细使用手册和详细讲解将深入探讨存储过程的概念、创建、调用、优化及其在...

    access2oracle

    1. **数据库结构迁移**:该工具能够将Access数据库的表结构,包括字段、索引、关系等完整地迁移到Oracle数据库中。这意味着用户无需手动创建Oracle中的表结构,大大节省了时间和工作量。 2. **数据迁移**:除了结构...

    oracle32位客户端精简版72M

    配合PL/SQL Developer,这是一款强大的Oracle数据库管理和开发工具,用户可以编写、调试、执行PL/SQL代码,管理表、索引、存储过程等数据库对象,以及进行数据导入导出等操作。有了这个精简版的Oracle客户端,用户...

    oracle dba详细教程 精华版

    Oracle DBA(Database Administrator,数据库管理员)是负责管理和维护Oracle数据库系统的专家。Oracle数据库是全球广泛使用的商业级关系型数据库管理系统之一,它提供了强大的数据存储、处理和管理能力。本教程...

    Oracle的全面基础学习资料

    6. **备份与恢复**:数据的安全性至关重要,因此学习Oracle的备份策略和恢复技术至关重要。这包括冷备份、热备份、逻辑备份,以及RMAN(Recovery Manager)的使用。 7. **性能优化**:Oracle提供了许多工具和技巧来...

    Oracle分库分表分区学习日志.docx

    Oracle 表分区的用途是当表中数据量不断增大,查询速度变慢,应用程序的性能下降时,通过分区将表、索引或索引组织表进一步细分为段,减少数据库的负担,缩短查询时间。 二、数据库分库分表思路 数据库分库分表是...

    oracle笔记.zip

    可能涉及数据库备份与恢复策略,Oracle提供的RMAN( Recovery Manager)工具,或者如何进行数据库性能优化,如分析和调整SQL查询,使用索引,以及管理表空间和数据段。还可能讨论到数据库安全性,如用户权限管理,...

    Oracle数据库从入门到实用教程详解

    本课程中重点讲解了关于oracle数据库的相关知识,包含但不限于,Oracle的基本概念,Oracle数据库的创建以及维护,oracle数据库表的创建以及维护,查询和视图详解,索引和权限详解,以及备份和还原,plsql的基础语法...

    Oracle数据库的相关知识点.rtf

    >-: Oracle 的数据类型 >二:SQL语言 >三: SQL操作符 >四:SQL函数 >五.表空间 >六:用户管理 >七.管理用户权限 >八:序列 >九:同义词 >十:索引 >十一:分区 十二:伪例 >十三: PL/SQL基础知识

    Oracle9i的全文检索技术开发者网络Oracle

    高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 >> 摘要 全文检索技术是智能信息管理的关键技术之一,Oracle Text作为Oracle9i的一个组件,提供了...

    从Java菜鸟到专家的资料

    9. **Oracle optimizer.chm**:可能涉及Oracle数据库的优化,包括查询优化、索引策略、SQL调优等方面,对于数据库开发者和DBA尤其有用。 10. **JAVA编码规范.chm**:遵循编码规范是保证代码可读性和团队协作的基础...

    Oracle数据库及应用程序优化开发者网络Oracle

    高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 摘 要:本文对ORACLE数据库及ORACLE应用程序的优化,进行了全面的分析与研究,并提出了自己的一些...

    菜鸟教程 sql教程

    11. 索引:索引用于加快数据检索速度,可以通过CREATE INDEX语句创建,也有INDEX和UNIQUE INDEX的区别。 12. 外键和关联:外键用于建立表之间的关联,实现数据的一致性和完整性。 13. JOIN操作:SQL提供了多种JOIN...

Global site tag (gtag.js) - Google Analytics