当前位置:Gxlcms > 数据库问题 > Oracle 统计信息介绍

Oracle 统计信息介绍

时间:2021-07-01 10:21:17 帮助过:10人阅读

  • dba_autotask_client 字段status值ENABLED
  • dba_autotask_window_clients 字段AUTOTASK_STATUS值ENABLED OPTIMIZER_STATS值ENABLED WINDOW_ACTIVE值FALSE
  • dba_scheduler_windows 字段ENABLED值TRUE 字段ACTIVE值FALSE 字段DURATION值大于10分钟
  • 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没有被设置说明丢失统计数据.

     

     

     

    Oracle 统计信息介绍

    标签:ati   启用   groups   统计   bms   作业   percent   最新   ups   

    人气教程排行