Re: slow query on CDB_FREE_SPACE

  • From: Laurentiu Oprea <laurentiu.oprea06@xxxxxxxxx>
  • To: Timur Akhmadeev <timur.akhmadeev@xxxxxxxxx>
  • Date: Tue, 17 Oct 2023 16:03:50 +0300

Basically the most import part for me is to figure out a way to make
dba_free_space work, and to figure out why with adaptive plans off is smart
enough to pick FIXED TABLE FIXED INDEX      | X$KTFBFE (ind:1) . Forcing
this index via a hint seems in particular a bit tricky. Second sql monitor
is just the starting part, is usually taking few hours


SQL Text

------------------------------

SELECT /*+ OPT_PARAM('optimizer_adaptive_plans' 'false') monitor*/
f.file_id file_id, SUM(f.bytes) fbytes FROM CDB_free_space f GROUP BY
f.file_id



Global Stats

================================================================

| Elapsed |   Cpu   |    IO    | Fetch | Buffer | Read | Read  |

| Time(s) | Time(s) | Waits(s) | Calls |  Gets  | Reqs | Bytes |

================================================================

|    0.06 |    0.02 |     0.04 |     2 |   2171 |   82 | 656KB |

================================================================



SQL Plan Monitoring Details (Plan Hash Value=389633790)

===================================================================================================================================================================================

| Id |              Operation              |          Name           |
Rows   | Cost |   Time    | Start  | Execs |   Rows   | Read | Read  |
Mem  | Activity | Activity Detail |

|    |                                     |                         |
(Estim) |      | Active(s) | Active |       | (Actual) | Reqs | Bytes |
(Max) |   (%)    |   (# samples)   |

===================================================================================================================================================================================

|  0 | SELECT STATEMENT                    |
|         |      |         1 |     +0 |     1 |       15 |      |
|     . |          |                 |

|  1 |   HASH GROUP BY                     |                         |
15 |   56 |         1 |     +0 |     1 |       15 |      |       |   1MB
|          |                 |

|  2 |    VIEW                             | DBA_FREE_SPACE          |
21453 |   54 |         1 |     +0 |     1 |     2122 |      |       |     .
|          |                 |

|  3 |     UNION-ALL                       |
|         |      |         1 |     +0 |     1 |     2122 |      |
  |     . |          |                 |

|  4 |      NESTED LOOPS                   |
|       1 |    2 |           |        |     1 |          |      |
|     . |          |                 |

|  5 |       NESTED LOOPS                  |
|       1 |    2 |         1 |     +0 |     1 |        0 |      |
|     . |          |                 |

|  6 |        TABLE ACCESS FULL            | FILE$                   |
15 |    2 |         1 |     +0 |     1 |       15 |      |       |     .
|          |                 |

|  7 |        TABLE ACCESS CLUSTER         | FET$
|       1 |      |         1 |     +0 |    15 |        0 |      |
|     . |          |                 |

|  8 |         INDEX UNIQUE SCAN           | I_TS#
|       1 |      |         1 |     +0 |    15 |       15 |      |
|     . |          |                 |

|  9 |       TABLE ACCESS CLUSTER          | TS$                     |
 1 |      |           |        |       |          |      |       |     .
|          |                 |

| 10 |        INDEX UNIQUE SCAN            | I_TS#
|       1 |      |           |        |       |          |      |
|     . |          |                 |

| 11 |      HASH JOIN                      |                         |
614 |    9 |         1 |     +0 |     1 |      543 |      |       |   1MB
|          |                 |

| 12 |       TABLE ACCESS FULL             | FILE$                   |
15 |    2 |         1 |     +0 |     1 |       15 |      |       |     .
|          |                 |

| 13 |       NESTED LOOPS                  |                         |
614 |    7 |         1 |     +0 |     1 |      543 |      |       |     .
|          |                 |

| 14 |        TABLE ACCESS FULL            | TS$                     |
15 |    7 |         1 |     +0 |     1 |       15 |      |       |     .
|          |                 |

| 15 |        FIXED TABLE FIXED INDEX      | X$KTFBFE (ind:1)        |
42 |      |         1 |     +0 |    15 |      543 |      |       |     .
|          |                 |

| 16 |      NESTED LOOPS                   |                         |
20836 |   27 |         1 |     +0 |     1 |     1579 |      |       |     .
|          |                 |

| 17 |       HASH JOIN                     |                         |
71 |   27 |         1 |     +0 |     1 |       82 |      |       | 719KB
|          |                 |

| 18 |        NESTED LOOPS                 |                         |
71 |   25 |         1 |     +0 |     1 |       82 |      |       |     .
|          |                 |

| 19 |         NESTED LOOPS                |                         |
1095 |   25 |         1 |     +0 |     1 |       82 |      |       |     .
|          |                 |

| 20 |          TABLE ACCESS FULL          | TS$                     |
15 |    7 |         1 |     +0 |     1 |       15 |      |       |     .
|          |                 |

| 21 |          INDEX RANGE SCAN           | RECYCLEBIN$_TS          |
73 |    1 |         1 |     +0 |    15 |       82 |      |       |     .
|          |                 |

| 22 |         TABLE ACCESS BY INDEX ROWID | RECYCLEBIN$
|       5 |    4 |         1 |     +0 |    82 |       82 |      |
|     . |          |                 |

| 23 |        TABLE ACCESS FULL            | FILE$                   |
15 |    2 |         1 |     +0 |     1 |       15 |      |       |     .
|          |                 |

| 24 |       FIXED TABLE FIXED INDEX       | X$KTFBUE (ind:1)        |
295 |      |         1 |     +0 |    82 |     1579 |   82 | 656KB |     .
|          |                 |

| 25 |      NESTED LOOPS                   |
|       1 |   13 |           |        |     1 |          |      |
|     . |          |                 |

| 26 |       NESTED LOOPS                  |                         |
73 |   13 |           |        |     1 |          |      |       |     .
|          |                 |

| 27 |        NESTED LOOPS                 |
|       1 |    9 |           |        |     1 |          |      |
|     . |          |                 |

| 28 |         NESTED LOOPS                |
|       1 |    9 |           |        |     1 |          |      |
|     . |          |                 |

| 29 |          TABLE ACCESS FULL          | TS$
         |       1 |    7 |           |        |     1 |          |
|       |     . |          |                 |

| 30 |          TABLE ACCESS CLUSTER       | UET$
|       1 |    2 |           |        |       |          |      |
     |     . |          |                 |

| 31 |           INDEX RANGE SCAN          | I_FILE#_BLOCK#
|       1 |    2 |           |        |       |          |      |
|     . |          |                 |

| 32 |         TABLE ACCESS BY INDEX ROWID | FILE$
|       1 |      |           |        |       |          |      |
|     . |          |                 |

| 33 |          INDEX UNIQUE SCAN          | I_FILE2
|       1 |      |           |        |       |          |      |
|     . |          |                 |

| 34 |        INDEX RANGE SCAN             | RECYCLEBIN$_TS          |
73 |    1 |           |        |       |          |      |       |     .
|          |                 |

| 35 |       TABLE ACCESS BY INDEX ROWID   | RECYCLEBIN$
|       1 |    4 |           |        |       |          |      |
|     . |          |                 |

| 36 |      NESTED LOOPS                   |
|       1 |    3 |           |        |     1 |          |      |
|     . |          |                 |

| 37 |       NESTED LOOPS                  |
|       1 |    3 |           |        |     1 |          |      |
|     . |          |                 |

| 38 |        NESTED LOOPS                 |                         |
 1 |    2 |           |        |     1 |          |      |       |     .
|          |                 |

| 39 |         TABLE ACCESS FULL           | NEW_LOST_WRITE_EXTENTS$
|       1 |    2 |           |        |     1 |          |      |
|     . |          |                 |

| 40 |         TABLE ACCESS CLUSTER        | TS$
|       1 |      |           |        |       |          |      |
|     . |          |                 |

| 41 |          INDEX UNIQUE SCAN          | I_TS#
|       1 |      |           |        |       |          |      |
|     . |          |                 |

| 42 |        INDEX RANGE SCAN             | I_FILE2
|       1 |    1 |           |        |       |          |      |
|     . |          |                 |

| 43 |       TABLE ACCESS BY INDEX ROWID   | FILE$
|       1 |    1 |           |        |       |          |      |
|     . |          |                 |





SQL Text

------------------------------

SELECT /* OPT_PARAM('optimizer_adaptive_plans' 'false') monitor*/ f.file_id
file_id, SUM(f.bytes) fbytes FROM CDB_free_space f GROUP BY f.file_id



Global Stats

=========================================================

| Elapsed |   Cpu   |    IO    | Buffer | Read  | Read  |

| Time(s) | Time(s) | Waits(s) |  Gets  | Reqs  | Bytes |

=========================================================

|      21 |    2.83 |       18 |   302K | 58326 | 456MB |

=========================================================



SQL Plan Monitoring Details (Plan Hash Value=2701564472)

======================================================================================================================================================================================================

| Id    |               Operation               |          Name
|  Rows   | Cost |   Time    | Start  | Execs |   Rows   | Read  | Read  |
Mem  | Activity |       Activity Detail        |

|       |                                       |                         |
(Estim) |      | Active(s) | Active |       | (Actual) | Reqs  | Bytes
|       |   (%)    |         (# samples)          |

======================================================================================================================================================================================================

|     0 | SELECT STATEMENT                      |
                    |         |      |         1 |     +4 |     1 |
0 |       |       |     . |          |                              |

|     1 |   HASH GROUP BY                       |
|      15 |   56 |         1 |     +4 |     1 |        0 |       |
|   1MB |          |                              |

|     2 |    VIEW                               | DBA_FREE_SPACE
|   21453 |   54 |         1 |     +4 |     1 |      544 |       |
|     . |          |                              |

|     3 |     UNION-ALL                         |
|         |      |         1 |     +4 |     1 |      544 |       |
|     . |          |                              |

|     4 |      NESTED LOOPS                     |
|       1 |    2 |           |        |     1 |          |       |
|     . |          |                              |

|     5 |       NESTED LOOPS                    |
|       1 |    2 |         1 |     +4 |     1 |        0 |       |
|     . |          |                              |

|     6 |        TABLE ACCESS FULL              | FILE$
|      15 |    2 |         1 |     +4 |     1 |       15 |       |
|     . |          |                              |

|     7 |        TABLE ACCESS CLUSTER           | FET$
|       1 |      |         1 |     +4 |    15 |        0 |       |
|     . |          |                              |

|     8 |         INDEX UNIQUE SCAN             | I_TS#
|       1 |      |         1 |     +4 |    15 |       15 |       |
|     . |          |                              |

|     9 |       TABLE ACCESS CLUSTER            | TS$
                   |       1 |      |           |        |       |
|       |       |     . |          |                              |

|    10 |        INDEX UNIQUE SCAN              | I_TS#
|       1 |      |           |        |       |          |       |
|     . |          |                              |

|    11 |      HASH JOIN                        |
|     614 |    9 |         1 |     +4 |     1 |      543 |       |
|     . |          |                              |

|    12 |       TABLE ACCESS FULL               | FILE$
|      15 |    2 |         1 |     +4 |     1 |       15 |       |
|     . |          |                              |

|    13 |       NESTED LOOPS                    |
|     614 |    7 |         1 |     +4 |     1 |      543 |       |
|     . |          |                              |

|    14 |        TABLE ACCESS FULL              | TS$
|      15 |    7 |         1 |     +4 |     1 |       15 |       |
|     . |          |                              |

|    15 |        FIXED TABLE FIXED INDEX        | X$KTFBFE (ind:1)
|      42 |      |         1 |     +4 |    15 |      543 |       |
      |     . |          |                              |

|    16 |      NESTED LOOPS                     |
|   20836 |   27 |         1 |     +4 |     1 |        1 |       |
|     . |          |                              |

|    17 |       HASH JOIN                       |
|      71 |   27 |         1 |     +4 |     1 |        1 |       |       |
468KB |          |                              |

|    18 |        HASH JOIN                      |
                  |      71 |   25 |         1 |     +4 |     1 |        1
|       |       |     . |          |                              |

|    19 |         NESTED LOOPS                  |
|      71 |   25 |         1 |     +4 |     1 |       82 |       |
|     . |          |                              |

|    20 |          NESTED LOOPS                 |
                 |    1095 |   25 |         1 |     +4 |     1 |       82
|       |       |     . |          |                              |

|    21 |           STATISTICS COLLECTOR        |
|         |      |         1 |     +4 |     1 |       15 |       |
|     . |          |                              |

|    22 |            TABLE ACCESS FULL          | TS$
|      15 |    7 |         1 |     +4 |     1 |       15 |       |
|     . |          |                              |

|    23 |           INDEX RANGE SCAN            | RECYCLEBIN$_TS
|      73 |    1 |         1 |     +4 |    15 |       82 |       |
|     . |          |                              |

|    24 |          TABLE ACCESS BY INDEX ROWID  | RECYCLEBIN$
|       5 |    4 |         1 |     +4 |    82 |       82 |       |
|     . |          |                              |

|    25 |         TABLE ACCESS FULL             | RECYCLEBIN$
|       5 |    4 |           |        |       |          |       |
|     . |          |                              |

| -> 26 |        TABLE ACCESS FULL              | FILE$
|      15 |    2 |        17 |     +4 |     1 |        6 |       |
    |     . |          |                              |

| -> 27 |       FIXED TABLE FULL                | X$KTFBUE
|     295 |      |        21 |     +1 |     1 |        1 | 58236 | 455MB
|     . |   100.00 | Cpu (2)                      |

|       |                                       |
|         |      |           |        |       |          |       |
|       |          | db file sequential read (19) |

|    28 |      HASH JOIN                        |
                |       1 |   13 |           |        |       |
|       |       |     . |          |                              |

|    29 |       NESTED LOOPS                    |
|       1 |   13 |           |        |       |          |       |
|     . |          |                              |

|    30 |        NESTED LOOPS                   |
|      73 |   13 |           |        |       |          |       |
|     . |          |                              |

|    31 |         STATISTICS COLLECTOR          |
|         |      |           |        |       |          |       |
|     . |          |                              |

|    32 |          NESTED LOOPS                 |
|       1 |    9 |           |        |       |          |       |
|     . |          |                              |

|    33 |           HASH JOIN                   |
|       1 |    9 |           |        |       |          |       |
|     . |          |                              |

|    34 |            NESTED LOOPS               |
|       1 |    9 |           |        |       |          |       |
   |     . |          |                              |

|    35 |             STATISTICS COLLECTOR      |
|         |      |           |        |       |          |       |
|     . |          |                              |

|    36 |              TABLE ACCESS FULL        | TS$
|       1 |    7 |           |        |       |          |       |
|     . |          |                              |

|    37 |             TABLE ACCESS CLUSTER      | UET$
               |       1 |    2 |           |        |       |
|       |       |     . |          |                              |

|    38 |              INDEX RANGE SCAN         | I_FILE#_BLOCK#
|       1 |    2 |           |        |       |          |       |
|     . |          |                              |

|    39 |            TABLE ACCESS FULL          | UET$
|       1 |    2 |           |        |       |          |       |
|     . |          |                              |

|    40 |           TABLE ACCESS BY INDEX ROWID | FILE$
|       1 |      |           |        |       |          |       |
|     . |          |                              |

|    41 |            INDEX UNIQUE SCAN          | I_FILE2
|       1 |      |           |        |       |          |       |
|     . |          |                              |

|    42 |         INDEX RANGE SCAN              | RECYCLEBIN$_TS
|      73 |    1 |           |        |       |          |       |
|     . |          |                              |

|    43 |        TABLE ACCESS BY INDEX ROWID    | RECYCLEBIN$
|       1 |    4 |           |        |       |          |       |
  |     . |          |                              |

|    44 |       TABLE ACCESS FULL               | RECYCLEBIN$
|       1 |    4 |           |        |       |          |       |
|     . |          |                              |

|    45 |      HASH JOIN                        |
|       1 |    3 |           |        |       |          |       |
|     . |          |                              |

|    46 |       NESTED LOOPS                    |
              |       1 |    3 |           |        |       |
|       |       |     . |          |                              |

|    47 |        NESTED LOOPS                   |
|       1 |    3 |           |        |       |          |       |
|     . |          |                              |

|    48 |         STATISTICS COLLECTOR          |
                 |         |      |           |        |       |
|       |       |     . |          |                              |

|    49 |          NESTED LOOPS                 |
|       1 |    2 |           |        |       |          |       |
|     . |          |                              |

|    50 |           TABLE ACCESS FULL           | NEW_LOST_WRITE_EXTENTS$
|       1 |    2 |           |        |       |          |       |
|     . |          |                              |

|    51 |           TABLE ACCESS CLUSTER        | TS$
|       1 |      |           |        |       |          |       |
|     . |          |                              |

|    52 |            INDEX UNIQUE SCAN          | I_TS#
|       1 |      |           |        |       |          |       |
|     . |          |                              |

|    53 |         INDEX RANGE SCAN              | I_FILE2
|       1 |    1 |           |        |       |          |       |
|     . |          |                              |

|    54 |        TABLE ACCESS BY INDEX ROWID    | FILE$
|       1 |    1 |           |        |       |          |       |
    |     . |          |                              |

|    55 |       TABLE ACCESS FULL               | FILE$
|       1 |    1 |           |        |       |          |       |
|     . |          |                              |

======================================================================================================================================================================================================

În mar., 17 oct. 2023 la 12:51, Timur Akhmadeev <timur.akhmadeev@xxxxxxxxx>
a scris:

Does it work with "_px_cdb_view_enabled"=false?

On Tue, Oct 17, 2023 at 11:38 AM Laurentiu Oprea <
laurentiu.oprea06@xxxxxxxxx> wrote:

Dear all,

Most probably we all hit at some point issues where querying
DBA_FREE_SPACE is slow.

I have the next issue:
-> query on CDB_FREE_SPACE is slow , issue being located in a particular
PDB
-> querying DBA_FREE_SPACE in problematic PDB I can see issue is caused
by execution plan full scanning X$KTFBUE
-> I gathered stats on X$KTFBUE and issue was still there
-> I observed that setting optimizer_adaptive_plans to false will do the
trick
-> went back in container , set optimizer_adaptive_plans to false at
session level and worked, so I thought great, I`ll create a sql patch with
hint opt_param('optimizer_adaptive_plans' 'false') but when hint is
applied in the query from CDB$ROOT is not propagated into PDBs (is working
only with alter session). The hint is working if I switch to PDB and run
the query with the hint there.

Any ideas on how to solve this problem?

Thank you.



--
Regards
Timur Akhmadeev

Other related posts: