天天看點

[20130502]dbms_stats預設參數.txt

[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在統計收集上更加靈活。