20.09.2018 10:05
OlegON
 
Finding Name : Dictionary Inconsistency
Finding ID : 460702
Type : FAILURE
Status : CLOSED
Priority : CRITICAL
Message : SQL dictionary health check: objauth$.grantee# fk 88 on object OBJAUTH$ failed
Message : Damaged rowid is AAAAA9AABAAAQPIAAv - description: Object IBS.VW_RPT_RKO_CARD2_PV is referenced

В моем случае ошибка была связана с тем, что в objauth$ есть записи о каких-то юзерах, которых уже давно дропнули. Не спрашивайте как это получилось. Т.е. есть объект, в objauth$ указано, что есть гранты на SELECT для Иванова и некоего юзера с ID 73. Юзера такого нет, т.е. в user$ такого ID нет. Явно дропнули. В dba_tab_privs только Иванов со своим SELECT. У меня достаточно много таких записей было, правда только с одним несуществующим GRANTEE#.

Сделал
SQL код:
select from objauthwhere grantee# not in (select user# from user$) 
Перекрестился и удалил отсутствующее
SQL код:
delete from objauthwhere grantee# not in (select user# from user$) 
ошибка пропала, но не сразу. Видимо, либо flush shared_pool надо сделать, либо базу перезапустить.
Часовой пояс GMT +3, время: 22:17.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.