/**过程内容: 判断统计信息是否同步,如不同步,手工收集统计信息作者: Tianlesoftware时间:2011-5-25*/
FOR x IN c1 LOOP
t_tablename := x.TABLE_NAME;
t_num_rows := x.num_rows;
t_sql := 'select count(*) from ' || t_tablename;
Execute immediate t_sql into t_count;
DBMS_OUTPUT.PUT_LINE('t_tablename:--' || t_tablename || '--' ||
' t_num_rows is:t_count :--' || t_num_rows || ': ' ||
t_count);
if abs(t_count - t_num_rows) >= 10000 then
-- 当统计信息中的记录数与表中实际的记录数差距超过10000时,就分析该表
dbms_stats.gather_table_stats('SCOTT', t_tablename);
end if;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND');
RETURN;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('OTHERS');
RETURN;
END;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12961536/viewspace-769518/
,如需转载,请注明出处,否则将追究法律责任。