oracle 存储过程批量重建索引

oracle 存储过程批量重建索引

ID:39466808

大小:34.50 KB

页数:5页

时间:2019-07-04

oracle 存储过程批量重建索引_第1页
oracle 存储过程批量重建索引_第2页
oracle 存储过程批量重建索引_第3页
oracle 存储过程批量重建索引_第4页
oracle 存储过程批量重建索引_第5页
资源描述:

《oracle 存储过程批量重建索引》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、create or replace procedure p_rebuild_all_index   (tablespace_name in varchar2)as   sqlt varchar(200);begin    for idx in (select index_name, tablespace_name, status from user_indexes where tablespace_name=tablespace_name and status='VALID' and tempora

2、ry = 'N') loop    begin           sqlt := 'alter index ' 

3、

4、 idx.index_name 

5、

6、 ' rebuild ';           dbms_output.put_line(idx.index_name);           dbms_output.put_line(sqlt);           EXECUTE IMMEDIATE sqlt;           --错误后循环继续执行。           EXCEPTIO

7、N           WHEN OTHERS THEN                dbms_output.put_line(SQLERRM);     end;                   end loop;end;declare    --表空间名称  tablespace_name varchar2(100);begin  tablespace_name:='dddd';  p_rebuild_all_index(tablespace_name);end;方法2:定期重建索引(or

8、acle)文章来源:本站原创更新时间:2009-9-2313:47:38 公司的所用的oracle数据库,因为数据增、删比较频繁,导致索引产生碎片,性能下降,并占用空间不能有效释放。由于目前暂时找不到合适的DBA对数据库进行优化,于是写了一个简单的脚本来定期重建所有的索引。本文提到的脚本创建一张表用来记录索引重建的日志,建立一个存储过程,并建立一个job来每7天调用一次该存储过程。 声明:因为我不是DBA,个人感觉这个的方法不正规(不是bestpractice),仅供没有更好办法的时候参考。 ---

9、-------------------------------------- --因为系统中很对表的数据变化比较频繁,导致索引空间膨胀,系统性能下降--因此需要定期重建系统中的索引,以优化性能,回收空间--这项维护性工作通过Oracle的job进行调度 --建立一张表,存放索引重建日志CREATETABLEtmMTNLog(      fLogDatechar(19),      fLogMsg varchar2(4000)); --首先创建一个存储过程,该存储过程重建所有的索引CREATEORRE

10、PLACEproceduremtn_rebuild_all_idxas cursorindexCursorisselect*fromuser_indexeswheretable_owner='XXXXX'andindex_type='NORMAL';--请将XXXXX替换为oracle用户名 indexRowindexCursor%ROWTYPE;sqlTextvarchar2(1024); begin     openindexCursor;    loop       fetchindexCur

11、sorintoindexRow;       exitwhenindexCursor%NOTFOUND;       sqlText:='alterindex'

12、

13、indexRow.index_name

14、

15、'rebuild';      BEGIN           executeimmediate(sqlText);          insertintotmMTNLog(fLogDate,fLogMsg)values(sysdate,'rebuildindexsuccess:'

16、

17、indexR

18、ow.index_name);          EXCEPTION             WHENOTHERSTHEN             insertintotmMTNLog(fLogDate,fLogMsg)values(sysdate,'rebuildindexfail:'

19、

20、indexRow.index_name);      END;    endloop; end;/ --然后建立一个Oracle任务,这个任务每隔七天调度一次mtn_rebuild

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。