powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ora-904 (invalid identifier) in recursive queries during dynamic sampling
1 сообщений из 1, страница 1 из 1
Ora-904 (invalid identifier) in recursive queries during dynamic sampling
    #39363081
Вадиман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Кто-то может подсказать, как так получается, что в рекурсивных запросах Oracle 12.1.0.2.0 идет ссылка на колонку, которой нет?
Пример:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT /* DS_SVC */
       /*+ dynamic_sampling(0) no_sql_tune no_monitoring optimizer_features_enable(default) no_parallel result_cache(snapshot=3600) OPT_ESTIMATE(@"innerQuery", INDEX_SKIP_SCAN, "O#11", "I_OBJ2", ROWS=2.289375) OPT_ESTIMATE(@"innerQuery", TABLE, "O#11", ROWS=2.289375) OPT_ESTIMATE(@"innerQuery", INDEX_SKIP_SCAN, "O#11", "I_OBJ5", ROWS=2.289375) */
       SUM (C1)
FROM   (SELECT /*+ qb_name("innerQuery") NO_INDEX_FFS( "O#11")  */
               1 AS C1
        FROM   "SYS"."OBJ$" SAMPLE BLOCK (21.84, 8) SEED (1) "O#11", "SYS"."USER$" "U#16"
        WHERE  ("U"."NAME" = :B1) AND ("O"."NAME" = :B2) AND ("O"."OWNER#" = "U"."USER#") AND (BITAND ("O"."FLAGS", 128) = 0)) innerQuery


Здесь вообще таблицы "O" нет.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT /* DS_SVC */
       /*+ dynamic_sampling(0) no_sql_tune no_monitoring optimizer_features_enable(default) no_parallel result_cache(snapshot=3600) OPT_ESTIMATE(@"innerQuery", TABLE, "O#5", ROWS=2.289375) OPT_ESTIMATE(@"innerQuery", INDEX_SKIP_SCAN, "O#5", "I_OBJ2", ROWS=2.289375) OPT_ESTIMATE(@"innerQuery", INDEX_SKIP_SCAN, "O#5", "I_OBJ5", ROWS=2.289375) */
       SUM (C1)
FROM   (SELECT /*+ qb_name("innerQuery") NO_INDEX_FFS( "O#5")  */
               1 AS C1
        FROM   "SYS"."OBJ$" SAMPLE BLOCK (21.84, 8) SEED (1) "O#5", "SYS"."USER$" "U#10"
        WHERE  ("U"."NAME" = :B1) AND ("O"."NAME" = :B2) AND ("O"."OWNER#" = "U"."USER#") AND (BITAND ("O"."FLAGS", 128) = 0)) innerQuery


То же самое.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
SELECT /* DS_SVC */
       /*+ dynamic_sampling(0) no_sql_tune no_monitoring optimizer_features_enable(default) no_parallel result_cache(snapshot=3600) OPT_ESTIMATE(@"innerQuery", TABLE, "O#4", ROWS=9.1575) */
       SUM (C1)
FROM   (SELECT /*+ qb_name("innerQuery") NO_INDEX_FFS( "O#4")  */
               1 AS C1
        FROM   ( (SELECT DECODE (BITAND ("T"."PROPERTY", 8192), 8192, 'NESTED TABLE', 'TABLE') "DECODE(BITAND(T.PROPERTY,8192)",
                         2 "2",
                         5 "5",
                         "T"."OBJ#" "OBJ#",
                         "T"."FILE#" "FILE#",
                         "T"."BLOCK#" "BLOCK#",
                         "T"."TS#" "TS#"
                  FROM   "SYS"."TAB$" "T"
                  WHERE      BITAND ("T"."PROPERTY", 1024) = 0
                         AND (   DECODE (BITAND ("T"."PROPERTY", 8192), 8192, 'NESTED TABLE', 'TABLE') = 'LOBINDEX'
                              OR DECODE (BITAND ("T"."PROPERTY", 8192), 8192, 'NESTED TABLE', 'TABLE') = 'LOBSEGMENT'
                              OR DECODE (BITAND ("T"."PROPERTY", 8192), 8192, 'NESTED TABLE', 'TABLE') = 'LOB PARTITION'))
                UNION ALL
                (SELECT 'TABLE PARTITION' "'TABLEPARTITION'",
                        19 "19",
                        5 "5",
                        "TP"."OBJ#" "OBJ#",
                        "TP"."FILE#" "FILE#",
                        "TP"."BLOCK#" "BLOCK#",
                        "TP"."TS#" "TS#"
                 FROM   "SYS"."TABPART$" "TP"
                 WHERE  NULL IS NOT NULL)
                UNION ALL
                (SELECT 'CLUSTER' "'CLUSTER'",
                        3 "3",
                        5 "5",
                        "C"."OBJ#" "OBJ#",
                        "C"."FILE#" "FILE#",
                        "C"."BLOCK#" "BLOCK#",
                        "C"."TS#" "TS#"
                 FROM   "SYS"."CLU$" "C"
                 WHERE  NULL IS NOT NULL)
                UNION ALL
                (SELECT DECODE ("I"."TYPE#", 8, 'LOBINDEX', 'INDEX') "DECODE(I.TYPE#,8,'LOBINDEX','I",
                        1 "1",
                        6 "6",
                        "I"."OBJ#" "OBJ#",
                        "I"."FILE#" "FILE#",
                        "I"."BLOCK#" "BLOCK#",
                        "I"."TS#" "TS#"
                 FROM   "SYS"."IND$" "I"
                 WHERE      (   "I"."TYPE#" = 1
                             OR "I"."TYPE#" = 2
                             OR "I"."TYPE#" = 3
                             OR "I"."TYPE#" = 4
                             OR "I"."TYPE#" = 6
                             OR "I"."TYPE#" = 7
                             OR "I"."TYPE#" = 8
                             OR "I"."TYPE#" = 9)
                        AND (   DECODE ("I"."TYPE#", 8, 'LOBINDEX', 'INDEX') = 'LOBINDEX'
                             OR DECODE ("I"."TYPE#", 8, 'LOBINDEX', 'INDEX') = 'LOBSEGMENT'
                             OR DECODE ("I"."TYPE#", 8, 'LOBINDEX', 'INDEX') = 'LOB PARTITION'))
                UNION ALL
                (SELECT 'INDEX PARTITION' "'INDEXPARTITION'",
                        20 "20",
                        6 "6",
                        "IP"."OBJ#" "OBJ#",
                        "IP"."FILE#" "FILE#",
                        "IP"."BLOCK#" "BLOCK#",
                        "IP"."TS#" "TS#"
                 FROM   "SYS"."INDPART$" "IP"
                 WHERE  NULL IS NOT NULL)
                UNION ALL
                (SELECT 'LOBSEGMENT' "'LOBSEGMENT'",
                        21 "21",
                        8 "8",
                        "L"."LOBJ#" "LOBJ#",
                        "L"."FILE#" "FILE#",
                        "L"."BLOCK#" "BLOCK#",
                        "L"."TS#" "TS#"
                 FROM   "SYS"."LOB$" "L"
                 WHERE  BITAND ("L"."PROPERTY", 64) = 0 OR BITAND ("L"."PROPERTY", 128) = 128)
                UNION ALL
                (SELECT 'TABLE SUBPARTITION' "'TABLESUBPARTITION'",
                        34 "34",
                        5 "5",
                        "TSP"."OBJ#" "OBJ#",
                        "TSP"."FILE#" "FILE#",
                        "TSP"."BLOCK#" "BLOCK#",
                        "TSP"."TS#" "TS#"
                 FROM   "SYS"."TABSUBPART$" "TSP"
                 WHERE  NULL IS NOT NULL)
                UNION ALL
                (SELECT 'INDEX SUBPARTITION' "'INDEXSUBPARTITION'",
                        35 "35",
                        6 "6",
                        "ISP"."OBJ#" "OBJ#",
                        "ISP"."FILE#" "FILE#",
                        "ISP"."BLOCK#" "BLOCK#",
                        "ISP"."TS#" "TS#"
                 FROM   "SYS"."INDSUBPART$" "ISP"
                 WHERE  NULL IS NOT NULL)
                UNION ALL
                (SELECT DECODE ("LF"."FRAGTYPE$", 'P', 'LOB PARTITION', 'LOB SUBPARTITION') "DECODE(LF.FRAGTYPE$,'P','LOBPA",
                        DECODE ("LF"."FRAGTYPE$", 'P', 40, 41) "DECODE(LF.FRAGTYPE$,'P',40,41)",
                        8 "8",
                        "LF"."FRAGOBJ#" "FRAGOBJ#",
                        "LF"."FILE#" "FILE#",
                        "LF"."BLOCK#" "BLOCK#",
                        "LF"."TS#" "TS#"
                 FROM   "SYS"."LOBFRAG$" "LF"
                 WHERE     DECODE ("LF"."FRAGTYPE$", 'P', 'LOB PARTITION', 'LOB SUBPARTITION') = 'LOBINDEX'
                        OR DECODE ("LF"."FRAGTYPE$", 'P', 'LOB PARTITION', 'LOB SUBPARTITION') = 'LOBSEGMENT'
                        OR DECODE ("LF"."FRAGTYPE$", 'P', 'LOB PARTITION', 'LOB SUBPARTITION') = 'LOB PARTITION')) "SO#2",
               "SYS"."OBJ$" SAMPLE BLOCK (21.84, 8) SEED (1) "O#4"
        WHERE      ("O#4"."NAME" = 'SYS_IL0000297239C00007$$' OR "O#4"."NAME" = 'SYS_LOB0000297239C00007$$')
               AND ("O#4"."OBJ#" = "SO#2"."OBJECT_ID")
               AND ("O#4"."TYPE#" = "SO#2"."OBJECT_TYPE_ID")) innerQuery


А здесь проблема с колонками SO#2.object_id и SO#2.object_type_id
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ora-904 (invalid identifier) in recursive queries during dynamic sampling
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]