[20130502]dbms_stats預設參數.txt
今天抽空看了dbms_stats預設參數,我的測試環境是11G。
column cascade format a30
column degree format a10
column estimate_percent format a30
column method_opt format a30
column no_invalidate format a30
column granularity format a10
column publish format a10
column INCREMENTAL format a10
column STALE_PERCENT format a10
column AUTOSTATS_TARGET format a10
11G建立使用dbms_stats.GET_PREFS()代替。
1.修改某個預設參數:
SQL> exec DBMS_STATS.set_param('METHOD_OPT','FOR ALL COLUMNS SIZE REPEAT');
PL/SQL procedure successfully completed.
--注意:11G建議使用 dbms_stats.SET_GLOBAL_PREFS() 代替。
--如果跟蹤就可以發現,這些資訊儲存在SYS.OPTSTAT_HIST_CONTROL$表中。
SQL> column spare2 noprint
SQL> column spare3 noprint
SQL> column spare5 noprint
SQL> column spare6 noprint
SQL> column spare1 format 9999
SQL> column spare4 format a30
SQL> column SNAME format a20
SQL> column SVAL2 format a30
18 rows selected.
--注意SNAME=METHOD_OPT這行,spare1不等于1,估計表示不是預設參數。修改回來:
--注意SNAME=METHOD_OPT這行,spare1不等于1,why?表示改動過嗎?設定預設參數呢?
--注意SNAME=METHOD_OPT這行,spare1等于1。
2.修改某個表的預設參數。11G最大的改進在于它可以改變表各種參數,比如在表的那些字段建立直方圖,設定STALE_PERCENT的百分比等等。
也可以改變一個schema的統計參數。dbms_stats.set_schema_prefs(),dbms_stats.set_table_prefs().
例子如下:
3.再來看看這些資訊儲存哪裡?
--可以發現一緻。要删除exec dbms_stats.delete_table_prefs(user,'EMP','STALE_PERCENT');
4.總結:
可以發現11G在統計收集上更加靈活。