Oracle 統計信息介紹


 
統計信息自動執行需要以下條件滿足:
  1. dba_autotask_task 字段status值 ENABLED
  2. dba_autotask_client 字段status值 ENABLED
  3. dba_autotask_window_clients 字段AUTOTASK_STATUS值 ENABLED OPTIMIZER_STATS值 ENABLED WINDOW_ACTIVE值 FALSE
  4. dba_scheduler_windows 字段ENABLED值TRUE 字段ACTIVE值FALSE 字段DURATION值大於10分鍾
  5. dba_scheduler_jobs 字段ENABLED值 TRUE
總結一下統計信息自動收集任務運行的步驟:
首先是dba_autotask_task-->dba_autotask_client建立自動執行任務
再根據時間窗口及資源組建立自動執行作業
dba_autotask_client-->dba_scheduler_window_groups-->dba_scheduler_windows-->dba_scheduler_jobs
dba_autotask_client-->dba_scheduler_job_classes
 
1、統計信息執行總任務查看視圖dba_autotask_task

2、統計信息調用總過程查看視圖dba_scheduler_programs

3、統計信息執行狀態dba_autotask_client,可以通過如下進行修改,執行 DBMS_AUTO_TASK_ADMIN包,會更新dba_autotask_client的status字段和dba_autotask_window_clients的OPTIMIZER_STATS,SEGMENT_ADVISOR,SQL_TUNE_ADVISOR字段。

 1 BEGIN
 2   DBMS_AUTO_TASK_ADMIN.enable(client_name => 'auto optimizer stats collection',
 3                               operation   => NULL,
 4                               window_name => 'MONDAY_WINDOW');
 5 END;
 6  
 7 BEGIN
 8   DBMS_AUTO_TASK_ADMIN.disable(client_name => 'auto optimizer stats collection',
 9                                operation   => NULL,
10                                window_name => NULL);
11 END;

4、如果執行DBMS_AUTO_TASK_ADMIN包不加參數,則更改dba_autotask_window_clients的AUTOTASK_STATUS字段

1 BEGIN
2   DBMS_AUTO_TASK_ADMIN.enable();
3 END;
4 BEGIN
5   DBMS_AUTO_TASK_ADMIN.disable();
6 END;

5、視圖dba_scheduler_windows是統計信息執行的各種細節屬性如(執行時間,執行時長等),可以通過如下進行設置

 1 --設置開始時間
 2 BEGIN
 3   DBMS_SCHEDULER.SET_ATTRIBUTE(name      => '"SYS"."WEDNESDAY_WINDOW"',
 4                                attribute => 'REPEAT_INTERVAL',
 5                                value     => 'freq=daily;byday=WED;byhour=07;byminute=46;bysecond=0');
 6 END;
 7 --設置執行時長,如果設置值小於10分鍾,統計信息貌似不能搜集
 8 BEGIN
 9   DBMS_SCHEDULER.SET_ATTRIBUTE(name      => '"SYS"."WEDNESDAY_WINDOW"',
10                                attribute => 'DURATION',
11                                VALUE     => '+000 00:20:00');
12 END;
13 --禁用窗口,禁用后dba_autotask_window_clients視圖相關信息消失
14 BEGIN
15   dbms_scheduler.disable(name => 'WEDNESDAY_WINDOW', force => TRUE);
16 END;
17 --啟用窗口
18 BEGIN
19   dbms_scheduler.enable(name => 'WEDNESDAY_WINDOW');
20 END;
21 --停止JOB
22 BEGIN
23   dbms_scheduler.stop_job('ORA$AUTOTASK_CLEAN');
24 END;
25 --手動打開窗口
26 BEGIN
27   dbms_scheduler.open_window('WEDNESDAY_WINDOW');
28 END;
29 --關閉窗口
30 BEGIN
31   dbms_scheduler.close_window('WEDNESDAY_WINDOW');
32 END;

注:在窗口執行的過程中dba_scheduler_windows視圖ACTIVE字段是true狀態,dba_autotask_window_clients視圖WINDOW_ACTIVE字段也只true狀態
 
表統計信息收集標識:
  一個表中被修改的行數超過stale_percent(缺省值10%)時就會認為這個表的統計數據過時了。oracle會監控所有表的DML活動並在SGA中進行記錄。監控的信息會定時的刷新到磁盤且可以通過*_tab_modifications視圖來查看。
  也可以調用dbms_stats.flush_database_monitoring_info過程來手動刷新這些數據.如果想在查詢時得到最新信息(在所有統計數據收集之前內部監控數據會被刷新).可以通過查詢user_tab_statistics視圖中的stale_stats列來查看哪個表的統計數據過時了。 表的stale_stats被設置為NO,統計數據是最新的.表的stale_stats被設置為YES,統計數據是過時的.表的stale_stats沒有被設置說明丟失統計數據.

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM