索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难。然而索引在使
索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,,找一本书自己想要的书比登天还难。然而索引在使用的过程中,尤其是在批量的dml的情形下会产生相应的碎片,以及b树高度会发生相应变化,因此可以对这些变化较大的索引进行重构以提高性能。n久以前oracle建议我们定期重建那些高度为4,已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引。但oracle现在强烈建议不要定期重建索引。具体可以参考文章:oracle 重建索引的必要性 。尽管如此重建索引还是有必要的,只是不建议定期。本文给出了重建索引的脚本供大家参考。
相关阅读:
由oracle索引来理解arcsde索引
oracle索引技术之如何建立最佳索引
oracle索引列null值引发执行计划该表的测试示例
oracle索引 主键影响查询速度
oracle索引扫描
1、重建索引shell脚本
robin@szdb:~/dba_scripts/custom/bin> more rebuild_unbalanced_indices.sh
# +-------------------------------------------------------+
# + rebulid unblanced indices |
# + author : leshami |
# + parameter : no |
# + blog : |
# +-------------------------------------------------------+
#!/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
更多详情见请继续阅读下一页的精彩内容: