DECLARE
v_cursor number;
CURSOR tbl_cur IS
SELECT distinct(table_name) table_name FROM ALL_TAB_COLUMNS
WHERE owner='UBC' AND last_analyzed IS null AND Table_name NOT IN
( SELECT view_name FROM all_views WHERE owner='UBC')
BEGIN
FOR tbl_row IN tbl_cur LOOP
BEGIN
DBMS_DDL.ANALYZE_OBJECT('TABLE','UBC',tbl_row.table_name,'COMPUTE',null,null);
DBMS_OUTPUT.PUT_LINE(tbl_row.table_name);
exception when others then
DBMS_OUTPUT.PUT_LINE('ups..except on '||tbl_row.table_name);
END;
END LOOP;
END;
Просто запрос, который возвращает неанализированные таблицы:
SELECT owner,table_name
FROM all_tables
WHERE owner<>'SYS' AND owner<>'SYSTEM' AND owner<>'TOAD' AND num_rows IS null
ORDER BY owner,table_name