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

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

SY.
...
Рейтинг: 0 / 0
01.03.2019, 07:44
    #39780745
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
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
01.03.2019, 16:20
    #39781108
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
По поводу "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
01.03.2019, 16:41
    #39781122
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
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
01.03.2019, 17:59
    #39781174
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
-2-,

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

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

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

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

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

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

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

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

SY.
...
Рейтинг: 0 / 0
02.03.2019, 19:53
    #39781389
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
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
02.03.2019, 21:03
    #39781397
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
SeaGateДля меня NON-EXISTENT ассоциируются с stub-объектами EBR.В 10g (наверняка, и ранее) каждый синоним на чужую схему в _dependencies дополнялся NON-EXISTENT-ом в своей.
...
Рейтинг: 0 / 0
02.03.2019, 22:51
    #39781417
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fbi валидность
SeaGate,

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


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