Oracleは統計を導入しました

 
統計が自動的に実行し、以下の条件が満たされている必要があります。
  1. dba_autotask_task字段状態值 ENABLED
  2. DBA_AUTOTASK_CLIENTステータスフィールドの値は 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. ENABLED DBA_SCHEDULER_JOBSフィールド値 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
 
一般的なタスクビュービューdba_autotask_taskの実装上の1、統計

2、全プロセスビューのコール統計はdba_scheduler_programsを見ます

3、実行状態DBA_AUTOTASK_CLIENT統計は、DBMS_AUTO_TASK_ADMINパケットを行うことによって修飾することができる、OPTIMIZER_STATS、SEGMENT_ADVISORのステータスフィールドとdba_autotask_window_clients DBA_AUTOTASK_CLIENT、SQL_TUNE_ADVISORフィールドを更新します。

1  BEGIN 
2    DBMS_AUTO_TASK_ADMIN.enable(CLIENT_NAME =>  ' 自動オプティマイザは統計コレクション' 3                                操作    =>  NULL 4                                window_nameが=>  ' MONDAY_WINDOWを' );
5  END ;
6   
7  BEGIN 
8    DBMS_AUTO_TASK_ADMIN.disable(CLIENT_NAME =>  ' 自動オプティマイザは統計コレクション' 9                                 操作    =>  NULLを10                                 window_nameが=>  NULL );
11  END

4.パラメータなしでDBMS_AUTO_TASK_ADMINパッケージを行う場合は、AUTOTASK_STATUSのdba_autotask_window_clientsフィールドを変更

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没有被设置说明丢失统计数据.

 

 

 

おすすめ

転載: www.cnblogs.com/bicewow/p/11263378.html