暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 启用并发统计信息收集

原创 Asher.HU 2021-02-04
1360

要启用并发统计信息收集,请使用以下DBMS_STATS.SET_GLOBAL_PREFS步骤设置CONCURRENT首选项。

可能的值如下:

  • MANUAL   :    并发仅用于手动统计信息收集。
  • AUTOMATIC :    并发仅用于自动统计信息收集。
  • ALL     :   启用了手动和自动统计信息收集的并发。
  • OFF      :    手动和自动统计信息收集均禁用并发。这是默认值

本节中的本教程说明如何启用并发统计信息收集。

先决条件

本教程具有以下先决条件:

  • 除了用于收集统计信息的标准特权外,您还必须具有以下特权:
    • CREATE JOB
    • MANAGE SCHEDULER
    • MANAGE ANY QUEUE
  • SYSAUX表空间必须处于联机状态,因为调度程序将其内部表和视图存储在此表空间中。
  • JOB_QUEUE_PROCESSES初始化参数必须至少设置4
  • 必须启用资源管理器。

    默认情况下,资源管理器处于禁用状态。如果您没有资源计划,请考虑使用系统提供的启用资源管理器DEFAULT_PLAN

假设条件

本教程假定您要执行以下操作:

  • 启用并发统计信息收集
  • 收集sh架构的 统计信息
  • 监控sh统计数据 的收集

要启用并发统计信息收集:

  1. 使用适当的权限将SQL * Plus连接到数据库,然后启用资源管理器。

    以下示例对资源管理器使用默认计划:

    ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'DEFAULT_PLAN';
    
  2. JOB_QUEUE_PROCESSES初始化参数至少设置为CPU内核数量的两倍。

    在Oracle Real Application Clusters中,该JOB_QUEUE_PROCESSES设置适用于每个节点。

    假设系统具有4个CPU内核。以下示例将参数设置为8(内核数的两倍):

    ALTER SYSTEM SET JOB_QUEUE_PROCESSES=8;
    
  3. 确认参数更改生效。

    例如,在SQL * Plus中输入以下命令(包括示例输出):

    SHOW PARAMETER PROCESSES;
    
    NAME                             TYPE        VALUE
    -------------------------------- ----------- -----
    _high_priority_processes         string      VKTM
    aq_tm_processes                  integer     1
    db_writer_processes              integer     1
    gcs_server_processes             integer     0
    global_txn_processes             integer     1
    job_queue_processes              integer     8
    log_archive_max_processes        integer     4
    processes                        integer     100
    
  4. 启用并发统计信息。

    例如,执行以下PL / SQL匿名块:

    BEGIN
      DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','ALL');
    END;
    /
    
  5. 确认已启用统计信息。

    例如,执行以下查询(包括示例输出):

    SELECT DBMS_STATS.GET_PREFS('CONCURRENT') FROM DUAL;
    
    DBMS_STATS.GET_PREFS('CONCURRENT')
    ----------------------------------
    ALL
    
  6. 收集SH架构的统计信息

    例如,执行以下过程:

    EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SH');
    
  7. 在单独的会话中,通过查询监视作业进度DBA_OPTSTAT_OPERATION_TASKS

    例如,执行以下查询(包括示例输出):

    SET LINESIZE 1000
     
    COLUMN TARGET FORMAT a8
    COLUMN TARGET_TYPE FORMAT a25
    COLUMN JOB_NAME FORMAT a14
    COLUMN START_TIME FORMAT a40
     
    SELECT TARGET, TARGET_TYPE, JOB_NAME, 
           TO_CHAR(START_TIME, 'dd-mon-yyyy hh24:mi:ss')
    FROM   DBA_OPTSTAT_OPERATION_TASKS 
    WHERE  STATUS = 'IN PROGRESS' 
    AND    OPID = (SELECT MAX(ID) 
                   FROM   DBA_OPTSTAT_OPERATIONS 
                   WHERE  OPERATION = 'gather_schema_stats');
    
    TARGET    TARGET_TYPE               JOB_NAME       TO_CHAR(START_TIME,'
    --------- ------------------------- -------------- --------------------
    SH.SALES  TABLE (GLOBAL STATS ONLY) ST$T292_1_B29  30-nov-2012 14:22:47
    SH.SALES  TABLE (COORDINATOR JOB)   ST$SD290_1_B10 30-nov-2012 14:22:08
    
  8. 在原始会话中,禁用并发统计信息收集。

    例如,执行以下查询:

    EXEC DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','OFF');

也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论