1

我在 Oracle 12cR2(通过 Linux Red Hat 7)中发现了这个奇怪的行为,这个特殊的查询。在我看来这是一个错误,但我发布问题以防万一有人发现类似问题。

该查询是由 Java 应用程序触发的,但我已经能够在 sqlplus 中重现该问题。

提示:不要问我括号数量过多,我自己做的,它来自应用程序本身,所以我使用相同的sql文本是100%准确的。

查询 1

SQL> SELECT *
  2  from (SELECT
  3          MiscellaneousInformation.miscInfoNo,
  4          null AS thirdPartyNumber,
  5          COALESCE(ProposalAgreement.id,
  6          Agreement.id,
  7          0) AS alfaAgreementIdentifier,
  8          COALESCE(ProposalSchedule.id,
  9          Schedule.id,
 10          0) AS alfaScheduleIdentifier,
 11          COALESCE(ProposalAgreement.agreementNumber, Agreement.agreementNumber) AS AGREEMENTNUMBER,
 12          --ProposalAgreement.agreementNumber an1, Agreement.agreementNumber an2,
 13          ProposalAgreement.agreementNumber AS AGREEMENTNUMBER0,
 14             --CASE WHEN Agreement.agreementNumber IS NOT NULL THEN  Agreement.agreementNumber  ELSE ProposalAgreement.agreementNumber END AS AGREEMENTNUMBER,
 15          COALESCE(Schedule.scheduleNumber,
 16          ProposalSchedule.scheduleNumber,
 17          0),
 18          COALESCE(Schedule.terminationNumber,
 19          ProposalSchedule.terminationNumber,
 20          0),
 21          0 AS lineOfCreditNumber,
 22          0 AS securityIdentifier,
 23          0 AS caseIdSequenceNumber,
 24          MiscellaneousInformation.informationType,
 25          MiscellaneousInformation.detail,
 26          MiscellaneousInformation.valueAmount,
 27          MiscellaneousInformation.dateField,
 28          MiscellaneousInformation.valueCurrency,
 29          MiscellaneousInfoListValue.description,
 30          MiscellaneousInformation.ownerDiscriminator,
 31          MiscellaneousInformation.ownerEntityId
 32      FROM
 33          ALFATS.MiscellaneousInformation
 34      LEFT OUTER JOIN
 35          ALFATS.MiscellaneousInfoListValue
 36              ON (
 37                  (
 38                      MiscellaneousInformation.informationType = MiscellaneousInfoListValue.informationType
 39                  )
 40                  AND (
 41                      MiscellaneousInformation.detail = MiscellaneousInfoListValue.code
 42                  )
 43              )
 44      LEFT OUTER JOIN
 45          ALFATS.ScheduleEntity
 46              ON (
 47                  MiscellaneousInformation.ownerEntityId = ScheduleEntity.entityId
 48              )
 49      LEFT OUTER JOIN
 50          ALFATS.Schedule
 51              ON (
 52                  (
 53                      Schedule.id = ScheduleEntity.primaryScheduleId
 54                  )
 55                  AND (
 56                      Schedule.terminationNumber IN (
 57                          0,
 58                      1)))
 59                  LEFT OUTER JOIN
 60                      ALFATS.ProposalSchedule
 61                          ON (
 62                              MiscellaneousInformation.ownerEntityId = ProposalSchedule.entityId
 63                          )
 64                  LEFT OUTER JOIN
 65                      ALFATS.Agreement
 66                          ON (
 67                              (
 68                                  MiscellaneousInformation.ownerEntityId = Agreement.entityId
 69                              )
 70                              OR (
 71                                  Schedule.agreementNumber = Agreement.agreementNumber
 72                              )
 73                              OR (
 74                                  ProposalSchedule.agreementNumber = Agreement.agreementNumber
 75                              )
 76                          )
 77                  LEFT OUTER JOIN
 78                      ALFATS.ProposalAgreement
 79                          ON (
 80                              (
 81                                  MiscellaneousInformation.ownerEntityId = ProposalAgreement.entityId
 82                              )
 83                              OR (
 84                                  ProposalSchedule.agreementNumber = ProposalAgreement.agreementNumber
 85                              )
 86                          )
 87                  WHERE
 88                      (
 89                          (
 90                              (
 91                                  (
 92                                      MiscellaneousInformation.ownerDiscriminator = N'AGR'
 93                                  )
 94                                  OR (
 95                                      MiscellaneousInformation.ownerDiscriminator = N'SCH'
 96                                  )
 97                              )
 98                              AND (
 99                                  NOT (EXISTS (SELECT
100                                      1
101                                  FROM
102                                      ALFATS.MiscellaneousInformation miscInfoInner
103                                  WHERE
104                                      ((miscInfoInner.ownerEntityId = MiscellaneousInformation.ownerEntityId)
105                                      AND (miscInfoInner.informationType = MiscellaneousInformation.informationType)
106                                      AND (miscInfoInner.miscInfoNo > MiscellaneousInformation.miscInfoNo))))
107                              )
108                          )                        AND (
109                              MOD(MiscellaneousInformation.miscInfoNo, 20) = 13
110                          )
111                      ) )
112  WHERE  OWNERDISCRIMINATOR = 'AGR'
113  AND agreementnumber IS not NULL
114  --AND agreementnumber0 IS NOT NULL
115*

no rows selected

Elapsed: 00:03:07.56

Execution Plan
----------------------------------------------------------
Plan hash value: 70829564

------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                             |   671 |   370K|   210K  (1)| 00:00:09 |
|*  1 |  FILTER                            |                             |       |       |            |          |
|   2 |   MERGE JOIN OUTER                 |                             |   671 |   370K|   210K  (1)| 00:00:09 |
|   3 |    MERGE JOIN OUTER                |                             |   336 |   173K|   208K  (1)| 00:00:09 |
|   4 |     NESTED LOOPS OUTER             |                             |   112 | 55440 |   207K  (1)| 00:00:09 |
|   5 |      NESTED LOOPS OUTER            |                             |   112 | 51296 |   207K  (1)| 00:00:09 |
|*  6 |       HASH JOIN OUTER              |                             |   112 | 42448 |   206K  (1)| 00:00:09 |
|   7 |        NESTED LOOPS OUTER          |                             |   112 | 35280 |   206K  (1)| 00:00:09 |
|   8 |         NESTED LOOPS ANTI          |                             |   112 | 23072 |   206K  (1)| 00:00:09 |
|*  9 |          TABLE ACCESS FULL         | MISCELLANEOUSINFORMATION    | 11184 |  1299K|   173K  (1)| 00:00:07 |
|* 10 |          INDEX RANGE SCAN          | MISCELLANEOUSINFORMATION_L2 |    13M|  1135M|     3   (0)| 00:00:01 |
|  11 |         TABLE ACCESS BY INDEX ROWID| PROPOSALSCHEDULE            |     1 |   109 |     2   (0)| 00:00:01 |
|* 12 |          INDEX UNIQUE SCAN         | PROPOSALSCHEDULE_N2         |     1 |       |     1   (0)| 00:00:01 |
|  13 |        TABLE ACCESS FULL           | MISCELLANEOUSINFOLISTVALUE  |   699 | 44736 |     6   (0)| 00:00:01 |
|  14 |       TABLE ACCESS BY INDEX ROWID  | SCHEDULEENTITY              |     1 |    79 |     2   (0)| 00:00:01 |
|* 15 |        INDEX UNIQUE SCAN           | SCHEDULEENTITY_N2           |     1 |       |     1   (0)| 00:00:01 |
|* 16 |      TABLE ACCESS BY INDEX ROWID   | SCHEDULE                    |     1 |    37 |     1   (0)| 00:00:01 |
|* 17 |       INDEX UNIQUE SCAN            | SCHEDULE_PK                 |     1 |       |     0   (0)| 00:00:01 |
|  18 |     BUFFER SORT                    |                             |     3 |   105 |   208K  (1)| 00:00:09 |
|  19 |      VIEW                          | VW_LAT_B4E6951E             |     3 |   105 |     9   (0)| 00:00:01 |
|  20 |       VIEW                         | VW_ORE_A774FCAE             |     3 |   105 |     9   (0)| 00:00:01 |
|  21 |        UNION-ALL                   |                             |       |       |            |          |
|  22 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 23 |          INDEX UNIQUE SCAN         | AGREEMENT_N2                |     1 |       |     2   (0)| 00:00:01 |
|* 24 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 25 |          INDEX UNIQUE SCAN         | AGREEMENT_NK                |     1 |       |     2   (0)| 00:00:01 |
|* 26 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 27 |          INDEX UNIQUE SCAN         | AGREEMENT_NK                |     1 |       |     2   (0)| 00:00:01 |
|  28 |    BUFFER SORT                     |                             |     2 |    70 |   210K  (1)| 00:00:09 |
|  29 |     VIEW                           | VW_LAT_B4E6951E             |     2 |    70 |     6   (0)| 00:00:01 |
|  30 |      VIEW                          | VW_ORE_E1C15686             |     2 |    70 |     6   (0)| 00:00:01 |
|  31 |       UNION-ALL                    |                             |       |       |            |          |
|  32 |        TABLE ACCESS BY INDEX ROWID | PROPOSALAGREEMENT           |     1 |   104 |     3   (0)| 00:00:01 |
|* 33 |         INDEX UNIQUE SCAN          | PROPOSALAGREEMENT_N2        |     1 |       |     2   (0)| 00:00:01 |
|* 34 |        TABLE ACCESS BY INDEX ROWID | PROPOSALAGREEMENT           |     1 |   104 |     3   (0)| 00:00:01 |
|* 35 |         INDEX UNIQUE SCAN          | PROPOSALAGREEMENT_NK        |     1 |       |     2   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(COALESCE("ITEM_2","ITEM_2") IS NOT NULL)
   6 - access("MISCELLANEOUSINFORMATION"."INFORMATIONTYPE"="MISCELLANEOUSINFOLISTVALUE"."INFORMATIONTYPE"(
              +) AND "MISCELLANEOUSINFORMATION"."DETAIL"="MISCELLANEOUSINFOLISTVALUE"."CODE"(+))
   9 - filter("MISCELLANEOUSINFORMATION"."OWNERDISCRIMINATOR"=U'AGR' AND
              MOD("MISCELLANEOUSINFORMATION"."MISCINFONO",20)=13)
  10 - access("MISCINFOINNER"."OWNERENTITYID"="MISCELLANEOUSINFORMATION"."OWNERENTITYID" AND
              "MISCINFOINNER"."INFORMATIONTYPE"="MISCELLANEOUSINFORMATION"."INFORMATIONTYPE" AND
              "MISCINFOINNER"."MISCINFONO">"MISCELLANEOUSINFORMATION"."MISCINFONO")
  12 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALSCHEDULE"."ENTITYID"(+))
  15 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="SCHEDULEENTITY"."ENTITYID"(+))
  16 - filter("SCHEDULE"."TERMINATIONNUMBER"(+)=0 OR "SCHEDULE"."TERMINATIONNUMBER"(+)=1)
  17 - access("SCHEDULE"."ID"(+)="SCHEDULEENTITY"."PRIMARYSCHEDULEID")
  23 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID")
  24 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  25 - access("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
  26 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  27 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
       filter(LNNVL("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER"))
  33 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID")
  34 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID"))
  35 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="PROPOSALAGREEMENT"."AGREEMENTNUMBER")


Statistics
----------------------------------------------------------
         14  recursive calls
          0  db block gets
    1319465  consistent gets
     931422  physical reads
          0  redo size
       1846  bytes sent via SQL*Net to client
        597  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
     112034  sorts (memory)
          0  sorts (disk)
          0  rows processed

所以查询 1 返回 0 行。好吧,让我们更改select * fromfor 以获得表格的三列。

查询 2

SQL>   1  SELECT ownerDiscriminator , agreementnumber, agreementnumber0
  2  from (SELECT
  3          MiscellaneousInformation.miscInfoNo,
  4          null AS thirdPartyNumber,
  5          COALESCE(ProposalAgreement.id,
  6          Agreement.id,
  7          0) AS alfaAgreementIdentifier,
  8          COALESCE(ProposalSchedule.id,
  9          Schedule.id,
 10          0) AS alfaScheduleIdentifier,
 11          COALESCE(ProposalAgreement.agreementNumber, Agreement.agreementNumber) AS AGREEMENTNUMBER,
 12          --ProposalAgreement.agreementNumber an1, Agreement.agreementNumber an2,
 13          ProposalAgreement.agreementNumber AS AGREEMENTNUMBER0,
 14             --CASE WHEN Agreement.agreementNumber IS NOT NULL THEN  Agreement.agreementNumber  ELSE ProposalAgreement.agreementNumber END AS AGREEMENTNUMBER,
 15          COALESCE(Schedule.scheduleNumber,
 16          ProposalSchedule.scheduleNumber,
 17          0),
 18          COALESCE(Schedule.terminationNumber,
 19          ProposalSchedule.terminationNumber,
 20          0),
 21          0 AS lineOfCreditNumber,
 22          0 AS securityIdentifier,
 23          0 AS caseIdSequenceNumber,
 24          MiscellaneousInformation.informationType,
 25          MiscellaneousInformation.detail,
 26          MiscellaneousInformation.valueAmount,
 27          MiscellaneousInformation.dateField,
 28          MiscellaneousInformation.valueCurrency,
 29          MiscellaneousInfoListValue.description,
 30          MiscellaneousInformation.ownerDiscriminator,
 31          MiscellaneousInformation.ownerEntityId
 32      FROM
 33          ALFATS.MiscellaneousInformation
 34      LEFT OUTER JOIN
 35          ALFATS.MiscellaneousInfoListValue
 36              ON (
 37                  (
 38                      MiscellaneousInformation.informationType = MiscellaneousInfoListValue.informationType
 39                  )
 40                  AND (
 41                      MiscellaneousInformation.detail = MiscellaneousInfoListValue.code
 42                  )
 43              )
 44      LEFT OUTER JOIN
 45          ALFATS.ScheduleEntity
 46              ON (
 47                  MiscellaneousInformation.ownerEntityId = ScheduleEntity.entityId
 48              )
 49      LEFT OUTER JOIN
 50          ALFATS.Schedule
 51              ON (
 52                  (
 53                      Schedule.id = ScheduleEntity.primaryScheduleId
 54                  )
 55                  AND (
 56                      Schedule.terminationNumber IN (
 57                          0,
 58                      1)))
 59                  LEFT OUTER JOIN
 60                      ALFATS.ProposalSchedule
 61                          ON (
 62                              MiscellaneousInformation.ownerEntityId = ProposalSchedule.entityId
 63                          )
 64                  LEFT OUTER JOIN
 65                      ALFATS.Agreement
 66                          ON (
 67                              (
 68                                  MiscellaneousInformation.ownerEntityId = Agreement.entityId
 69                              )
 70                              OR (
 71                                  Schedule.agreementNumber = Agreement.agreementNumber
 72                              )
 73                              OR (
 74                                  ProposalSchedule.agreementNumber = Agreement.agreementNumber
 75                              )
 76                          )
 77                  LEFT OUTER JOIN
 78                      ALFATS.ProposalAgreement
 79                          ON (
 80                              (
 81                                  MiscellaneousInformation.ownerEntityId = ProposalAgreement.entityId
 82                              )
 83                              OR (
 84                                  ProposalSchedule.agreementNumber = ProposalAgreement.agreementNumber
 85                              )
 86                          )
 87                  WHERE
 88                      (
 89                          (
 90                              (
 91                                  (
 92                                      MiscellaneousInformation.ownerDiscriminator = N'AGR'
 93                                  )
 94                                  OR (
 95                                      MiscellaneousInformation.ownerDiscriminator = N'SCH'
 96                                  )
 97                              )
 98                              AND (
 99                                  NOT (EXISTS (SELECT
100                                      1
101                                  FROM
102                                      ALFATS.MiscellaneousInformation miscInfoInner
103                                  WHERE
104                                      ((miscInfoInner.ownerEntityId = MiscellaneousInformation.ownerEntityId)
105                                      AND (miscInfoInner.informationType = MiscellaneousInformation.informationType)
106                                      AND (miscInfoInner.miscInfoNo > MiscellaneousInformation.miscInfoNo))))
107                              )
108                          )                        AND (
109                              MOD(MiscellaneousInformation.miscInfoNo, 20) = 13
110                          )
111                      ) )
112  WHERE  OWNERDISCRIMINATOR = 'AGR'
113  AND agreementnumber IS not NULL
114* --AND agreementnumber0 IS NOT NULL 
115 ;

56017 rows selected.

Elapsed: 00:00:25.63

Execution Plan
----------------------------------------------------------
Plan hash value: 2355278442

-------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                         | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                              |   671 |   309K|   210K  (1)| 00:00:09 |
|*  1 |  FILTER                            |                              |       |       |            |          |
|   2 |   MERGE JOIN OUTER                 |                              |   671 |   309K|   210K  (1)| 00:00:09 |
|   3 |    MERGE JOIN OUTER                |                              |   336 |   147K|   208K  (1)| 00:00:09 |
|   4 |     NESTED LOOPS OUTER             |                              |   112 | 47936 |   207K  (1)| 00:00:09 |
|   5 |      NESTED LOOPS OUTER            |                              |   112 | 44128 |   207K  (1)| 00:00:09 |
|*  6 |       HASH JOIN RIGHT OUTER        |                              |   112 | 35280 |   206K  (1)| 00:00:09 |
|   7 |        INDEX FAST FULL SCAN        | MISCELLANEOUSINFOLISTVALUE_1 |   699 | 13281 |     3   (0)| 00:00:01 |
|   8 |        NESTED LOOPS OUTER          |                              |   112 | 33152 |   206K  (1)| 00:00:09 |
|   9 |         NESTED LOOPS ANTI          |                              |   112 | 22176 |   206K  (1)| 00:00:09 |
|* 10 |          TABLE ACCESS FULL         | MISCELLANEOUSINFORMATION     | 11184 |  1212K|   173K  (1)| 00:00:07 |
|* 11 |          INDEX RANGE SCAN          | MISCELLANEOUSINFORMATION_L2  |    13M|  1135M|     3   (0)| 00:00:01 |
|  12 |         TABLE ACCESS BY INDEX ROWID| PROPOSALSCHEDULE             |     1 |    98 |     2   (0)| 00:00:01 |
|* 13 |          INDEX UNIQUE SCAN         | PROPOSALSCHEDULE_N2          |     1 |       |     1   (0)| 00:00:01 |
|  14 |       TABLE ACCESS BY INDEX ROWID  | SCHEDULEENTITY               |     1 |    79 |     2   (0)| 00:00:01 |
|* 15 |        INDEX UNIQUE SCAN           | SCHEDULEENTITY_N2            |     1 |       |     1   (0)| 00:00:01 |
|* 16 |      TABLE ACCESS BY INDEX ROWID   | SCHEDULE                     |     1 |    34 |     1   (0)| 00:00:01 |
|* 17 |       INDEX UNIQUE SCAN            | SCHEDULE_PK                  |     1 |       |     0   (0)| 00:00:01 |
|  18 |     BUFFER SORT                    |                              |     3 |    66 |   208K  (1)| 00:00:09 |
|  19 |      VIEW                          | VW_LAT_B4E6951E              |     3 |    66 |     9   (0)| 00:00:01 |
|  20 |       VIEW                         | VW_ORE_A774FCAE              |     3 |    66 |     9   (0)| 00:00:01 |
|  21 |        UNION-ALL                   |                              |       |       |            |          |
|  22 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                    |     1 |    98 |     3   (0)| 00:00:01 |
|* 23 |          INDEX UNIQUE SCAN         | AGREEMENT_N2                 |     1 |       |     2   (0)| 00:00:01 |
|* 24 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                    |     1 |    98 |     3   (0)| 00:00:01 |
|* 25 |          INDEX UNIQUE SCAN         | AGREEMENT_NK                 |     1 |       |     2   (0)| 00:00:01 |
|* 26 |         TABLE ACCESS BY INDEX ROWID| AGREEMENT                    |     1 |    98 |     3   (0)| 00:00:01 |
|* 27 |          INDEX UNIQUE SCAN         | AGREEMENT_NK                 |     1 |       |     2   (0)| 00:00:01 |
|  28 |    BUFFER SORT                     |                              |     2 |    44 |   210K  (1)| 00:00:09 |
|  29 |     VIEW                           | VW_LAT_B4E6951E              |     2 |    44 |     6   (0)| 00:00:01 |
|  30 |      VIEW                          | VW_ORE_E1C15686              |     2 |    44 |     6   (0)| 00:00:01 |
|  31 |       UNION-ALL                    |                              |       |       |            |          |
|  32 |        TABLE ACCESS BY INDEX ROWID | PROPOSALAGREEMENT            |     1 |    98 |     3   (0)| 00:00:01 |
|* 33 |         INDEX UNIQUE SCAN          | PROPOSALAGREEMENT_N2         |     1 |       |     2   (0)| 00:00:01 |
|* 34 |        TABLE ACCESS BY INDEX ROWID | PROPOSALAGREEMENT            |     1 |    98 |     3   (0)| 00:00:01 |
|* 35 |         INDEX UNIQUE SCAN          | PROPOSALAGREEMENT_NK         |     1 |       |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(COALESCE("ITEM_2","ITEM_2") IS NOT NULL)
   6 - access("MISCELLANEOUSINFORMATION"."INFORMATIONTYPE"="MISCELLANEOUSINFOLISTVALUE"."INFORMATIONTYPE"(+
              ) AND "MISCELLANEOUSINFORMATION"."DETAIL"="MISCELLANEOUSINFOLISTVALUE"."CODE"(+))
  10 - filter("MISCELLANEOUSINFORMATION"."OWNERDISCRIMINATOR"=U'AGR' AND
              MOD("MISCELLANEOUSINFORMATION"."MISCINFONO",20)=13)
  11 - access("MISCINFOINNER"."OWNERENTITYID"="MISCELLANEOUSINFORMATION"."OWNERENTITYID" AND
              "MISCINFOINNER"."INFORMATIONTYPE"="MISCELLANEOUSINFORMATION"."INFORMATIONTYPE" AND
              "MISCINFOINNER"."MISCINFONO">"MISCELLANEOUSINFORMATION"."MISCINFONO")
  13 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALSCHEDULE"."ENTITYID"(+))
  15 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="SCHEDULEENTITY"."ENTITYID"(+))
  16 - filter("SCHEDULE"."TERMINATIONNUMBER"(+)=0 OR "SCHEDULE"."TERMINATIONNUMBER"(+)=1)
  17 - access("SCHEDULE"."ID"(+)="SCHEDULEENTITY"."PRIMARYSCHEDULEID")
  23 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID")
  24 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  25 - access("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
  26 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  27 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
       filter(LNNVL("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER"))
  33 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID")
  34 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID"))
  35 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="PROPOSALAGREEMENT"."AGREEMENTNUMBER")


Statistics
----------------------------------------------------------
         14  recursive calls
          0  db block gets
    1437831  consistent gets
     637478  physical reads
          0  redo size
    2796818  bytes sent via SQL*Net to client
      41682  bytes received via SQL*Net from client
       3736  SQL*Net roundtrips to/from client
     112034  sorts (memory)
          0  sorts (disk)
      56017  rows processed

这怎么可能?我不会失去理智吧?

作为一个测试环境,我确实刷新了缓冲区缓存和共享池,检查了是否有损坏,甚至弹回了数据库。到目前为止,什么都没有。

简短的总结,使用select * from给我 0 行,使用select field, field, field from给我正确的行数。

你认为这是一个错误还是我没有考虑的不同之处?

PS 添加 order by 也会更改返回的行数。

更新

移动表段并重建所有索引也没有解决任何问题。我什至尝试使用数据泵来导出模式、删除表空间、在不同的 ASM 磁盘中重建表空间并重新导入。没有效果。

所以,我很清楚这是 12.2 中的一个 BUG,但我找不到具体是哪一个。

4

1 回答 1

0

我发布了这个答案,虽然更像是一个答案,但我将它定义为解决该问题的方法。但我相信这是值得的,以防有人发现自己在这个问题上。我找不到有问题的索引(或多个索引),但让我向您展示优化器的提示如何解决错误的输出结果。

原始查询

使用select *时输出为 0 行。如果只在外部选择中使用某些字段,结果是可以的。

解决方法 1

更改optimizer_features_enabled为 12.1 版就可以了。

SQL> alter session set optimizer_features_enable='12.1.0.2';

Session altered.

Elapsed: 00:00:00.01
SQL> SELECT *
  2  from (SELECT
  3          MiscellaneousInformation.miscInfoNo,
  4          null AS thirdPartyNumber,
  5          COALESCE(ProposalAgreement.id,
  6          Agreement.id,
  7          0) AS alfaAgreementIdentifier,
  8          COALESCE(ProposalSchedule.id,
  9          Schedule.id,
 10          0) AS alfaScheduleIdentifier,
 11          COALESCE(ProposalAgreement.agreementNumber, Agreement.agreementNumber) AS AGREEMENTNUMBER,
 12          COALESCE(Schedule.scheduleNumber,
 13          ProposalSchedule.scheduleNumber,
 14          0) as scheduleNumber,
 15          COALESCE(Schedule.terminationNumber,
 16          ProposalSchedule.terminationNumber,
 17          0) as terminationNumber,
 18          0 AS lineOfCreditNumber,
 19          0 AS securityIdentifier,
 20          0 AS caseIdSequenceNumber,
 21          MiscellaneousInformation.informationType,
 22          MiscellaneousInformation.detail,
 23          MiscellaneousInformation.valueAmount,
 24          MiscellaneousInformation.dateField,
 25          MiscellaneousInformation.valueCurrency,
 26          MiscellaneousInfoListValue.description,
 27          MiscellaneousInformation.ownerDiscriminator,
 28          MiscellaneousInformation.ownerEntityId
 29      FROM
 30          ALFATS.MiscellaneousInformation
 31      LEFT OUTER JOIN
 32          ALFATS.MiscellaneousInfoListValue
 33              ON (
 34                  (
 35                      MiscellaneousInformation.informationType = MiscellaneousInfoListValue.informationType
 36                  )
 37                  AND (
 38                      MiscellaneousInformation.detail = MiscellaneousInfoListValue.code
 39                  )
 40              )
 41      LEFT OUTER JOIN
 42          ALFATS.ScheduleEntity
 43              ON (
 44                  MiscellaneousInformation.ownerEntityId = ScheduleEntity.entityId
 45              )
 46      LEFT OUTER JOIN
 47          ALFATS.Schedule
 48              ON (
 49                  (
 50                      Schedule.id = ScheduleEntity.primaryScheduleId
 51                  )
 52                  AND (
 53                      Schedule.terminationNumber IN (
 54                          0,
 55                      1)))
 56                  LEFT OUTER JOIN
 57                      ALFATS.ProposalSchedule
 58                          ON (
 59                              MiscellaneousInformation.ownerEntityId = ProposalSchedule.entityId
 60                          )
 61                  LEFT OUTER JOIN
 62                      ALFATS.Agreement
 63                          ON (
 64                              (
 65                                  MiscellaneousInformation.ownerEntityId = Agreement.entityId
 66                              )
 67                              OR (
 68                                  Schedule.agreementNumber = Agreement.agreementNumber
 69                              )
 70                              OR (
 71                                  ProposalSchedule.agreementNumber = Agreement.agreementNumber
 72                              )
 73                          )
 74                  LEFT OUTER JOIN
 75                      ALFATS.ProposalAgreement
 76                          ON (
 77                              (
 78                                  MiscellaneousInformation.ownerEntityId = ProposalAgreement.entityId
 79                              )
 80                              OR (
 81                                  ProposalSchedule.agreementNumber = ProposalAgreement.agreementNumber
 82                              )
 83                          )
 84                  WHERE
 85                      (
 86                          (
 87                              (
 88                                  (
 89                                      MiscellaneousInformation.ownerDiscriminator = N'AGR'
 90                                  )
 91                                  OR (
 92                                      MiscellaneousInformation.ownerDiscriminator = N'SCH'
 93                                  )
 94                              )
 95                              AND (
 96                                  NOT (EXISTS (SELECT
 97                                      1
 98                                  FROM
 99                                      ALFATS.MiscellaneousInformation miscInfoInner
100                                  WHERE
101                                      ((miscInfoInner.ownerEntityId = MiscellaneousInformation.ownerEntityId)
102                                      AND (miscInfoInner.informationType = MiscellaneousInformation.informationType)
103                                      AND (miscInfoInner.miscInfoNo > MiscellaneousInformation.miscInfoNo))))
104                              )
105                          )                        AND (
106                              MOD(MiscellaneousInformation.miscInfoNo, 20) = 13
107                          )
108                      ) )
109  WHERE  OWNERDISCRIMINATOR = 'AGR'
110  AND agreementnumber IS not NULL
111  ;

56011 rows selected.

Elapsed: 00:00:23.28

Execution Plan
----------------------------------------------------------
Plan hash value: 1394098322

------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                             |   671 |   370K|   213K  (1)| 00:00:09 |
|*  1 |  FILTER                            |                             |       |       |            |          |
|   2 |   NESTED LOOPS OUTER               |                             |   671 |   370K|   213K  (1)| 00:00:09 |
|   3 |    NESTED LOOPS OUTER              |                             |   335 |   173K|   211K  (1)| 00:00:09 |
|   4 |     NESTED LOOPS OUTER             |                             |   112 | 55440 |   210K  (1)| 00:00:09 |
|   5 |      NESTED LOOPS OUTER            |                             |   112 | 51296 |   210K  (1)| 00:00:09 |
|*  6 |       HASH JOIN OUTER              |                             |   112 | 42448 |   210K  (1)| 00:00:09 |
|   7 |        NESTED LOOPS OUTER          |                             |   112 | 35280 |   210K  (1)| 00:00:09 |
|   8 |         NESTED LOOPS ANTI          |                             |   112 | 23072 |   210K  (1)| 00:00:09 |
|*  9 |          TABLE ACCESS FULL         | MISCELLANEOUSINFORMATION    | 11178 |  1299K|   176K  (1)| 00:00:07 |
|* 10 |          INDEX RANGE SCAN          | MISCELLANEOUSINFORMATION_L2 |    13M|  1132M|     3   (0)| 00:00:01 |
|  11 |         TABLE ACCESS BY INDEX ROWID| PROPOSALSCHEDULE            |     1 |   109 |     2   (0)| 00:00:01 |
|* 12 |          INDEX UNIQUE SCAN         | PROPOSALSCHEDULE_N2         |     1 |       |     1   (0)| 00:00:01 |
|  13 |        TABLE ACCESS FULL           | MISCELLANEOUSINFOLISTVALUE  |   699 | 44736 |     5   (0)| 00:00:01 |
|  14 |       TABLE ACCESS BY INDEX ROWID  | SCHEDULEENTITY              |     1 |    79 |     2   (0)| 00:00:01 |
|* 15 |        INDEX UNIQUE SCAN           | SCHEDULEENTITY_N2           |     1 |       |     1   (0)| 00:00:01 |
|* 16 |      TABLE ACCESS BY INDEX ROWID   | SCHEDULE                    |     1 |    37 |     1   (0)| 00:00:01 |
|* 17 |       INDEX UNIQUE SCAN            | SCHEDULE_PK                 |     1 |       |     0   (0)| 00:00:01 |
|  18 |     VIEW                           | VW_LAT_B4E6951E             |     3 |   105 |     9   (0)| 00:00:01 |
|  19 |      CONCATENATION                 |                             |       |       |            |          |
|  20 |       TABLE ACCESS BY INDEX ROWID  | AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 21 |        INDEX UNIQUE SCAN           | AGREEMENT_N2                |     1 |       |     2   (0)| 00:00:01 |
|* 22 |       TABLE ACCESS BY INDEX ROWID  | AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 23 |        INDEX UNIQUE SCAN           | AGREEMENT_NK                |     1 |       |     2   (0)| 00:00:01 |
|* 24 |       TABLE ACCESS BY INDEX ROWID  | AGREEMENT                   |     1 |   104 |     3   (0)| 00:00:01 |
|* 25 |        INDEX UNIQUE SCAN           | AGREEMENT_NK                |     1 |       |     2   (0)| 00:00:01 |
|  26 |    VIEW                            | VW_LAT_B4E6951E             |     2 |    70 |     5   (0)| 00:00:01 |
|  27 |     CONCATENATION                  |                             |       |       |            |          |
|  28 |      TABLE ACCESS BY INDEX ROWID   | PROPOSALAGREEMENT           |     1 |   104 |     3   (0)| 00:00:01 |
|* 29 |       INDEX UNIQUE SCAN            | PROPOSALAGREEMENT_N2        |     1 |       |     2   (0)| 00:00:01 |
|* 30 |      TABLE ACCESS BY INDEX ROWID   | PROPOSALAGREEMENT           |     1 |   104 |     2   (0)| 00:00:01 |
|* 31 |       INDEX UNIQUE SCAN            | PROPOSALAGREEMENT_NK        |     1 |       |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(COALESCE("ITEM_2","ITEM_2") IS NOT NULL)
   6 - access("MISCELLANEOUSINFORMATION"."INFORMATIONTYPE"="MISCELLANEOUSINFOLISTVALUE"."INFORMATIONTYPE"(
              +) AND "MISCELLANEOUSINFORMATION"."DETAIL"="MISCELLANEOUSINFOLISTVALUE"."CODE"(+))
   9 - filter("MISCELLANEOUSINFORMATION"."OWNERDISCRIMINATOR"=U'AGR' AND
              MOD("MISCELLANEOUSINFORMATION"."MISCINFONO",20)=13)
  10 - access("MISCINFOINNER"."OWNERENTITYID"="MISCELLANEOUSINFORMATION"."OWNERENTITYID" AND
              "MISCINFOINNER"."INFORMATIONTYPE"="MISCELLANEOUSINFORMATION"."INFORMATIONTYPE" AND
              "MISCINFOINNER"."MISCINFONO">"MISCELLANEOUSINFORMATION"."MISCINFONO")
  12 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALSCHEDULE"."ENTITYID"(+))
  15 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="SCHEDULEENTITY"."ENTITYID"(+))
  16 - filter("SCHEDULE"."TERMINATIONNUMBER"(+)=0 OR "SCHEDULE"."TERMINATIONNUMBER"(+)=1)
  17 - access("SCHEDULE"."ID"(+)="SCHEDULEENTITY"."PRIMARYSCHEDULEID")
  21 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID")
  22 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  23 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
  24 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  25 - access("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
       filter(LNNVL("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER"))
  29 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID")
  30 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID"))
  31 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="PROPOSALAGREEMENT"."AGREEMENTNUMBER")


Statistics
----------------------------------------------------------
        385  recursive calls
          3  db block gets
    1437939  consistent gets
     648378  physical reads
        132  redo size
   10579547  bytes sent via SQL*Net to client
      41681  bytes received via SQL*Net from client
       3736  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      56011  rows processed

解决方法 2

更改optimizer_index_caching为 100 也解决了这个问题,这让我相信这个错误可能与查询执行的一些嵌套循环连接有关。

SQL> alter session set OPTIMIZER_INDEX_CACHING=100;

Session altered.

Elapsed: 00:00:00.00
SQL> SELECT *
  2  from (SELECT
  3          MiscellaneousInformation.miscInfoNo,
  4          null AS thirdPartyNumber,
  5          COALESCE(ProposalAgreement.id,
  6          Agreement.id,
  7          0) AS alfaAgreementIdentifier,
  8          COALESCE(ProposalSchedule.id,
  9          Schedule.id,
 10          0) AS alfaScheduleIdentifier,
 11          COALESCE(ProposalAgreement.agreementNumber, Agreement.agreementNumber) AS AGREEMENTNUMBER,
 12          COALESCE(Schedule.scheduleNumber,
 13          ProposalSchedule.scheduleNumber,
 14          0) as scheduleNumber,
 15          COALESCE(Schedule.terminationNumber,
 16          ProposalSchedule.terminationNumber,
 17          0) as terminationNumber,
 18          0 AS lineOfCreditNumber,
 19          0 AS securityIdentifier,
 20          0 AS caseIdSequenceNumber,
 21          MiscellaneousInformation.informationType,
 22          MiscellaneousInformation.detail,
 23          MiscellaneousInformation.valueAmount,
 24          MiscellaneousInformation.dateField,
 25          MiscellaneousInformation.valueCurrency,
 26          MiscellaneousInfoListValue.description,
 27          MiscellaneousInformation.ownerDiscriminator,
 28          MiscellaneousInformation.ownerEntityId
 29      FROM
 30          ALFATS.MiscellaneousInformation
 31      LEFT OUTER JOIN
 32          ALFATS.MiscellaneousInfoListValue
 33              ON (
 34                  (
 35                      MiscellaneousInformation.informationType = MiscellaneousInfoListValue.informationType
 36                  )
 37                  AND (
 38                      MiscellaneousInformation.detail = MiscellaneousInfoListValue.code
 39                  )
 40              )
 41      LEFT OUTER JOIN
 42          ALFATS.ScheduleEntity
 43              ON (
 44                  MiscellaneousInformation.ownerEntityId = ScheduleEntity.entityId
 45              )
 46      LEFT OUTER JOIN
 47          ALFATS.Schedule
 48              ON (
 49                  (
 50                      Schedule.id = ScheduleEntity.primaryScheduleId
 51                  )
 52                  AND (
 53                      Schedule.terminationNumber IN (
 54                          0,
 55                      1)))
 56                  LEFT OUTER JOIN
 57                      ALFATS.ProposalSchedule
 58                          ON (
 59                              MiscellaneousInformation.ownerEntityId = ProposalSchedule.entityId
 60                          )
 61                  LEFT OUTER JOIN
 62                      ALFATS.Agreement
 63                          ON (
 64                              (
 65                                  MiscellaneousInformation.ownerEntityId = Agreement.entityId
 66                              )
 67                              OR (
 68                                  Schedule.agreementNumber = Agreement.agreementNumber
 69                              )
 70                              OR (
 71                                  ProposalSchedule.agreementNumber = Agreement.agreementNumber
 72                              )
 73                          )
 74                  LEFT OUTER JOIN
 75                      ALFATS.ProposalAgreement
 76                          ON (
 77                              (
 78                                  MiscellaneousInformation.ownerEntityId = ProposalAgreement.entityId
 79                              )
 80                              OR (
 81                                  ProposalSchedule.agreementNumber = ProposalAgreement.agreementNumber
 82                              )
 83                          )
 84                  WHERE
 85                      (
 86                          (
 87                              (
 88                                  (
 89                                      MiscellaneousInformation.ownerDiscriminator = N'AGR'
 90                                  )
 91                                  OR (
 92                                      MiscellaneousInformation.ownerDiscriminator = N'SCH'
 93                                  )
 94                              )
 95                              AND (
 96                                  NOT (EXISTS (SELECT
 97                                      1
 98                                  FROM
 99                                      ALFATS.MiscellaneousInformation miscInfoInner
100                                  WHERE
101                                      ((miscInfoInner.ownerEntityId = MiscellaneousInformation.ownerEntityId)
102                                      AND (miscInfoInner.informationType = MiscellaneousInformation.informationType)
103                                      AND (miscInfoInner.miscInfoNo > MiscellaneousInformation.miscInfoNo))))
104                              )
105                          )                        AND (
106                              MOD(MiscellaneousInformation.miscInfoNo, 20) = 13
107                          )
108                      ) )
109  WHERE  OWNERDISCRIMINATOR = 'AGR'
110  AND agreementnumber IS not NULL
111  ;

56011 rows selected.

Elapsed: 00:00:23.06

Execution Plan
----------------------------------------------------------
Plan hash value: 794275964

--------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                 | Name                         | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                          |                              |   671 |   370K|   179K  (1)| 00:00:08 |
|*  1 |  FILTER                                   |                              |       |       |            |          |
|   2 |   MERGE JOIN OUTER                        |                              |   671 |   370K|   179K  (1)| 00:00:08 |
|   3 |    MERGE JOIN OUTER                       |                              |   335 |   173K|   177K  (1)| 00:00:07 |
|   4 |     NESTED LOOPS OUTER                    |                              |   112 | 55440 |   176K  (1)| 00:00:07 |
|   5 |      NESTED LOOPS OUTER                   |                              |   112 | 51296 |   176K  (1)| 00:00:07 |
|   6 |       NESTED LOOPS OUTER                  |                              |   112 | 42448 |   176K  (1)| 00:00:07 |
|   7 |        NESTED LOOPS OUTER                 |                              |   112 | 35280 |   176K  (1)| 00:00:07 |
|   8 |         NESTED LOOPS ANTI                 |                              |   112 | 23072 |   176K  (1)| 00:00:07 |
|*  9 |          TABLE ACCESS FULL                | MISCELLANEOUSINFORMATION     | 11178 |  1299K|   176K  (1)| 00:00:07 |
|* 10 |          INDEX RANGE SCAN                 | MISCELLANEOUSINFORMATION_L2  |    13M|  1132M|     0   (0)| 00:00:01 |
|  11 |         TABLE ACCESS BY INDEX ROWID       | PROPOSALSCHEDULE             |     1 |   109 |     1   (0)| 00:00:01 |
|* 12 |          INDEX UNIQUE SCAN                | PROPOSALSCHEDULE_N2          |     1 |       |     0   (0)| 00:00:01 |
|  13 |        TABLE ACCESS BY INDEX ROWID BATCHED| MISCELLANEOUSINFOLISTVALUE   |     1 |    64 |     1   (0)| 00:00:01 |
|* 14 |         INDEX RANGE SCAN                  | MISCELLANEOUSINFOLISTVALUE_1 |     1 |       |     0   (0)| 00:00:01 |
|  15 |       TABLE ACCESS BY INDEX ROWID         | SCHEDULEENTITY               |     1 |    79 |     1   (0)| 00:00:01 |
|* 16 |        INDEX UNIQUE SCAN                  | SCHEDULEENTITY_N2            |     1 |       |     0   (0)| 00:00:01 |
|* 17 |      TABLE ACCESS BY INDEX ROWID          | SCHEDULE                     |     1 |    37 |     1   (0)| 00:00:01 |
|* 18 |       INDEX UNIQUE SCAN                   | SCHEDULE_PK                  |     1 |       |     0   (0)| 00:00:01 |
|  19 |     BUFFER SORT                           |                              |     3 |   105 |   177K  (1)| 00:00:07 |
|  20 |      VIEW                                 | VW_LAT_B4E6951E              |     3 |   105 |     9   (0)| 00:00:01 |
|  21 |       VIEW                                | VW_ORE_A774FCAE              |     3 |   105 |     9   (0)| 00:00:01 |
|  22 |        UNION-ALL                          |                              |       |       |            |          |
|  23 |         TABLE ACCESS BY INDEX ROWID       | AGREEMENT                    |     1 |   104 |     3   (0)| 00:00:01 |
|* 24 |          INDEX UNIQUE SCAN                | AGREEMENT_N2                 |     1 |       |     2   (0)| 00:00:01 |
|* 25 |         TABLE ACCESS BY INDEX ROWID       | AGREEMENT                    |     1 |   104 |     3   (0)| 00:00:01 |
|* 26 |          INDEX UNIQUE SCAN                | AGREEMENT_NK                 |     1 |       |     2   (0)| 00:00:01 |
|* 27 |         TABLE ACCESS BY INDEX ROWID       | AGREEMENT                    |     1 |   104 |     3   (0)| 00:00:01 |
|* 28 |          INDEX UNIQUE SCAN                | AGREEMENT_NK                 |     1 |       |     2   (0)| 00:00:01 |
|  29 |    BUFFER SORT                            |                              |     2 |    70 |   179K  (1)| 00:00:08 |
|  30 |     VIEW                                  | VW_LAT_B4E6951E              |     2 |    70 |     5   (0)| 00:00:01 |
|  31 |      VIEW                                 | VW_ORE_E1C15686              |     2 |    70 |     5   (0)| 00:00:01 |
|  32 |       UNION-ALL                           |                              |       |       |            |          |
|  33 |        TABLE ACCESS BY INDEX ROWID        | PROPOSALAGREEMENT            |     1 |   104 |     3   (0)| 00:00:01 |
|* 34 |         INDEX UNIQUE SCAN                 | PROPOSALAGREEMENT_N2         |     1 |       |     2   (0)| 00:00:01 |
|* 35 |        TABLE ACCESS BY INDEX ROWID        | PROPOSALAGREEMENT            |     1 |   104 |     2   (0)| 00:00:01 |
|* 36 |         INDEX UNIQUE SCAN                 | PROPOSALAGREEMENT_NK         |     1 |       |     1   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(COALESCE("ITEM_2","ITEM_2") IS NOT NULL)
   9 - filter("MISCELLANEOUSINFORMATION"."OWNERDISCRIMINATOR"=U'AGR' AND
              MOD("MISCELLANEOUSINFORMATION"."MISCINFONO",20)=13)
  10 - access("MISCINFOINNER"."OWNERENTITYID"="MISCELLANEOUSINFORMATION"."OWNERENTITYID" AND
              "MISCINFOINNER"."INFORMATIONTYPE"="MISCELLANEOUSINFORMATION"."INFORMATIONTYPE" AND
              "MISCINFOINNER"."MISCINFONO">"MISCELLANEOUSINFORMATION"."MISCINFONO")
  12 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALSCHEDULE"."ENTITYID"(+))
  14 - access("MISCELLANEOUSINFORMATION"."INFORMATIONTYPE"="MISCELLANEOUSINFOLISTVALUE"."INFORMATIONTYPE"(+) AND
              "MISCELLANEOUSINFORMATION"."DETAIL"="MISCELLANEOUSINFOLISTVALUE"."CODE"(+))
  16 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="SCHEDULEENTITY"."ENTITYID"(+))
  17 - filter("SCHEDULE"."TERMINATIONNUMBER"(+)=0 OR "SCHEDULE"."TERMINATIONNUMBER"(+)=1)
  18 - access("SCHEDULE"."ID"(+)="SCHEDULEENTITY"."PRIMARYSCHEDULEID")
  24 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID")
  25 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  26 - access("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
  27 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="AGREEMENT"."ENTITYID"))
  28 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER")
       filter(LNNVL("SCHEDULE"."AGREEMENTNUMBER"="AGREEMENT"."AGREEMENTNUMBER"))
  34 - access("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID")
  35 - filter(LNNVL("MISCELLANEOUSINFORMATION"."OWNERENTITYID"="PROPOSALAGREEMENT"."ENTITYID"))
  36 - access("PROPOSALSCHEDULE"."AGREEMENTNUMBER"="PROPOSALAGREEMENT"."AGREEMENTNUMBER")


Statistics
----------------------------------------------------------
         24  recursive calls
          0  db block gets
    1487478  consistent gets
     648378  physical reads
        220  redo size
   11574128  bytes sent via SQL*Net to client
      41682  bytes received via SQL*Net from client
       3736  SQL*Net roundtrips to/from client
     112022  sorts (memory)
          0  sorts (disk)
      56011  rows processed

概括

尽管我无法确定导致此问题的错误,但我能够解决此问题。由于提供者无法更改查询,我为原始查询创建了一个基线,然后对其进行操作以将查询计划与更改会话一起使用。

于 2021-08-31T11:41:18.537 回答