以下是一个简单的Oracle编译无效对象的脚本:

DECLARE
   CURSOR c1 IS
      SELECT owner, object_name, object_type
      FROM all_objects
      WHERE status = 'INVALID'
      ORDER BY owner, object_type, object_name;

   v_owner all_objects.owner%TYPE;
   v_object_name all_objects.object_name%TYPE;
   v_object_type all_objects.object_type%TYPE;
BEGIN
   FOR r1 IN c1 LOOP
      v_owner := r1.owner;
      v_object_name := r1.object_name;
      v_object_type := r1.object_type;

      BEGIN
         EXECUTE IMMEDIATE 'ALTER ' || v_object_type || ' "' || v_owner || '"."' || v_object_name || '" COMPILE';
         DBMS_OUTPUT.PUT_LINE('Compiled ' || v_object_type || ' "' || v_owner || '"."' || v_object_name || '"');
      EXCEPTION
         WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('Error compiling ' || v_object_type || ' "' || v_owner || '"."' || v_object_name || '": ' || SQLERRM);
      END;
   END LOOP;
END;
/

这个脚本使用一个游标来获取所有状态为“INVALID”的对象。然后使用动态SQL来编译每个对象。如果编译成功,则输出一条消息。如果编译失败,则输出错误消息。

oracle编译无效对象脚本

原文地址: http://www.cveoy.top/t/topic/nKz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录