Nie pakiet DBMS_STATS
może zrobić co najwyżej jeden schemat naraz.
Można użyć skryptu poniżej w celu zebrania statystyk dla wszystkich typów obiektów we wszystkich schematów. Ten, którego liście ma kilka problemów (niepotrzebne wykonać natychmiastową, `A.owner” jest ciągiem znaków, ale powinna ona być przedmiotem, etc).
Możesz dodawać dodatkowe schematy, aby pominąć listę IN
, ponieważ prawdopodobnie nie chcesz tego robić w przypadku wbudowanych schematów (w większości przypadków są statyczne, więc mogą być niepotrzebne). Ponadto, musisz mieć odpowiednie uprawnienia dla każdego schematu jesteś zbieranie statystyk na (lub zalogować się jako DBA).
Zbieranie statystyk na wszystkich obiektach (prawdopodobnie to, czego naprawdę chcesz):
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;
Zbieranie statystyk na zaledwie tabelach:
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 właściciel od SYS.all_tables –