[英]How can I write a query that generates a set of ANALYZE INDEX commands for every index owned by a certain user?
如標題所述,在Oracle 10g數據庫中,我想創建一個查詢,該查詢將為特定用戶擁有的每個索引生成一組ANALYZE INDEX命令。 關於數據庫主題,我是一個完全的外行,所以請盡可能保留答案以防偽,謝謝!
在使用Oracle 10g時,您實際上應該使用DBMS_STATS。 那可以簡單地實現為...
begin
for r in ( select index_name from user_indexes )
loop
dbms_stats.gather_index_stats(user, r.index_name);
end loop;
end;
還有其他參數:請查閱文檔 。
如果要為其他用戶的索引生成統計信息,請改用ALL_INDEXES,並限制OWNER。
如果您對ANALYZE感興趣,那么
spool anl_idx.sql
select 'analyze index '||&&owner||'.'||index_name||' compute statistics;'
from all_indexes
where owner = '&&owner';
spool off
您可以。 但是,如果您是數據庫主題方面的外行,我會非常擔心您正在做的事情會為您自己造成各種問題。 因此,我想問一下您要解決的問題。
你可以做類似的事情
DECLARE
p_owner VARCHAR2(30) := 'BOB'; -- Replace BOB with the user name you are interested in
BEGIN
FOR idx IN (SELECT * FROM dba_indexes WHERE owner = p_owner)
LOOP
EXECUTE IMMEDIATE 'ANALYZE INDEX ' || p_owner || '.' || idx.index_name ||
' COMPUTE STATISTICS';
END LOOP;
END;
但我真的想了解您的來歷,然后才建議您實際運行它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.