oracle批量编译无效对象

本文介绍如何使用PL/SQL脚本批量重新编译数据库中的无效视图、存储过程、包、触发器和函数对象,提高数据库性能。

批量重新编译无效的视图、存储过程、包、触发器和函数对象。

begin

  dbms_output.put_line('开始:'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));

  for curObj in (select * from USER_OBJECTS where STATUS <> 'VALID' order by Object_Type) loop

    dbms_output.put_line(curObj.Object_Type||':'||curObj.Object_Name);

    begin

      if curObj.Object_Type = 'VIEW' then

        execute immediate 'alter view '     || curObj.Object_Name || ' compile';

      elsif curObj.Object_Type = 'PROCEDURE' then

        execute immediate 'alter procedure '|| curObj.Object_Name || ' compile';

      elsif curObj.Object_Type = 'PACKAGE BODY' then

        execute immediate 'alter package '  || curObj.Object_Name || ' compile';

      elsif curObj.Object_Type = 'TRIGGER' then

        execute immediate 'alter trigger '  || curObj.Object_Name || ' compile';

      elsif curObj.Object_Type = 'FUNCTION' then

        execute immediate 'alter function ' || curObj.Object_Name || ' compile';

      end if;

    exception

      when others then

        dbms_output.put_line(sqlcode||':'||sqlerrm);

    end;

  end loop;

  dbms_output.put_line('结束:'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));

end;

转载于:https://my.oschina.net/h2do/blog/268140

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值