[20250304]记载19c修改AWR_CDB_SYSSTAT视图定义.txt

  金牌会员 | 2025-3-13 21:21:13 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 956|帖子 956|积分 2868

[20250304]记载19c修改AWR_CDB_SYSSTAT视图定义.txt

--//19c AWR_CDB_SYSSTAT视图定义内里存在sql提示影响相关sql语句执行效率,涉及监控语句有许多条,简单直接视图定义,顺序做1个
--//记载,方便出现题目还原。

1.环境:
SYS@127.0.0.1:9105/xtdb/xtdb1> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 19.0.0.0.0
BANNER                        : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
BANNER_LEGACY                 : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.原始视图定义:
--//直接从toad上抽取,这样操作简单一些,而且toad缺省做了格式化处置处罚。

CREATE OR REPLACE FORCE VIEW SYS.AWR_CDB_SYSSTAT
(SNAP_ID, DBID, INSTANCE_NUMBER, STAT_ID, STAT_NAME,
 VALUE, CON_DBID, CON_ID)
BEQUEATH DEFINER
AS

SELECT /*+ leading(sn s nm) use_hash(sn s) */
      s.snap_id
      ,s.dbid
      ,s.instance_number
      ,s.stat_id
      ,nm.stat_name
      ,VALUE
      ,DECODE (s.con_dbid, 0, s.dbid, s.con_dbid)
      ,con_dbid_to_id (DECODE (s.con_dbid, 0, s.dbid, s.con_dbid)) con_id
  FROM WRM$_SNAPSHOT sn
      ,WRH$_SYSSTAT s
      ,WRH$_STAT_NAME nm
 WHERE     s.stat_id = nm.stat_id
       AND s.dbid = nm.dbid
       AND s.snap_id = sn.snap_id
       AND s.dbid = sn.dbid
       AND s.instance_number = sn.instance_number
       AND sn.status = 0;

COMMENT ON TABLE SYS.AWR_CDB_SYSSTAT IS 'System Historical Statistics Information';

CREATE OR REPLACE PUBLIC SYNONYM AWR_CDB_SYSSTAT FOR SYS.AWR_CDB_SYSSTAT;

GRANT SELECT ON SYS.AWR_CDB_SYSSTAT TO SELECT_CATALOG_ROLE;

3.修改定义:
CREATE OR REPLACE FORCE VIEW SYS.AWR_CDB_SYSSTAT
(SNAP_ID, DBID, INSTANCE_NUMBER, STAT_ID, STAT_NAME,
 VALUE, CON_DBID, CON_ID)
BEQUEATH DEFINER
AS
SELECT /*+ ,leading(sn s nm) use_hash(sn s) */
      s.snap_id
      ,s.dbid
      ,s.instance_number
      ,s.stat_id
      ,nm.stat_name
      ,VALUE
      ,DECODE (s.con_dbid, 0, s.dbid, s.con_dbid)
      ,con_dbid_to_id (DECODE (s.con_dbid, 0, s.dbid, s.con_dbid)) con_id
  FROM WRM$_SNAPSHOT sn
      ,WRH$_SYSSTAT s
      ,WRH$_STAT_NAME nm
 WHERE     s.stat_id = nm.stat_id
       AND s.dbid = nm.dbid
       AND s.snap_id = sn.snap_id
       AND s.dbid = sn.dbid
       AND s.instance_number = sn.instance_number
       AND sn.status = 0;
--//注意提示前加入逗号,相称于提示无效。这样纵然修改归去也很容易.

COMMENT ON TABLE SYS.AWR_CDB_SYSSTAT IS 'System Historical Statistics Information';
--//检查ok。

4.验证相关sql语句执行情况。
--//例子:
VAR dbid NUMBER
VAR inst_num NUMBER
VAR eid NUMBER
VAR bid NUMBER

BEGIN
SELECT dbid, USERENV('instance') INTO :dbid, :inst_num FROM v$database;
SELECT MAX(snap_id) INTO :eid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num;
SELECT MAX(snap_id) INTO :bid FROM dba_hist_snapshot WHERE dbid = :dbid AND instance_number = :inst_num AND snap_id < :eid;
END;
/

SELECT snap_id,instance_number,VALUE, stat_name
  FROM DBA_HIST_SYSSTAT
 WHERE stat_name IN ('physical reads direct (lob)', 'physical reads', 'physical reads direct')
       AND snap_id IN (:bid, :eid)
       AND instance_number = :inst_num
       AND dbid = :dbid;

--//修改前执行计划:
Plan hash value: 4149710619
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name              | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                   |      1 |        |       |    10 (100)|          |       |       |      6 |00:00:00.02 |    3882 |       |       |          |
|   1 |  NESTED LOOPS                                  |                   |      1 |      1 |    89 |    10   (0)| 00:00:01 |       |       |      6 |00:00:00.02 |    3882 |       |       |          |
|   2 |   NESTED LOOPS                                 |                   |      1 |      1 |    89 |    10   (0)| 00:00:01 |       |       |   4072 |00:00:00.02 |    3845 |       |       |          |
|*  3 |    HASH JOIN                                   |                   |      1 |      1 |    43 |     8   (0)| 00:00:01 |       |       |   4072 |00:00:00.01 |    3724 |  3289K|  3289K| 2207K (0)|
|   4 |     INLIST ITERATOR                            |                   |      1 |        |       |            |          |       |       |      2 |00:00:00.01 |       6 |       |       |          |
|*  5 |      TABLE ACCESS BY INDEX ROWID               | WRM$_SNAPSHOT     |      2 |      1 |    18 |     3   (0)| 00:00:01 |       |       |      2 |00:00:00.01 |       6 |       |       |          |
|*  6 |       INDEX UNIQUE SCAN                        | WRM$_SNAPSHOT_PK  |      2 |      1 |       |     2   (0)| 00:00:01 |       |       |      2 |00:00:00.01 |       4 |  1025K|  1025K|          |
|   7 |     INLIST ITERATOR                            |                   |      1 |        |       |            |          |       |       |   4072 |00:00:00.01 |    3718 |       |       |          |
|   8 |      PARTITION RANGE ITERATOR                  |                   |      2 |      1 |    25 |     5   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.01 |    3718 |       |       |          |
|   9 |       TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| WRH$_SYSSTAT      |      2 |      1 |    25 |     5   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.01 |    3718 |       |       |          |
|* 10 |        INDEX RANGE SCAN                        | WRH$_SYSSTAT_PK   |      2 |      1 |       |     4   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.01 |      35 |  1025K|  1025K|          |
|* 11 |    INDEX RANGE SCAN                            | WRH$_STAT_NAME_PK |   4072 |      1 |       |     1   (0)| 00:00:01 |       |       |   4072 |00:00:00.01 |     121 |  1025K|  1025K|          |
|* 12 |   TABLE ACCESS BY INDEX ROWID                  | WRH$_STAT_NAME    |   4072 |      1 |    46 |     2   (0)| 00:00:01 |       |       |      6 |00:00:00.01 |      37 |       |       |          |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--//修改后执行计划:
Plan hash value: 1091456696
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name              | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop | A-Rows |   A-Time   | Buffers |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                   |      1 |        |       |     7 (100)|          |       |       |      6 |00:00:00.06 |    7958 |
|   1 |  NESTED LOOPS                                  |                   |      1 |      1 |    89 |     7   (0)| 00:00:01 |       |       |      6 |00:00:00.06 |    7958 |
|   2 |   NESTED LOOPS                                 |                   |      1 |      1 |    89 |     7   (0)| 00:00:01 |       |       |   4072 |00:00:00.05 |    7921 |
|   3 |    NESTED LOOPS                                |                   |      1 |      1 |    43 |     5   (0)| 00:00:01 |       |       |   4072 |00:00:00.04 |    7800 |
|   4 |     INLIST ITERATOR                            |                   |      1 |        |       |            |          |       |       |   4072 |00:00:00.02 |    3718 |
|   5 |      PARTITION RANGE ITERATOR                  |                   |      2 |      1 |    25 |     5   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.02 |    3718 |
|   6 |       TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| WRH$_SYSSTAT      |      2 |      1 |    25 |     5   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.01 |    3718 |
|*  7 |        INDEX RANGE SCAN                        | WRH$_SYSSTAT_PK   |      2 |      1 |       |     4   (0)| 00:00:01 |KEY(I) |KEY(I) |   4072 |00:00:00.01 |      35 |
|*  8 |     TABLE ACCESS BY INDEX ROWID                | WRM$_SNAPSHOT     |   4072 |      1 |    18 |     0   (0)|          |       |       |   4072 |00:00:00.02 |    4082 |
|*  9 |      INDEX UNIQUE SCAN                         | WRM$_SNAPSHOT_PK  |   4072 |      1 |       |     0   (0)|          |       |       |   4072 |00:00:00.01 |      10 |
|* 10 |    INDEX RANGE SCAN                            | WRH$_STAT_NAME_PK |   4072 |      1 |       |     1   (0)| 00:00:01 |       |       |   4072 |00:00:00.01 |     121 |
|* 11 |   TABLE ACCESS BY INDEX ROWID                  | WRH$_STAT_NAME    |   4072 |      1 |    46 |     2   (0)| 00:00:01 |       |       |      6 |00:00:00.01 |      37 |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--//逻辑读反而更高,重新分析3个表后:

Plan hash value: 317164640
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name             | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                  |      1 |        |       |    30 (100)|          |       |       |      6 |00:00:00.01 |      57 |       |       |          |
|*  1 |  HASH JOIN                          |                  |      1 |      7 |   616 |    30   (0)| 00:00:01 |       |       |      6 |00:00:00.01 |      57 |  2300K|  2300K| 1759K (0)|
|   2 |   NESTED LOOPS                      |                  |      1 |      7 |   497 |    26   (0)| 00:00:01 |       |       |      6 |00:00:00.01 |      51 |       |       |          |
|   3 |    NESTED LOOPS                     |                  |      1 |      7 |   497 |    26   (0)| 00:00:01 |       |       |      6 |00:00:00.01 |      45 |       |       |          |
|*  4 |     TABLE ACCESS STORAGE FULL       | WRH$_STAT_NAME   |      1 |      3 |   138 |    11   (0)| 00:00:01 |       |       |      3 |00:00:00.01 |      37 |  1025K|  1025K|          |
|   5 |     INLIST ITERATOR                 |                  |      3 |        |       |            |          |       |       |      6 |00:00:00.01 |       8 |       |       |          |
|   6 |      PARTITION RANGE ITERATOR       |                  |      6 |      2 |       |     3   (0)| 00:00:01 |KEY(I) |KEY(I) |      6 |00:00:00.01 |       8 |       |       |          |
|*  7 |       INDEX RANGE SCAN              | WRH$_SYSSTAT_PK  |      6 |      2 |       |     3   (0)| 00:00:01 |KEY(I) |KEY(I) |      6 |00:00:00.01 |       8 |  1025K|  1025K|          |
|   8 |    TABLE ACCESS BY LOCAL INDEX ROWID| WRH$_SYSSTAT     |      6 |      2 |    50 |     5   (0)| 00:00:01 |     1 |     1 |      6 |00:00:00.01 |       6 |       |       |          |
|   9 |   INLIST ITERATOR                   |                  |      1 |        |       |            |          |       |       |      2 |00:00:00.01 |       6 |       |       |          |
|* 10 |    TABLE ACCESS BY INDEX ROWID      | WRM$_SNAPSHOT    |      2 |      2 |    34 |     4   (0)| 00:00:01 |       |       |      2 |00:00:00.01 |       6 |       |       |          |
|* 11 |     INDEX UNIQUE SCAN               | WRM$_SNAPSHOT_PK |      2 |      2 |       |     2   (0)| 00:00:01 |       |       |      2 |00:00:00.01 |       4 |  1025K|  1025K|          |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--//这样题目解决.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表