oracle编译无效对象脚本
以下是一个简单的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来编译每个对象。如果编译成功,则输出一条消息。如果编译失败,则输出错误消息。
原文地址: http://www.cveoy.top/t/topic/nKz 著作权归作者所有。请勿转载和采集!