否DBMS_STATS
包可以做一次最多一个架构。
您可以使用下面的脚本来收集所有模式中所有对象类型的统计数据。你列出的那个有几个问题(不必立即执行,`A.owner'是一个字符串,但它应该是一个对象等)。
你可以添加额外的模式来跳过IN
列表,因为你可能不想为内置模式执行此操作(反正它们大多是静态的,所以它会浪费)。此外,您需要为每个正在收集统计数据的模式拥有适当的权限(或以DBA身份登录)。
收集的所有对象(你真的想大概是什么)统计:
BEGIN
FOR rec IN (SELECT *
FROM all_users
WHERE username NOT IN ('SYS','SYSDBA'))
LOOP
dbms_stats.gather_schema_stats(rec.username);
END LOOP;
END;
收集的只是表统计:
BEGIN
FOR rec IN (SELECT *
FROM all_tables
WHERE owner NOT IN ('SYS','SYSDBA'))
LOOP
dbms_stats.gather_table_stats(rec.owner, rec.table_name);
END LOOP;
END;
SELECT DISTINCT所有者FROM SYS.all_tables – 2013-10-12 10:53:17