Oracle 11g自動收集統計資訊

2021-10-01 10:28:44 字數 2041 閱讀 1217

dba_tab_modifications檢視(基表為sys.mon_mods_all$)記錄了從上次收集統計資訊以來表中dml操作變化的資料量,包括執行insert、update和delete影響的行數,以及是否執行過truncate操作。另外,dbms_stats.flush_database_monitoring_info可以將記憶體中的資料快速重新整理到資料字典sys.mon_mods_all$中。

在oracle 10g中,如果表中變更的行數(字典表sys.mon_mods_all$中記錄的insert++delete的總數)超過表的總行數(sys.tab$中記錄的目標表總記錄數)的10%時或自上次自動統計資訊收集作業完成之後目標表被執行過truncate操作,那麼該錶的統計資訊就變為陳舊狀態,oracle就會在指定時間段自動收集統計資訊。

在oracle 10g中,這個10%(stale_percent)是無法修改的,如果表非常大,那麼10%其實是非常多的資料,這就造成統計資訊不準確。在oracle 11g中,這個10%(stale_percent)是可以修改的,分為全域性(dbms_stats.set_global_prefs)、資料庫級別(dbms_stats.set_database_prefs)、使用者級別(dbms_stats.set_schema_prefs)和表級別(dbms_stats.set_table_prefs)。其中,資料庫級別和使用者級別都是呼叫表級別的儲存過程dbms_stats.set_table_prefs來對錶進行設定的。

表級別的設定如下所示:

修改為5%(範圍從1-100):exec dbms_stats.set_table_prefs(user,'table_name','stale_percent',5);

恢復為10%:    exec dbms_stats.set_table_prefs(user,'table_name','stale_percent',null);

查詢表百分比:select dbms_stats.get_prefs('stale_percent',user,'table_name') from dual;

查詢全域性百分比:select dbms_stats.get_prefs('stale_percent') from dual;

select dbms_stats.get_prefs('method_opt'),--統計量收集

dbms_stats.get_prefs('concurrent'),--併發

dbms_stats.get_prefs('granularity'),----粒度

dbms_stats.get_prefs('incremental')---分割槽表只資料變動分割槽

from dual;

--查詢統計資訊的收集所對應的task

select t.*

from dba_autotask_task t

where t.client_name = 'auto optimizer stats collection';

--查詢統計資訊的收集所對應的排程程式

select t.*

from dba_scheduler_programs t

where t.program_name = 'gather_stats_prog';

select *

from dba_autotask_client a

where a.client_name = 'auto optimizer stats collection';

--查詢task的視窗

select t.* from dba_autotask_window_clients t;

select t.* from dba_scheduler_windows t where enabled = 'true';

--查詢定時任務執行

select *

from dba_scheduler_job_run_details t

where t.job_name like 'ora$at_os_opt_%'

order by t.log_date desc;

參考:

Linux配置Oracle 11g自動啟動

安裝完畢oracle 11g每次都得手動啟動 停止資料庫 dbstart dbshut lsnrctl 控制台 emtcl oracle localhost vi dbstart 找到下面的 段 first argument is used to bring up oracle net listen...

解除安裝oracle 11g

估計和以前的版本一樣,先刪除物理檔案,然後再刪除登錄檔的檔案。大致方法如下 1 刪除物理檔案 1 oracle安裝檔案。2 系統目錄下,program files檔案下的oracle檔案 2 登錄檔中大概有這麼幾個地方 hkey local machine software 刪除oracle目錄 h...

oracle 11G 解除安裝

oracle deinstall deconfig tool start check operation start 安裝檢查配置開始 選擇進行解除安裝的 oracle 主目錄型別為 sidb 檢查主產品清單位置是否存在 c program files oracle inventory 安裝檢查配置...