索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难。然而索引在使用的过程中,尤其是在批量的DML的情形下会产生相应的碎片,以及B树高度会发生相应变化,因此可以对这些变化较大的索引进行重构以提高性能。N久以前Oracle建议我们定期重建那些高度为4,已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引。但Oracle现在强烈建议不要定期重建索引。具体可以参考文章:Oracle 重建索引的必要性 http://www.linuxidc.com/Linux/2014-04/100237.htm 。尽管如此重建索引还是有必要的,只是不建议定期。本文给出了重建索引的脚本供大家参考。

相关阅读:

1、重建索引shell脚本

robin@SZDB:~/dba_scripts/custom/bin> more rebuild_unbalanced_indices.sh

# +-------------------------------------------------------+

# +    Rebulid unblanced indices                            |

# +    Author : Leshami                                        |

# +    Parameter : No                                            |

# +    Blog : http://www.linuxidc.com                      |

# +-------------------------------------------------------+

#!/bin/bash

# --------------------

# Define variable

# --------------------

if [ -f ~/.bash_profile ]; then

. ~/.bash_profile

fi

DT=`date +%Y%m%d`;            export DT

RETENTION=1

LOG_DIR=/tmp

LOG=${LOG_DIR}/rebuild_unbalanced_indices_${DT}.log

DBA=Leshami@12306.cn

# ------------------------------------

# Loop all instance in current server

# -------------------------------------

echo "Current date and time is : `/bin/date`">>${LOG}

for db in `ps -ef | grep pmon | grep -v grep |grep -v asm |awk '{print $8}'|cut -c 10-`

do

echo "$db"

export ORACLE_SID=$db

echo "Current DB is $db" >>${LOG}

echo "===============================================">>${LOG}

$ORACLE_HOME/bin/sqlplus -S /nolog @/users/robin/dba_scripts/custom/sql/rebuild_unbalanced_indices.sql>>${LOG}

done;

echo "End of rebuilding index for all instance at : `/bin/date`">>${LOG}

# -------------------------------------

# Check log file

# -------------------------------------

status=`grep "ORA-" ${LOG}`

if [ -z $status ];then

mail -s "Succeeded rebuilding indices on `hostname`  !!!" ${DBA}

else

mail -s "Failed rebuilding indices on `hostname`  !!!" ${DBA}

fi

# ------------------------------------------------

# Removing files older than $RETENTION parameter

# ------------------------------------------------

find ${LOG_DIR} -name "rebuild_unb*" -mtime +$RETENTION -exec rm {} \;

exit

0b1331709591d260c1c78e86d0c51c18.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐