星期三, 1月 11, 2012

no_invalidate=>FALSE 須在Oracle 10g,11g 分析時指定

no_invalidate=>FALSE 須在Oracle 10g 分析時指定

Ref.
http://space.itpub.net/12020513/viewspace-627031


dbms_stats收集統計資訊時候no_invalidate參數
用於是否與收集相關objectcursor失效,defalut(9i false, 10g dbms_stats.auto_invalidate(null))
true:當收集完統計資訊後,收集物件的cursor不會失效(讓SQL不會產生新的執行計畫,
新的子游標)
false:當收集完統計資訊後,收集物件的cursor會立即失效(讓SQL產生新的執行計畫,新的子游標)

no_invalidate=false, forces all the currently dependent cursors to age out and flushed from the shared pool whether the execution plan is changed or not.

Usage:

execute dbms_stats.gather_table_stats('OWNER','TABLE_NAME',no_invalidate=>FALSE, cascade=>TRUE);

cascade=>TRUE ==> 分析所有與表格相關之索引

如果要針對整個SCHEMA:
#test.sh , Usage :  ./test.sh USERNAME

sqlplus "/ as sysdba" <<EOF
--execute dbms_stats.gather_table_stats('OWNER','TABLE_NAME',no_invalidate=>FALSE , cascade=>TRUE);
set linesize 200
spool analyze_$1.sql
set heading off
select 'execute dbms_stats.gather_table_stats('''||OWNER || ''','''||TABLE_NAME||''',no_invalidate=>FALSE , cascade=>TRUE);' from dba_tables where owner='$1';
spool off
EOF

沒有留言:

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...