SET SERVEROUT ON FOR WRA SIZE 50000
DECLARE
i1 PLS_INTEGER := 0;
i2 PLS_INTEGER := 0;
CURSOR c IS
SELECT view_name, text, text_length
FROM user_views, user_objects
WHERE object_type = 'VIEW'
AND object_name = view_name
AND status != 'VALID';
BEGIN
/* First loop: just try to recompile */
FOR r IN c
LOOP
BEGIN
EXECUTE IMMEDIATE 'ALTER VIEW ' || r.view_name || ' COMPILE';
i1 := i1 + 1;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( sqlerrm );
DBMS_OUTPUT.PUT_LINE( r.view_name );
i2 := i2 + 1;
END;
END LOOP;
DBMS_OUTPUT.PUT_LINE( 'Compile: ' || TO_CHAR( i1 ) || ' OK; ' ||
TO_CHAR( i2 ) || ' not OK.' );
i1 := 0;
i2 := 0;
/* Second loop: recreate */
FOR r IN c
LOOP
BEGIN
EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW ' || r.view_name || ' AS ' || r.text;
i1 := i1 + 1;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( sqlerrm );
DBMS_OUTPUT.PUT_LINE( r.view_name );
i2 := i2 + 1;
END;
END LOOP;
DBMS_OUTPUT.PUT_LINE( 'Recreate: ' || TO_CHAR( i1 ) || ' OK; ' ||
TO_CHAR( i2 ) || ' not OK.' );
END;
/

 

'IT > Oracle' 카테고리의 다른 글

Character set 변경  (0) 2016.07.08
oracle monitoring  (1) 2012.02.14
Grant 받은 권한을 조회하는 Query  (0) 2012.01.13
awr  (0) 2010.08.20
오라클 홈디렉토리 변경  (0) 2009.07.06

+ Recent posts