powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Fbi валидность
17 сообщений из 17, страница 1 из 1
Fbi валидность
    #39780400
Swsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно узнать реальную валидность функционального индекса?
Сейчас при изменении исходной функции funcidx_status не меняется, сравнить текущую сигнатуру с сигнатурой на момент создания индекса вручную нельзя.
Есть ли выход?
...
Рейтинг: 0 / 0
Fbi валидность
    #39780429
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swsovсравнить текущую сигнатуру с сигнатурой на момент создания индекса вручную нельзя.Сравнивай не вручную.
С другой стороны, в чем смысл проверять "сигнатуру"? Можно оптимизировать код с сохранением результата, можно изменить логику результата и индекс перестанет возвращать данные, хотя сигнатура вызова не изменилась.
...
Рейтинг: 0 / 0
Fbi валидность
    #39780437
Swsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

Если изменить логику функции, то индекс останется валидным и будет возвращать старые неверные данные.
...
Рейтинг: 0 / 0
Fbi валидность
    #39780479
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle тут знатно накосячил. Он не связывает ф-цию как обьект с FBI индексом напрямую. Посему пока индекс не перестроишь будет лажа. Попробуй через invisible calculated column.

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39780745
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYOracle тут знатно накосячил.Инвалидировать индекс на каждый чих было бы хуже.
Мне помнится, что еще в девятке функцию нельзя было менять, пока не сделаешь индекс disable. Индекс мог становился disable неявно, если функция инвалидировалась или отменялся грант на функцию. Документация по прежнему (19c) утверждает:альтер индексENABLE applies only to a function-based index that has been disabled, either by an ALTER INDEX ... DISABLE statement, or because a user-defined function used by the index was dropped or replaced .
...
Рейтинг: 0 / 0
Fbi валидность
    #39781108
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу "Oracle тут знатно накосячил":

Код: 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.
SQL> CREATE OR REPLACE
  2    FUNCTION GET_STR_LEN(
  3                         P_STR VARCHAR2
  4                        )
  5      RETURN NUMBER
  6      DETERMINISTIC
  7      IS
  8      BEGIN
  9          RETURN LENGTH(P_STR);
 10  END;
 11  /

Function created.

SQL> CREATE INDEX DEPT_IDX1
  2    ON DEPT(
  3            GET_STR_LEN(DNAME)
  4           )
  5  /

Index created.

SQL> DROP INDEX DEPT_IDX1
  2  /

Index dropped.

SQL> DROP FUNCTION GET_STR_LEN
  2  /

Function dropped.

SQL> SELECT  COUNT(*)
  2    FROM  USER_OBJECTS
  3    WHERE OBJECT_NAME = 'GET_STR_LEN'
  4  /

  COUNT(*)
----------
         0

SQL> SELECT  COUNT(*)
  2    FROM  SYS.OBJ$
  3    WHERE NAME = 'GET_STR_LEN'
  4  /

  COUNT(*)
----------
         1

SQL> 



Т.e. Oracle решил "что написано пером..."

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781122
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYOracle решил "что написано пером..." Объект меняет тип с 8 на 10, который в dba_objects отсутствует, но есть в dba_objects_ae
Код: plsql
1.
2.
3.
4.
5.
6.
      decode(o.type#, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
                      4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE',
                      7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
                      10, 'NON-EXISTENT',
                      11, 'PACKAGE BODY', 12, 'TRIGGER',
                      13, 'TYPE', 14, 'TYPE BODY',
...
Рейтинг: 0 / 0
Fbi валидность
    #39781174
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Ну и с какого пeрепугу обьект вообще существует? Ведь все по-фэншую. Вначале удалил индекс и только потом ф-цию. Явный косяк.

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781194
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНу и с какого пeрепугу обьект вообще существует?Не соглашусь! non-existent как на английский переводится?
...
Рейтинг: 0 / 0
Fbi валидность
    #39781217
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot -2-]SYНе соглашусь! non-existent как на английский переводится?

Я не о том. NON-EXISTENT нужен когда, например, ф-цию удалили при живом индексе. А тут индекс удалили а затем ф-цию. Я прекрасно понимаю почему тут NON-EXISTENT - ORACLE просто не захотел, по какой-то причине, использовать метод подсчета исользований (как с NOT NULL). Так-что при использовaнии ф-ции в FBI выставляется флажок а нe используется инкремент (и декремент при удалении индекса). В результате при удалении ф-ции есть флажок - в NON_EXISTENT независимо используется ф-ция в каких-либо FBI или уже нет.

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781218
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, интересно потянет-ли exp/expdp за собой этот мусор?

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781221
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SY,

non-existent объекты обычно вычищаются при рестарте базы
...
Рейтинг: 0 / 0
Fbi валидность
    #39781277
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderSY,

non-existent объекты обычно вычищаются при рестарте базы

Не в этом случае. Флажок-то говорит хоть ф-ция и NON_EXISTENT но используeтся в FBI так-что "трогать ее не моги за ее малый рост, малый рост".

SY.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781389
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНе в этом случае. Флажок-то говорит хоть ф-ция и NON_EXISTENT но используeтся в FBI так-что "трогать ее не моги за ее малый рост, малый рост".
Какой флажок? NON-EXISTENT не связаны с FBI.
Код: 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.
SQL> select count(*) from obj$ where name = 'MY_TEST_FUNC';

  COUNT(*)
----------
         0

SQL>
SQL> create or replace function my_test_func
  2  return int
  3  is
  4  begin
  5    null;
  6  end;
  7  /

Function created.

SQL>
SQL> select count(*) from obj$ where name = 'MY_TEST_FUNC';

  COUNT(*)
----------
         1

SQL>
SQL> drop function my_test_func;

Function dropped.

SQL>
SQL> select type# from obj$ where name = 'MY_TEST_FUNC';

     TYPE#
----------
        10


xtendernon-existent объекты обычно вычищаются при рестарте базы
Самое древнее, что есть под рукой, это 12.1. Очистка NON-EXISTENT выполняется с помощью CLEANUP% jobs. Надо потыкать 11.2, где ввели EBR, как там, но я бы предположил, что там этим занимался SMON. Для меня NON-EXISTENT ассоциируются с stub-объектами EBR. Быстрый поиск ведет на: whitepaper от Bryn Llewellyn , где, в том числе, про drop и NON-EXISTENT кое-что есть.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> select type# from obj$ where name = 'MY_TEST_FUNC';

     TYPE#
----------
        10

SQL>
SQL> exec dbms_scheduler.run_job( 'CLEANUP_NON_EXIST_OBJ')

PL/SQL procedure successfully completed.

SQL>
SQL> select type# from obj$ where name = 'MY_TEST_FUNC';

no rows selected
...
Рейтинг: 0 / 0
Fbi валидность
    #39781397
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGateДля меня NON-EXISTENT ассоциируются с stub-объектами EBR.В 10g (наверняка, и ранее) каждый синоним на чужую схему в _dependencies дополнялся NON-EXISTENT-ом в своей.
...
Рейтинг: 0 / 0
Fbi валидность
    #39781417
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SeaGate,

Я просто помню, что non-existent объекты созданные collect в древних версиях вычищались при ребуте
...
Рейтинг: 0 / 0
Fbi валидность
    #39781419
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Нагуглил в старом треде от 2004года: Because unused NON-EXISTANT objects are cleaned up by SMON every 12 hours.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Fbi валидность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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