否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