[20251107]latch cache buffers chains等待事件.txt

来源:这里教程网 时间:2026-03-03 22:51:55 作者:

[20251107]latch cache buffers chains等待事件.txt --//前一段时间测试oracle目前的版本在读读的情况很少出现latch cache buffers chains情况。 --//我以前的测试基本是单表,拿别人的例子验证看看。 1.环境: SCOTT@book01p> @ ver2 ============================== PORT_STRING                   : x86_64/Linux 2.4.xx VERSION                       : 21.0.0.0.0 BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production CON_ID                        : 0 PL/SQL procedure successfully completed. 2.建立测试环境: --//参考链接:https://www.cnblogs.com/www-htz-pw/p/19014106 create table cbc1 as select * from dba_objects where owner='SYS' and rownum<201; create table cbc2 as select * from dba_objects; --//分析表略。 SCOTT@book01p> set timing on SCOTT@book01p> SELECT /*+ use_nl(a b)*/ COUNT (*) FROM cbc1 a, cbc2 b WHERE a.owner = b.owner; COUNT(*) ---------- 10883400 Elapsed: 00:00:00.65 SCOTT@book01p> @ sl all alter session set statistics_level = all; Session altered. SCOTT@book01p> SELECT /*+ use_nl(a b)*/ COUNT (*) FROM cbc1 a, cbc2 b WHERE a.owner = b.owner;   COUNT(*) ----------   10883400 SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID  418781rd1m5kr, child number 1 ------------------------------------- SELECT /*+ use_nl(a b)*/ COUNT (*) FROM cbc1 a, cbc2 b WHERE a.owner = b.owner Plan hash value: 4079546673 ---------------------------------------------------------------------------------------------------------------------- | Id  | Operation           | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | ---------------------------------------------------------------------------------------------------------------------- |   0 | SELECT STATEMENT    |      |      1 |        |       | 87289 (100)|          |      1 |00:00:04.95 |     315K| |   1 |  SORT AGGREGATE     |      |      1 |      1 |     9 |            |          |      1 |00:00:04.95 |     315K| |   2 |   NESTED LOOPS      |      |      1 |    602K|  5296K| 87289   (1)| 00:00:04 |     10M|00:00:03.91 |     315K| |   3 |    TABLE ACCESS FULL| CBC1 |      1 |    200 |   800 |     4   (0)| 00:00:01 |    200 |00:00:00.01 |       5 | |*  4 |    TABLE ACCESS FULL| CBC2 |    200 |   3013 | 15065 |   436   (1)| 00:00:01 |     10M|00:00:01.80 |     315K| ---------------------------------------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): -------------------------------------------------------------    1 - SEL$1    3 - SEL$1 / "A"@"SEL$1"    4 - SEL$1 / "B"@"SEL$1" Predicate Information (identified by operation id): ---------------------------------------------------    4 - filter("A"."OWNER"="B"."OWNER") Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 2 (U - Unused (1)) ---------------------------------------------------------------------------    3 -  SEL$1 / "A"@"SEL$1"          U -  use_nl(a b)    4 -  SEL$1 / "B"@"SEL$1"            -  use_nl(a b) 39 rows selected. --//看了执行计划,才发现实际上还是单表的情况,cbc1仅仅控制循环次数,看id=4,starts=200次。 --//在打开statistics_level = all测试需要4秒,如果不打开不到1秒完成。 --//建立测试脚本: $ cat loop7.txt set verify off DECLARE    l_count number; BEGIN     FOR i IN 1..&&1     LOOP           SELECT /*+ use_nl(a b)*/ COUNT (*) INTO l_count FROM cbc1 a, cbc2 b WHERE a.owner = b.owner;     END LOOP; END; / --quit 3.测试: --//在测试前猜测应该存在少量cbc,因为上面的2个表涉及许多数据块,无法保证每个cbc链条上不存在写的数据块。 --//发现密集执行还是很慢的(20个并发的情况,循环测试1e4的情况下),在不打开的statistics_level = all的情况下需要接近2秒完成。 SCOTT@book01p> sELECT /*+ use_nl(a b)*/ COUNT (*) FROM cbc1 a, cbc2 b WHERE a.owner = b.owner;   COUNT(*) ----------   10883400 Elapsed: 00:00:01.98 --//感觉虚拟机CPU数量不足... --//这样不能测试时间太长,如果测试6个并发,执行100次。需要6*100*2/60/4 = 5(注:CPU_count=4)。 drop table cbc1 purge ; create table cbc1 as select * from dba_objects where owner='SYS' and rownum<101; --//分析略。 $ zzdate ; seq 6 | xargs -IQ -P 6 sqlplus -s -l scott/book@book01p @loop7.txt 100  > /dev/null ;zzdate trunc(sysdate)+09/24+46/1440+34/86400 -1762479994.191368391 trunc(sysdate)+09/24+47/1440+25/86400 1762480045.920942321 --//Sum = 51.72957393 --//并发没有这么多还是不需要这么多时间完成。 --//51.72957393 /6/100 = .08621595655. SYS@book> @ ashtop sql_id,p1raw,p1,event 1=1 trunc(sysdate)+09/24+46/1440+34/86400 trunc(sysdate)+09/24+47/1440+25/86400     Total                                                                                                                                                 Distinct Distinct    Distinct   Seconds     AAS %This   SQL_ID        P1RAW                     P1 EVENT                                      FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1 --------- ------- ------- ------------- ----------------- ---------- ------------------------------------------ ------------------- ------------------- ---------- -------- -----------       210     4.1   70% | bjw5n8xcqpq8f                        65536                                            2025-11-07 09:46:35 2025-11-07 09:47:24        210       50         210        43      .8   14% | bjw5n8xcqpq8f                   1611704768                                            2025-11-07 09:46:42 2025-11-07 09:47:24         43       43          43        32      .6   11% | bjw5n8xcqpq8f                   1413697536                                            2025-11-07 09:46:35 2025-11-07 09:46:43         32        9          32         7      .1    2% | bjw5n8xcqpq8f                    740869104                                            2025-11-07 09:46:35 2025-11-07 09:46:41          7        7           7         4      .1    1% |                                        100                                            2025-11-07 09:46:34 2025-11-07 09:47:13          1        3           3         1      .0    0% | 3g08183h1fph7                            8                                            2025-11-07 09:46:37 2025-11-07 09:46:37          1        1           1         1      .0    0% |               0000000000000002           2 control file parallel write                2025-11-07 09:46:38 2025-11-07 09:46:38          1        1           1         1      .0    0% |                                          0                                            2025-11-07 09:46:34 2025-11-07 09:46:34          1        1           1 8 rows selected. --//在我的测试环境根本不存在dml操作,ashtop根本没有抓取到latch cache buffers chains等待事件,再次验证现在oracle版本在读 --//读模式下不需要持有cbc latch,或者讲不再存在阻塞,以一种共享的方式持有。 SYS@book> @ sql_id bjw5n8xcqpq8f -- SQL_ID = bjw5n8xcqpq8f come from shared pool SELECT /*+ use_nl(a b)*/ COUNT (*) FROM CBC1 A, CBC2 B WHERE A.OWNER = B.OWNER; --//PL/sql将语句转换为大写。 --//你可能觉得ashtop的输出有点奇怪P1有值,而P1raw没有,实际上tpt的ashtop.sql脚本的执行p1raw的输出有条件: , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p1 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p1hex , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p2 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p2hex , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p3 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p3hex , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p1 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p1raw , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p2 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p2raw , TO_CHAR(CASE WHEN session_state = 'WAITING' THEN p3 ELSE null END, 'fm0XXXXXXXXXXXXXXX') p3raw SYS@book> @ s2h bjw5n8xcqpq8f SQL_ID         HASH_VALUE KGL_BUCKET ------------- ----------- ---------- bjw5n8xcqpq8f  1500174606      55566 --//明显与sql_id=bjw5n8xcqpq8f无关。 SYS@book> @ sharepool/shp4 '' 740869104 HANDLE_TYPE            KGLHDADR         KGLHDPAR         C40                                        KGLHDLMD   KGLHDPMD   KGLHDIVC KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLHDBID   KGLOBT09 ---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- ---------- child handle address   0000000065A9E0A0 00000000659A0660 DECLARE    l_count number; BEGIN     FOR          0          0          0 0000000068A2BF90 00000000681D3E68      16256      16464       3448     36168      36168  740869104 8cqcbynq2jhzh      50160          0 parent handle address  00000000659A0660 00000000659A0660 DECLARE    l_count number; BEGIN     FOR          0          0          0 0000000068A4E980 00                     4064          0          0      4064       4064  740869104 8cqcbynq2jhzh      50160      65535 --//P1=740869104对应匿名PLsql语句。 SYS@book> @ sharepool/shp4 '' 1413697536 no rows selected SYS@book> @ sharepool/shp4 '' 1611704768 no rows selected 4.尝试使用latchprofx.sql看看 --//并发20个用户同时执行。 $ zzdate ; seq 20 | xargs -IQ -P 20 sqlplus -s -l scott/book@book01p @loop7.txt 100  > /dev/null ;zzdate trunc(sysdate)+10/24+11/1440+15/86400 -1762481475.053176431 trunc(sysdate)+10/24+14/1440+06/86400 1762481646.062249438 --//Sum = 171.009073007 --//测试中间执行如下: SCOTT@book01p> sELECT /*+ use_nl(a b)*/ COUNT (*) FROM cbc1 a, cbc2 b WHERE a.owner = b.owner;   COUNT(*) ----------    5441700 Elapsed: 00:00:01.87 --//确实基本需要2秒完成。 SYS@book> @ tpt/latchprofx.sql laddr % cache 10000 -- LatchProfX 2.11 by Tanel Poder ( https://tanelpoder.com ) LADDR                  Held       Gets  Held %     Held ms Avg hold ms ---------------- ---------- ---------- ------- ----------- ----------- 000000007A763D38        506         32    5.06     153.824       4.807 000000007A767AA8        477        103    4.77     145.008       1.408 000000007A77C748        453         53    4.53     137.712       2.598 000000007A780FA8        420         42    4.20     127.680       3.040 000000007A771928        362         78    3.62     110.048       1.411 000000007A770560        360         42    3.60     109.440       2.606 000000007A760E60        348         21    3.48     105.792       5.038 000000007A7660A0        348         22    3.48     105.792       4.809 000000007A760C08        344         44    3.44     104.576       2.377 000000007A768CE0        340         20    3.40     103.360       5.168 000000007A77B020        289         34    2.89      87.856       2.584 000000007A75CF60        239         26    2.39      72.656       2.794 000000007A776C30        237         31    2.37      72.048       2.324 000000007A76D9A8        231         36    2.31      70.224       1.951 000000007A774A18        224         41    2.24      68.096       1.661 000000007A783840        217         31    2.17      65.968       2.128 000000007A770308        210         29    2.10      63.840       2.201 000000007A7778B0        201         35    2.01      61.104       1.746 000000007A7879D8        200         28    2.00      60.800       2.171 000000007A7771A8        197         25    1.97      59.888       2.396 000000007A78A938        196         15    1.96      59.584       3.972 000000007A78D0C8        194         32    1.94      58.976       1.843 000000007A788A40        190         14    1.90      57.760       4.126 000000007A76F3B0        188         12    1.88      57.152       4.763 000000007A7791F0        183         25    1.83      55.632       2.225 000000007A763BA8        182         22    1.82      55.328       2.515 000000007A75EE18        181         23    1.81      55.024       2.392 000000007A7849B0        178         13    1.78      54.112       4.162 000000007A773D58        172         18    1.72      52.288       2.905 000000007A76B000        172         23    1.72      52.288       2.273 000000007A760CD0        170         10    1.70      51.680       5.168 000000007A760B40        169         32    1.69      51.376       1.606 000000007A78D000        169         16    1.69      51.376       3.211 000000007A766400        165         13    1.65      50.160       3.858 000000007A76F928        152         31    1.52      46.208       1.491 000000007A776B68        151         16    1.51      45.904       2.869 000000007A7672D8        143         25    1.43      43.472       1.739 000000007A7676C0        133          9    1.33      40.432       4.492 000000007A7869F8        130         17    1.30      39.520       2.325 000000007A786B88        129         13    1.29      39.216       3.017 40 rows selected. SYS@book> @ ashtop sql_id,p1raw,p1,event,session_state 1=1 trunc(sysdate)+10/24+11/1440+15/86400 trunc(sysdate)+10/24+14/1440+06/86400     Total                                                                                                                                                         Distinct Distinct    Distinct   Seconds     AAS %This   SQL_ID        P1RAW                     P1 EVENT                                      SESSION FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1 --------- ------- ------- ------------- ----------------- ---------- ------------------------------------------ ------- ------------------- ------------------- ---------- -------- -----------      2707    15.8   80% | bjw5n8xcqpq8f                        65536                                            ON CPU  2025-11-07 10:11:19 2025-11-07 10:14:05       1620      166        1620       635     3.7   19% | bjw5n8xcqpq8f                   1413697536                                            ON CPU  2025-11-07 10:11:15 2025-11-07 10:14:00        377      165         377         9      .1    0% | 758j92j7f1yhz                        65536                                            ON CPU  2025-11-07 10:11:29 2025-11-07 10:11:37          1        9           1         9      .1    0% | d7ntu3r83d91t                        65536                                            ON CPU  2025-11-07 10:11:44 2025-11-07 10:12:53          3        9           3         6      .0    0% |                                        100                                            ON CPU  2025-11-07 10:12:03 2025-11-07 10:13:45          1        6           6         4      .0    0% | 758j92j7f1yhz                       131072                                            ON CPU  2025-11-07 10:11:38 2025-11-07 10:11:41          1        4           1         4      .0    0% |               0000000000000002           2 control file parallel write                WAITING 2025-11-07 10:12:30 2025-11-07 10:13:15          1        4           4         3      .0    0% |               0000000000000001           1 log file parallel write                    WAITING 2025-11-07 10:12:34 2025-11-07 10:13:44          1        3           3         2      .0    0% | 3q9xacy69bumn                   1413697536                                            ON CPU  2025-11-07 10:13:50 2025-11-07 10:13:51          1        2           1         1      .0    0% | 0jbnyaz07kjcq                        65536                                            ON CPU  2025-11-07 10:12:15 2025-11-07 10:12:15          1        1           1         1      .0    0% | 1d25xwrbnv4ub                            0                                            ON CPU  2025-11-07 10:12:14 2025-11-07 10:12:14          1        1           1         1      .0    0% | 3cdnf24kj3j68                       524288                                            ON CPU  2025-11-07 10:12:20 2025-11-07 10:12:20          1        1           1         1      .0    0% | 3mk07wzbs6uc3                       524288                                            ON CPU  2025-11-07 10:12:23 2025-11-07 10:12:23          1        1           1         1      .0    0% | 3p7m6kzdrkpp0                       262144                                            ON CPU  2025-11-07 10:12:18 2025-11-07 10:12:18          1        1           1         1      .0    0% | 60vsw0fx68rvn                       524288                                            ON CPU  2025-11-07 10:12:22 2025-11-07 10:12:22          1        1           1         1      .0    0% | 6v6k1dtjz3aq2                       262144                                            ON CPU  2025-11-07 10:12:16 2025-11-07 10:12:16          1        1           1         1      .0    0% | 8tsfarqa5qm5x                        65536                                            ON CPU  2025-11-07 10:12:44 2025-11-07 10:12:44          1        1           1         1      .0    0% | 9wncfacx0nj9h 0000000000000003           3 db file sequential read                    WAITING 2025-11-07 10:13:19 2025-11-07 10:13:19          1        1           1         1      .0    0% | abbh56uvstv2p                       524288                                            ON CPU  2025-11-07 10:12:21 2025-11-07 10:12:21          1        1           1         1      .0    0% | c6j08t1chw12a                       131072                                            ON CPU  2025-11-07 10:12:19 2025-11-07 10:12:19          1        1           1         1      .0    0% | f5x2rxssufdmh                       262144                                            ON CPU  2025-11-07 10:12:17 2025-11-07 10:12:17          1        1           1         1      .0    0% |                                        300                                            ON CPU  2025-11-07 10:12:16 2025-11-07 10:12:16          1        1           1         1      .0    0% |                                 1413697536                                            ON CPU  2025-11-07 10:11:37 2025-11-07 10:11:37          1        1           1 23 rows selected. --//一样看不到latch: cache buffers chains。 --//查询LADDR对应那些对象,注意要在pdb下查询,因为tpt的bhla.sql脚本里面使用dba_objects.查询靠前的2个。 --//laddr=000000007A763D38,000000007A767AA8 SYS@book01p> col state format 99999999 SYS@book01p> @ tpt/bhla 000000007A763D38    OBJ OBJECT_TYPE     object                       CLASS      TCH DBA      STATE MODE_HELD  DQ FLG_LRUFLG ------ --------------- ---------------------------- ---------- --- -------- ----- --------- --- ----------- 168020 TABLE           SCOTT.CBC2                   data block 116 12 1355      1         0   0 80000:8      2 CLUSTER         SYS.C_OBJ#                   data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.ICOL$                    data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.COL$                     data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.TAB$                     data block   2 9 6088       1         0   0 0:4     18 TABLE           SYS.OBJ$                     data block   2 9 23038      1         0   0 80000:8      2 TABLE           SYS.IND$                     data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.CLU$                     data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.TYPE_MISC$               data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.ATTRCOL$                 data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.ASSEMBLY$                data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.LIBRARY$                 data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.LOB$                     data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.COLTYPE$                 data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.SUBCOLTYPE$              data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.NTAB$                    data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.REFCON$                  data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.OPQTYPE$                 data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.ICOLDEP$                 data block   2 9 6088       1         0   0 0:4      2 TABLE           SYS.VIEWTRCOL$               data block   2 9 6088       1         0   0 0:4    438 TABLE           SYS.SMON_SCN_TIME            data block   1 10 52000     1         0   0 80000:8    438 CLUSTER         SYS.SMON_SCN_TO_TIME_AUX     data block   1 10 52000     1         0   0 80000:8 168024 INDEX PARTITION SYS.SYS_IL0000016021C00016$$ data block   1 10 5515      1         0   0 200000:4     64 TABLE           SYS.HISTGRM$                 data block   1 9 35725      1         0   0 0:4     64 CLUSTER         SYS.C_OBJ#_INTCOL#           data block   1 9 35725      1         0   0 0:4 25 rows selected. SYS@book01p> @ tpt/bhla 000000007A767AA8    OBJ OBJECT_TYPE object                CLASS       TCH DBA       STATE MODE_HELD  DQ FLG_LRUFLG ------ ----------- --------------------- ---------- ---- --------- ----- --------- --- ---------- 168020 TABLE       SCOTT.CBC2            data block  116 12 1639       1         0   0 80000:8 168020 TABLE       SCOTT.CBC2            data block  116 12 354        1         0   0 80000:8 168020 TABLE       SCOTT.CBC2            data block  116 12 252        1         0   0 80000:8 168020 TABLE       SCOTT.CBC2            data block  116 12 1741       1         0   0 80000:8 --//4个不同dba的数据块在同一个laddr下。     18 TABLE       SYS.OBJ$              data block    3 9 23322       1         0   0 80000:8     18 TABLE       SYS.OBJ$              data block    3 9 28972       1         0   0 80000:8    274 TABLE       SYS.RECYCLEBIN$       data block    3 9 36009       1         0   0 80000:8    795 TABLE       SYS.KOTAD$            data block    1 9 5087        1         0   0 0:4     70 INDEX       SYS.I_HH_OBJ#_INTCOL# data block    1 9 19059       1         0   0 0:8     64 TABLE       SYS.HISTGRM$          data block    1 9 824         1         0   0 0:4     64 CLUSTER     SYS.C_OBJ#_INTCOL#    data block    1 9 824         1         0   0 0:4    386 TABLE       SYS.IDL_UB2$          data block    1 9 10635       1         0   0 0:4 12 rows selected. --//可以发现touch高的对象都是SCOTT.CBC2。 --//换一句讲,如果出现latch cache buffers chains,也许涉及dml语句。 --//优化sql的重点还是要减少逻辑读,以及执行次数(有一些开发以一种变态的方式频繁调用sql语句,类似死循环)。 5.继续测试: SCOTT@book01p> update cbc2 set object_name=lower(object_name) where  mod(object_id,10)=0; 7562 rows updated. Elapsed: 00:00:00.11 --//不提交。 $ zzdate ; seq 20 | xargs -IQ -P 20 sqlplus -s -l scott/book@book01p @loop7.txt 100  > /dev/null ;zzdate trunc(sysdate)+10/24+50/1440+02/86400 1762483802.989724861 SYS@book01p> @ ashtop sql_id,p1raw,p1,event,session_state 1=1 trunc(sysdate)+10/24+50/1440+02/86400 sysdate     Total                                                                                                                                                         Distinct Distinct    Distinct   Seconds     AAS %This   SQL_ID        P1RAW                     P1 EVENT                                      SESSION FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1 --------- ------- ------- ------------- ----------------- ---------- ------------------------------------------ ------- ------------------- ------------------- ---------- -------- -----------        26      .3    1% | bjw5n8xcqpq8f 000000007A776780  2054645632 latch: cache buffers chains                WAITING 2025-11-07 10:50:49 2025-11-07 10:51:31         26        2          26        19      .2    1% | bjw5n8xcqpq8f 000000007A77C810  2054670352 latch: cache buffers chains                WAITING 2025-11-07 10:50:57 2025-11-07 10:51:00         19        2          19        18      .2    1% | bjw5n8xcqpq8f 000000007A785F08  2054709000 latch: cache buffers chains                WAITING 2025-11-07 10:50:14 2025-11-07 10:51:27         18        5          18        17      .2    1% | bjw5n8xcqpq8f 000000007A78B210  2054730256 latch: cache buffers chains                WAITING 2025-11-07 10:50:27 2025-11-07 10:50:48         17        2          17        16      .2    1% | bjw5n8xcqpq8f 000000000000000C          12 buffer busy waits                          WAITING 2025-11-07 10:50:07 2025-11-07 10:50:49         16        5          16        16      .2    1% | bjw5n8xcqpq8f 000000007A783F48  2054700872 latch: cache buffers chains                WAITING 2025-11-07 10:50:40 2025-11-07 10:50:40         16        1          16        15      .2    1% | bjw5n8xcqpq8f 000000007A7821E0  2054693344 latch: cache buffers chains                WAITING 2025-11-07 10:51:15 2025-11-07 10:51:20         15        3          15        15      .2    1% | bjw5n8xcqpq8f                           12                                            ON CPU  2025-11-07 10:50:11 2025-11-07 10:51:33         15       11          15        15      .2    1% | bjw5n8xcqpq8f                   2054720864                                            ON CPU  2025-11-07 10:50:13 2025-11-07 10:50:28         15        3          15        14      .2    1% | bjw5n8xcqpq8f 000000007A784CD0  2054704336 latch: cache buffers chains                WAITING 2025-11-07 10:50:43 2025-11-07 10:50:43         14        1          14        13      .1    1% | bjw5n8xcqpq8f 000000007A75DA50  2054543952 latch: cache buffers chains                WAITING 2025-11-07 10:50:18 2025-11-07 10:50:18         13        1          13        13      .1    1% | bjw5n8xcqpq8f 000000007A766978  2054580600 latch: cache buffers chains                WAITING 2025-11-07 10:50:38 2025-11-07 10:50:38         13        1          13        13      .1    1% | bjw5n8xcqpq8f 000000007A76B000  2054598656 latch: cache buffers chains                WAITING 2025-11-07 10:51:12 2025-11-07 10:51:12         13        1          13        13      .1    1% | bjw5n8xcqpq8f 000000007A76D9A8  2054609320 latch: cache buffers chains                WAITING 2025-11-07 10:50:42 2025-11-07 10:51:07         13        2          13        13      .1    1% | bjw5n8xcqpq8f 000000007A783390  2054697872 latch: cache buffers chains                WAITING 2025-11-07 10:51:21 2025-11-07 10:51:21         13        1          13        13      .1    1% | bjw5n8xcqpq8f 000000007A786EA8  2054713000 latch: cache buffers chains                WAITING 2025-11-07 10:50:09 2025-11-07 10:51:22         13        2          13        13      .1    1% | bjw5n8xcqpq8f                   2054635840                                            ON CPU  2025-11-07 10:50:08 2025-11-07 10:51:29         13        4          13        12      .1    1% | bjw5n8xcqpq8f 000000007A764378  2054570872 latch: cache buffers chains                WAITING 2025-11-07 10:51:25 2025-11-07 10:51:25         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A765290  2054574736 latch: cache buffers chains                WAITING 2025-11-07 10:50:23 2025-11-07 10:50:23         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A7685D8  2054587864 latch: cache buffers chains                WAITING 2025-11-07 10:51:28 2025-11-07 10:51:28         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A76F090  2054615184 latch: cache buffers chains                WAITING 2025-11-07 10:51:08 2025-11-07 10:51:08         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A776DC0  2054647232 latch: cache buffers chains                WAITING 2025-11-07 10:50:44 2025-11-07 10:50:44         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A7770E0  2054648032 latch: cache buffers chains                WAITING 2025-11-07 10:51:04 2025-11-07 10:51:04         12        1          12        12      .1    1% | bjw5n8xcqpq8f 000000007A77E858  2054678616 latch: cache buffers chains                WAITING 2025-11-07 10:50:32 2025-11-07 10:51:12         12        2          12        12      .1    1% | bjw5n8xcqpq8f 000000007A782758  2054694744 latch: cache buffers chains                WAITING 2025-11-07 10:51:06 2025-11-07 10:51:06         12        1          12        12      .1    1% | bjw5n8xcqpq8f                   2054598656                                            ON CPU  2025-11-07 10:50:23 2025-11-07 10:51:14         11        4          11        12      .1    1% | bjw5n8xcqpq8f                   2054625576                                            ON CPU  2025-11-07 10:50:05 2025-11-07 10:51:19         12        3          12        12      .1    1% | bjw5n8xcqpq8f                   2054683880                                            ON CPU  2025-11-07 10:50:16 2025-11-07 10:50:16         12        1          12        12      .1    1% | bjw5n8xcqpq8f                   2054693344                                            ON CPU  2025-11-07 10:51:15 2025-11-07 10:51:20         12        2          12        11      .1    1% | bjw5n8xcqpq8f 000000007A76A278  2054595192 latch: cache buffers chains                WAITING 2025-11-07 10:51:13 2025-11-07 10:51:13         11        1          11 30 rows selected. --//查询大量的latch: cache buffers chains等待事件。 --//测试中间提交事务。 SCOTT@book01p> update cbc2 set object_name=lower(object_name) where  mod(object_id,10)=0; 7562 rows updated. Elapsed: 00:00:00.11 SCOTT@book01p> commit ; Commit complete. Elapsed: 00:00:00.00 --//等待测试结束。 $ zzdate ; seq 20 | xargs -IQ -P 20 sqlplus -s -l scott/book@book01p @loop7.txt 100  > /dev/null ;zzdate trunc(sysdate)+10/24+50/1440+02/86400 -1762483802.989724861 trunc(sysdate)+10/24+54/1440+08/86400 1762484048.657759817 --//Sum = 245.668034956 SYS@book01p> @ ashtop sql_id,event 1=1 trunc(sysdate)+10/24+50/1440+02/86400 sysdate     Total                                                                                                                    Distinct Distinct    Distinct   Seconds     AAS %This   SQL_ID        EVENT                                      FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1 --------- ------- ------- ------------- ------------------------------------------ ------------------- ------------------- ---------- -------- -----------      3657    13.4   76% | bjw5n8xcqpq8f                                            2025-11-07 10:50:03 2025-11-07 10:54:08       1885      245        1885      1159     4.3   24% | bjw5n8xcqpq8f latch: cache buffers chains                2025-11-07 10:50:04 2025-11-07 10:52:08        737      120         737        16      .1    0% | bjw5n8xcqpq8f buffer busy waits                          2025-11-07 10:50:07 2025-11-07 10:50:49         16        5          16         2      .0    0% | bjw5n8xcqpq8f latch: undo global data                    2025-11-07 10:51:10 2025-11-07 10:51:35          2        2           2         1      .0    0% | dkqaz3vwf51g0                                            2025-11-07 10:50:25 2025-11-07 10:50:25          1        1           1         1      .0    0% | g55rj8y228yhm                                            2025-11-07 10:53:23 2025-11-07 10:53:23          1        1           1 6 rows selected. --//latch: cache buffers chains出现的时间范围在2025-11-07 10:50:04 -- 2025-11-07 10:52:08之间,而整个测试结束时间是 --//trunc(sysdate)+10/24+54/1440+08/86400。 --//可以看出问题现在如果出现latch: cache buffers chains可能涉及dml的对象。 SYS@book01p> @ tpt/bhla 000000007A776780     OBJ OBJECT_TYPE object                   CLASS       TCH DBA      STATE  MODE_HELD  DQ FLG_LRUFLG ------- ----------- ------------------------ ---------- ---- -------- ----- ---------- --- -----------  168020 TABLE       SCOTT.CBC2               data block  201 12 552       1          0   0 200000:8  168020 TABLE       SCOTT.CBC2               data block  201 12 654       1          0   0 200000:8  168020 TABLE       SCOTT.CBC2               data block    2 12 654       3          0   0 80000:8  168020 TABLE       SCOTT.CBC2               data block    2 12 552       3          0   0 80000:8  168020 TABLE       SCOTT.CBC2               data block    2 12 552       3          0   0 80000:8  168020 TABLE       SCOTT.CBC2               data block    2 12 552       3          0   0 80000:8  168020 TABLE       SCOTT.CBC2               data block    1 12 654       3          0   0 0:6     736 TABLE       SYS.OPTSTAT_SNAPSHOT$    data block    1 9 37696      1          0   0 80000:8     438 CLUSTER     SYS.SMON_SCN_TO_TIME_AUX data block    1 10 58234     1          0   0 80000:8     438 TABLE       SYS.SMON_SCN_TIME        data block    1 10 58234     1          0   0 80000:8  168020 TABLE       SCOTT.CBC2               data block    1 12 552       3          0   0 80000:8     790 INDEX       SYS.SYS_C00937           data block    0 9 33433      1          0   0 0:0     836 INDEX       SYS.I_TABPART_BOPART$    data block    0 9 5387       1          0   0 200000:4  168020 TABLE       SCOTT.CBC2               data block    0 12 654       3          0   0 0:8  168020 TABLE       SCOTT.CBC2               data block    0 12 654       3          0   0 0:8 15 rows selected. --//注意看dba列,对象SCOTT.CBC2上的数据块dba是相同的,dba=12 552 ,12 654. --//后面的FLG_LRUFLG表示的细节不知道。 SYS@book> @ hidez _db_block_max_cr_dba SYS@book> @ pr ============================== NUM                           : 1984 N_HEX                         :   7C0 CON_ID                        : 0 NAME                          : _db_block_max_cr_dba DESCRIPTION                   : Maximum Allowed Number of CR buffers per dba DEFAULT_VALUE                 : TRUE SESSION_VALUE                 : 6 SYSTEM_VALUE                  : 6 ISSES_MODIFIABLE              : FALSE ISSYS_MODIFIABLE              : FALSE PL/SQL procedure successfully completed. --//可以发现1个数据块最大的允许的CR数量是6.每次执行sql访问数据块,因为对应数据块的修改没有提交,oracle要重构数据块,这样 --//每次读取要反复持有该latch。如果该链表的其他对象的数据块dml问题就没有这么严重,除非是反复dml操作。 --//理论讲12c以上的oracle数据库应该很少latch: cache buffers chains等待事件,优化的重点并没有变化减少逻辑读以及执行次数, --//提高响应时间。 --//大家自己可以想象什么情况下会出现latch: cache buffers chains等待事件。

相关推荐

热文推荐